小虾米资讯

AD1
当前位置:网站首页 / android / 正文

android:手游优化那点破事

2022-04-06 08:50:27 / 我要吐槽 查看是否已被百度收录 查看是否已被谷歌收录 查看是否已被搜狗收录 查看是否已被360收录
AD2
最近乘着3月3加清明的5天假期忙里偷闲看了不少关于手游引擎优化的技术向演讲,搞到了不少的干货,趁着假期还没有结束,来和大家分享一下。

1.鹅厂的四大手游工作室鹅厂的四大手游工作室是天美、北极光、魔方、光子。这四个工作室对手游的优化分成了三个明显的层次。最优秀的是北极光,北极光自己开发过QuicksilverX,用在了无限法则和天涯明月刀端游上,北极光几乎把半个unity底层给重写了,这个北极光在网上的炫技也不少,大家想看的可以看这一篇,《天涯明月刀手游》开发历程:让技术成为创新的驱动力。写得很全面了,里面包括前几天酷安放出的unity线程绑定优化都有,像GPU Driven这种15年才被广泛提出的优化全都安排得妥妥当当,这才是天刀手游能直接上1080p的底气。次一级的是天美和魔方,这两个家伙做过一定的引擎优化,但在TGDC2021的演讲上他们两个工作室合作的GPU Driven实验性水体DEMO居然是业余开发的,还大言不惭的说移动端适配GPU Driven困难,如果要做CDLOD要回滚到CPU去算,简直醉人,这两个家伙是不知道隔壁北极光在一年前的TGDC2020说了啥吗?最次的就是光子了,别说炫技了,连在TGDC登台的勇气都没有,现实里PUBGM适配90帧的功耗天美的CODM跑120帧,和EA合作的ApexM连原画60帧都没有,分辨率居然是480p,白瞎了这么好的一个游戏。

2.关于API适配的那点事鹅厂引擎核心技术组负责人魏楠讲了一些比较内涵的东西,比如“在带宽层面针对不同的GPU,比如ARM的Mali、高通的Adreno,充分利用这些硬件的特性,我们可以达到25%-30%的带宽节省。有了这样的节省,我们在一些手机上的测试结果,有2℃-4℃的降温,极大提升了玩家体验”、“因为本身前面提到诸多复杂性。所以如果要解决,需要有一套非常复杂的方案,这会进而极大提升整体实现的复杂度。所以就会带来整体引擎侧的维护成本、复杂度提升,这是大家需要非常注意的”、“但是有一个最大的问题,就是当前市场上能够支持的硬件非常有限,同时Driver层面的支持也非常薄弱。因为厂商很多年精力都放在OpenGLES上,Vulkan只是在近几年来……近一两年吧,才逐渐转换成一个重点”、“比如我们核心的,针对功耗方面的优化,在Arm这边,Mali的GPU上,和在高通的Adreno GPU上就需要使用到不同的扩展。这样就会明显提升整体实现的复杂度和维护成本。”、“最后在Metal这边也有OpenGLES的优势。目前支持各方面还是比较好的,主要是因为有厂商来做这个,所以相对来说是最容易支持的一套API。”我翻译一下,就是,我引擎优化就这样差不多得了,你们厂商都给我放聪明点,要么像苹果一样出厂就给我适配好,要么你加钱。原文是TGDC2020的,大家可以自己去看。

3.《幻塔》其实目标平台是PC虚幻的会议里幻塔也做了一把炫技,结果他上来就是一句幻塔的目标平台其实是PC,我差点一口盐汽水喷出来。按照完美的说法,就是他们在弄这玩意的时候就是按照PC的规格去处理的,在通过一步步减法优化下来,其中比较精髓的还是他们相对于原生虚幻4的改动。然后测试机低端机代表kirin710,高端机代表小米10。最牛叉的可能就是把FSR搬到移动端来了,可以,这很黄很暴力。

《原神》优化都是主机的,移动端不配我万万没想到《原神》开发者居然在unity技术大会上炫技了,“作为《原神》为主机开发的功能,我们大量使用了compute shader,compute shader有很多很好的特性,而且在支持Async compute管线的平台上,我们还能够进一步隐藏开销。”、“首先在CPU端,我们做了一个shadow cache,8级cascades的前4级我们每帧都更新,后面4级是采用轮流更新的方式,确保每8帧所有的cascades都能至少更新一次。每一帧的话,我们只更新5级cascades。”这一样样的,密密麻麻地写满了“你手机端不配”几个大字。

5.《原神》可以强开vulkan,但似乎没什么卵用方法见https://bbs.mihoyo.com/ys/article/4095315,自行折腾。

其实都没减少开销。。真正要优化游戏性能游戏厂商首先得查自己的数据结构我就不信他们每个数据结构都是最优

不懂就问,iOS性能性能真的比安卓有优势吗,毕竟安卓应用层很多用Java写的,运行依赖于虚拟机

总结就是arm和高通的锅,驱动写的太懒,外加安卓使用了能效不佳的openglesAPI,双debuff造就了手机即使有着高dpi的天然优势,可以免去抗锯齿的额外开销的状态下依旧性能难以释放。理论上目前手机性能基本追平英伟达gtx650以上的性能。但是如果真的把桌面游戏拿来,开启桌面游戏特效开启抗锯齿,以全分辨率运行,估计全是ppt。看看windows系统的DX图形接口API,从DX7以来,基本每次更新都是一大波新特效,降低硬件指令开销,到现在的DX12系统层面的优化基本做到极致。剩下的就是显卡厂家的驱动优化。反观安卓这边,谷歌高通ARM基本可以是集体摆烂,优化?不存在的,用的OPENGLES3.2都多少年了还没见更新。厂家驱动更是出厂即永久不更新。

其实高通和arm不算懒了,高通前段时间还支持了vsr,现在还在内部测试中过段时间下放到oem,mali这边确实已经支持了最新的vk1.3(仅限开发者),要知道amd也是刚支持1.3不久,各种最新基础拓展都支持,目前vk难以推广的原因还是安卓碎片化程度太高、低端机型不支持高版本vk、oem魔改的gpu驱动vk不完善等等,但谷歌也整理了一份目前市面上大部分移动设备通用的vk拓展列表,也就是国内这些开发者不愿意按照标准开发、甩锅碎片化罢了,真想支持vk并不是做不到的事,无非就是优化花钱人家不愿意花这个钱而已。另外回复一下楼上楼中楼,给主机做优化是因为主机cpu性能太垃圾(点名批评ps4和ns),不优化根本跑不动,手机端这边能勉强跑动人家自然就不管了,毕竟优化都要花钱,除非塞钱优化不然谁管你。

GLES3.2不更新你得问khronos啊?这和高通arm这些又没关系,人khronos现在就主推vulkan,OPENGL也好多年没更新了,为的就是解决碎片化问题以及更方便全平台开发,要不是各种科研和专业、金融领域舍弃不了OPENGL,人早就不维护了,而且GLES3.2功能也非常够了,从3.1开始draw call就降低了很多,也支持了延迟渲染和ASTC压缩等等技术,GLES只要用得好不比vulkan差多少,无非是碎片化问题同样严重、游戏开发者不愿意高度优化罢了,与其甩锅给高通arm,不如甩锅给游戏开发者,确实他们有优化能力,但是他们也向市场看齐,非要兼容低端设备你能有什么办法?

Powered By © 小虾米资讯 2015

(本站部分文章来源于网络或网友爆料,不代表本站观点,如有侵权请联系及时删除 )