侑虎科技CTO张强:游戏团队如何制定设备分档策略
本次分享选自UWA DAY 2022 “UWA性能保障体系进一步拓展”议题,来自侑虎科技CTO张强的分享。本文主要讲解游戏团队非常关心的设备分档问题,分享如何根据不同设备的算力来针对自己的项目进行合理、科学的设备分档和质量分级。该文章特别适合游戏初期进行项目质量规划和标准制定的大中型团队,以及正在研发周期过程中的中小型游戏研发团队。后者由于人力物力问题,并没有充足的资源来将质量标准前期就定制完备,所以需要在整个项目研发阶段过程中对质量标准都不断进行迭代和调优。希望本文可以帮助到上述团队更加方便地达成目标。
在游戏立项之初,团队经常被一个问题困扰,到底我的项目该采用什么设备分档的策略?
UWA表示,设备分档比较常见的方式是参照某些设备上能够获取到的部分字段,包括Device Model、SOC、GPU、CPU 和内存等。目前更常用的还是针对 GPU 的型号,例如:Mali,Adreno 以及 PowerVR ,可以通过一些固定的模式匹配出某些隐藏的字段,便于我们综合评估它的算力。
也有些额外的情况,例如某些设备虽然配置比较好,但不在已知配置列表中,我们也可以通过特殊的白名单做一些调整;还有某些特殊的设备,可能它的GPU算力评估下来还不错,但它的内存非常小或者它的CPU频率非常低,这就需要我们根据内存和CPU再去做分档的调整。
通过以上的思路可以相对全面地评估一个设备所在的算力档位。当完成设备的分档之后,我们就可以进一步进行性能和画质等方面的平衡设计。
画质分级
在游戏普遍追求高品质的当下,适当的画质分级就显得非常有必要。在和众多团队合作过程中,UWA摸索总结了以下维度,例如帧率、屏幕分辨率、大面积的不透明Shader、大面积特效使用的Shader,以及整体的Overdraw和渲染面片数等,这些都是在做画质分级的时候,需要考量的。
场景分级
特效分档
另外,在后处理上,像Bloom、DoF和AA的使用,都可以针对高、中、低设备去做不同的设定,从而控制GPU端的压力。
内存分级
内存部分我们也建议针对性地做一些策略。对于资源内存,我们在不同设备上提供了阈值推荐,如下表;而Mono和Lua,因为其本身是逻辑层面的内存占用,所以通常是一个固定的数值。
内存分级通常会有一些比较快速的方式:给高、中、低配的设备设定不同的Prefab等级;或者是把一个场景一分为三,高配显示三个部分,中配显示两个部分,低配就只显示其中一个部分。
针对纹理,还可以通过Texture Streaming,或是通过数值直接把LOD强制下降一档;针对网格,尤其是超大的场景,可以考虑结合HLOD替换一些非常远的建筑;如果是一些中距离的建筑,可以考虑针对LOD 0做一些动态的加载卸载。
还有一些比较通用的方式:通过修改缓存策略,比如说特效的缓存、动态的角色、怪物的缓存,通过设定一些上限和缓存的时间也可以有效地控制低端机上的内存。
测试用例
做了以上这些分级后,我们下一步就需要制定不同的测试用例,以遍历到我们关心的测试场景。
譬如在中后期,我们需要就新手流程、战斗副本做遍历,以及进行有压力测试等。
而在前期/前中期,也可以设计一些用例,例如场景中放置多个相机去播放动画模拟玩家、测试玩家在不同角度、不同场景的不同位置,性能压力是否正常;还可以针对高、中、低不同档位的设备分别做测试,来验证我们的画质分级是不是合理,从而帮助我们更早地发现制作流程中的问题。
下图是一个性能测试的典型案例。
结合UWA的性能测试工具获取每一段在播放过程时,它的FPS 或者是其他维度的性能数据,基本上2~5分钟就可以体现出它的性能压力;这时候如果画质分级已经完成,也可以针对高、中、低不同档位的设备分别测试,验证我们的画质分级的合理性;最后也可以通过类似右下角的统计表,查看每一个相机、每一个子场景的性能数据。
这里特别提示几个关键数据:
Overdraw
研发团队要特别留意粒子系统是否比较多,或者面积比较大;一般我们建议低端设备上常驻的粒子特效的Overdraw尽量不要超过2层。
ShaderCycle/带宽
Shader Cycles可以比较综合地评估画面在渲染层面上的压力,因为它是像素着色相关的综合指标。不同GPU芯片上的Shader复杂度计算都不一样(即使同一个Shader),所以没有绝对的数值可以参考,但可以通过相对值查看局部是否有问题。
图元
我们建议关注“被剔除的图元数”的占比,一般来说该值通常是小于50%的。如果这个值明显高于50%,那通常可能是美术同学在场景里面放了一些非常巨大的模型,导致相机只照到一部分但整个模型都参与了渲染,造成了比较大的浪费。通过这个数据检测,我们就能够尽早地去暴露出美术制作层面上的问题,从而优化制作流程。
以上关于设备分档的原理和执行方法是游戏性能保障体系中非常重要的一环,对于如何科学的进行设备分档,希望带给大家一些启发或借鉴。如果各位游戏开发者希望了解更多关于性能保障的工具、方法和标准,可以更详细了解UWA DAY 2022的更多议题,期待明年UWA能给行业带来更多落地和深入的实践分享。