dots正在改写游戏开发的性能天花板

tmyb
广告

如果你最近关注游戏开发圈,一定对dots这个词不陌生,六年前它还是Unity官方画的一张大饼,放在实验室里只有少数核心开发者能提前尝鲜,还满是bug没人敢用在正式项目里,但就在2024年10月Unity 6正式版发布之后,dots终于正式转正,成为了所有Unity开发者都能直接用的稳定功能,这个看起来不起眼的技术更新,其实正在悄悄改变整个游戏行业的规则,不管是开发者还是普通玩家,都会很快感受到它带来的变化。

dots正在改写游戏开发的性能天花板

拖了六年才转正,dots到底是什么?

很多人第一次看到dots,都会以为是打错了的DOTA,毕竟那个经典MOBA游戏的知名度太高了,但此dots非彼DOTA,它全称是Data-Oriented Tech Stack,翻译过来是面向数据技术栈,是Unity官方花了近十年研发,专门解决游戏性能瓶颈的一套开发技术。

我去年底在广州参加一场独立开发者沙龙的时候,就亲眼见过dots的魔力,当时认识了一个叫阿凯的独立开发者,今年32岁,原来在网易做开放世界项目的客户端开发,干了五年辞了职,想自己做一款复古风格的开放世界生存建造游戏《机械荒野》,一开始他按照传统的Unity面向对象开发方式写代码,做了个1平方公里的测试地图,往里面放了200个可动的机械单位、5000棵可砍伐的树木和1000块可采集的矿石,测试帧率的时候直接傻了:PC端开1080P分辨率,帧率直接掉到22帧,换成移动端测试,直接卡成PPT,只有不到10帧,根本没法玩。

阿凯那时候愁得整宿整宿睡不着,要么砍内容,把地图缩到只有原来的四分之一,要么把大部分可交互内容改成装饰,那做出来的开放世界还有什么意思?想过转用虚幻引擎开发,可自己做了一年多的项目,所有资源和代码都是基于Unity写的,转引擎等于全部推倒重来,不仅时间成本扛不住,钱也烧不起,就在他准备砍项目的时候,一个做技术的朋友推荐他试试当时还在预览版的dots。

抱着死马当活马医的心态,阿凯花了三个月重构了核心逻辑,把原来的面向对象框架换成了dots的面向数据架构,改完之后再测试,结果让他直接跳了起来:同样的配置,地图扩大到8平方公里,机械单位加到2000个,可砍伐树木加到5万棵,可采集矿石加到1万块,PC端1080P分辨率下帧率稳定在65帧以上,连他那台用了三年的旧安卓旗舰手机,都能稳定跑到42帧,性能直接提升了十倍还多,原来想都不敢想的内容量,现在轻轻松松装下,上个月我和他聊天,他说游戏已经拿到了版号,正在做最后的打磨,今年年底就会上线Steam,还准备发移动端,要是没有dots,这个项目早就躺进回收站了。

这就是dots最直观的魔力,它解决的是现在游戏开发最头疼的问题:性能瓶颈。

为什么dots能把性能提升这么多?

要讲明白dots为什么这么厉害,得先说说传统游戏开发的痛点,我们过去做游戏,用的都是面向对象的开发思路,简单说就是每个游戏里的东西,比如一个NPC、一棵树、一个敌人,都是一个独立的“对象”,这个对象把自己的所有属性(比如位置、血量、大小)和方法(比如移动、攻击、被砍)都打包放在一起,这种开发方式写起来简单,好理解,方便分工,但缺点也很明显:对CPU不友好。

CPU运行的时候,会把最近要用的数据存在高速缓存里,读缓存的速度比读内存快几百倍,如果数据都是一块一块放好的,CPU一次就能读一大堆,效率很高,但面向对象的方式,每个对象的数据都是分散开的,比如你要计算所有敌人的移动,就得一个对象一个对象跳着找位置数据,跳来跳去就会把缓存弄脏,大部分时间都浪费在等待数据加载上了,根本跑不快,尤其是同屏有几千上万个对象的时候,性能下降特别明显。

而dots走的是完全相反的思路:面向数据,它把所有同类型的数据都放在一起,比如所有敌人的X坐标放一个数组,所有敌人的Y坐标放一个数组,所有敌人的血量放一个数组,计算移动的时候,CPU一口气就能把所有坐标数据都读进缓存,直接批量计算,速度快了好几倍,不仅如此,dots天生就支持多线程并行计算,现在的CPU都是8核16核,传统开发方式大部分时候只用了一两个核,剩下的核都在摸鱼,dots能把计算任务拆分给所有核心一起干,性能直接拉满。

这两年游戏圈的趋势是什么?开放世界越来越大,同屏互动的内容越来越多,玩家想要的是走到哪都能砍树、能搬石头、能和所有NPC互动,而不是只能看的背景墙,但原来的技术框架下,性能早就顶到天花板了,想要做1000个同屏AI,就得花几百万请专门的优化团队调性能,小团队根本玩不起,只有大厂能做开放世界,小团队只能做做小体量的独立游戏。

现在dots把这个门槛打破了,就在Unity 6正式发布之后,国内不少大厂都出来分享了自己的试用经验,莉莉丝的开放世界新项目测试数据显示,用了dots之后,同场景可承载的AI NPC数量提升了4倍,同一帧内可处理的可交互物件数量提升了6倍,整体性能消耗反而下降了近40%,米哈游、腾讯的不少在研开放世界项目,也都在逐步把核心逻辑迁移到dots上,接下来两三年上线的大厂新作,我们就能感受到dots带来的变化。

dots不是银弹,但它带来了新的可能

我这里不是说dots解决了所有问题,它现在刚转正,还有不少局限性,比如它对老项目的迁移不友好,原来的项目用传统框架写的,想要转dots,几乎等于重构核心代码,大部分成熟项目不会轻易折腾,还有大量第三方插件暂时还不支持dots,很多开发者想用dots,很多常用功能都得自己写,要踩不少坑,阿凯当初改项目的时候,就因为一个常用的寻路插件不支持dots,自己重写了半个月的寻路逻辑,掉了不少头发。

但这些问题都是发展中的问题,随着dots正式转正,越来越多的开发者开始用,越来越多的第三方插件会适配dots,Unity官方也在不断完善工具链,这些坑会慢慢被填平,用不了两三年,dots就会变成Unity开发的主流选择。

那dots普及,对我们普通玩家和开发者来说,到底意味着什么?

先说说开发者,尤其是占行业大多数的中小团队和独立开发者,过去很多独立开发者都有一个开放世界梦,但一想到性能优化就望而却步,做小体量游戏吧,卷不过,做大的吧,性能顶不住,dots相当于直接把原来大厂才有的性能工具,免费送到了每个开发者手里,原来一个团队要做开放世界,得有专门的优化工程师,花大半年调性能,现在dots把大部分优化工作都做了,小团队甚至一个人就能hold住几十平方公里的可交互开放世界,开发成本直接降了一大半。

这意味着什么?意味着接下来我们会看到越来越多小团队做的创新开放世界游戏,不再是只有大厂能做开放世界,不再是所有开放世界都是换皮的“看看风景刷副本”,小团队可以做各种奇奇怪怪的创新,比如一万个小人同时打架的策略游戏,整个星球都可以挖的生存游戏,上千个NPC一起生活的模拟游戏,这些原来因为性能做不出来的玩法,现在都能做了。

我们得到的好处就更直接了,第一,玩游戏的配置门槛更低了,原来你得买个几千块的旗舰手机才能跑满开放世界,现在中端手机就能玩得很流畅,很多对配置不友好的老电脑,也能跑新游戏了,第二,游戏内容会变得更丰富更好玩,原来厂商为了性能,不得不砍掉大量可交互内容,开放世界变成了“背景墙世界”,现在有了dots,厂商可以放开手脚做内容,你看到的每一棵树都能砍,每一块石头都能搬,每一个NPC都能互动,开放世界才真的配得上“开放”两个字。

举个例子,前两年爆火的《幻兽帕鲁》,最多同屏也就一百多只帕鲁,要是用dots做,以后同屏一千只帕鲁一起打架、一起建设都不卡,那个爽快感直接提升了好几个档次,再比如很多玩家喜欢的大规模战场游戏,原来最多一百人对战,以后做上千人同屏对战,性能都不是问题,玩法就能做得更刺激。

技术民主化,永远是行业发展的动力

我做游戏自媒体这么多年,最大的感受就是,每次游戏行业的大发展,都是技术民主化带来的,十几年前,做3D游戏只有大厂能做,因为要买很贵的引擎授权,小团队根本买不起,直到Unity出来,做3D游戏的门槛直接降到了零,一波独立开发者起来了,做出了《戴森球计划》《月圆之夜》《鬼谷八荒》这些爆款,改变了整个行业的格局。

现在dots带来的,就是下一波技术民主化,原来性能是大厂堆钱堆出来的,现在小团队也能拿到顶级的性能,原来只有大厂能玩的品类,现在小团队也能做了,这就给了很多创新者机会。

很多人现在都说游戏行业不行了,大厂垄断,流量都被头部拿走了,小团队根本没机会,我从来不这么看,每次技术变革,都会打破原来的垄断格局,带来新的机会,当年端游时代大家都说大厂垄断,结果手游起来了,一堆新公司起来了;后来手游流量都被大厂拿走了,结果Steam和独立游戏起来了,一堆小团队做出了爆款;现在开放世界被大厂垄断了,dots来了,下一个爆款说不定就出在哪个几个人的小团队里。

阿凯跟我说过一句话,我印象特别深,他说原来我觉得做开放世界是大厂的权力,我一个人想都不敢想,现在dots告诉我,我也能做,我也能做出让玩家喜欢的开放世界,这句话其实代表了很多中小开发者的心声,技术的意义从来不是给大厂锦上添花,而是给普通人更多实现梦想的机会。

我自己作为一个玩家,也特别期待dots带来的变化,我玩了这么多年开放世界,早就腻了那种“走走看看,打卡任务”的开放世界,我想要真的能改变、真的能互动、真的能让我自由发挥的世界,dots能给开发者提供做这个世界的能力,我们就能玩到这样的游戏。

dots从一个实验室里的黑科技,变成了每个开发者都能用的工具,走了整整六年,六年磨一剑,现在终于要开始改变行业了,它不是万能的神药,但它确实打开了一扇新的大门,让更多人有机会做出更好的游戏,未来几年,我们一定会看到很多带着dots标签的好游戏出现在我们面前,不管你是开发者还是玩家,都可以好好期待一下。