在过去的一年中,以小米8和OPPO R17作为测试机的数量明显提升。 红米4X作为出海的主流低端设备依然受开发者关注,未来的需求趋势可能更明显。
从已有的测试数据看,高达44%的项目帧率在20~30之间,26%的项目在45~60之间。说明大部分的项目还是趋于30帧的目标做优化,但同时也说明目前已经有较多项目开始以60帧为目标进行游戏开发。 在低端设备上:78%的项目未到达30帧的标准,31%的项目未达到20帧; 在中端设备上:62%的项目未达到30帧的标准; 在高端设备上:48%的项目未达到30帧的标准。
高端设备的帧率(均值)在36帧上下; 中端设备的帧率在30帧上下; 低端设备在Q2有明显下降,现维持在23帧左右。
卡顿均值在2021 Q1~Q3持续提升,在Q4略有下降,但卡顿值依然保持在11次/分钟,建议研发团队多使用GOT Online - Overview模式测试,并通过卡顿分析功能来进行检测和优化。
在过去的一年中,半透明渲染耗时的走势较为平稳,这是因为半透明渲染主要来自于UI和粒子系统,场景中的草(Alpha Blend渲染方式)、云和水体也属于半透明渲染中,但相对于UI和粒子系统,这些在绝大部分游戏中并不是半透明渲染的耗时主力。UI界面的复杂程度在这一年中并无太大变化、粒子系统的分级其实是目前大部分研发团队较为忽视的一点。所以,在这一整年的过程中,半透明渲染的耗时趋势都较为平稳。
无论是高端、中端还是低端设备,不透明渲染耗时普遍都在下降;一方面是对于不透明渲染中的场景物体,其Draw Call Batching技术已经被大多数团队所熟知和熟练使用,另一方面则是越来越多的新项目开始使用URP来作为项目的主要渲染方式,随着SRP Batcher功能的使用越来越成熟,其为大家项目的不透明渲染带来了较大的性能提升。
从上述的数据中可以看出,大家目前已经可以针对不透明渲染根据不同档次的机型进行不同的渲染分级;而在半透明渲染中,Draw Call在不同档次中的分级效果不明显。这主要是因为粒子系统的分级不明显所致,建议研发团队后续对其分级进行关注和加强。
同屏渲染面片数已经在不同档次的设备上进行了更为合理的分级,研发团队可以根据上述的分级数值来针对自身项目的使用数量进行查看。该分级策略主要还是体现在不透明渲染中,特别是针对超大场景的复杂渲染,这种分级策略尤为重要。
在统计的项目中,SRP的数量在持续上升,到Q4结束基本上已经高达35%;说明3个项目中已经至少有1个是使用SRP的,未来趋势也会越来越明显。建议研发团队在后续的新开游戏项目中,尽可能学习并使用SRP功能。
26%的项目能把GC调用频率控制在1000帧/次以上;50%左右的项目都是小于600帧,说明GC问题值得关注。对于GC的优化,建议研发团队一方面继续优化自身逻辑代码的堆内存分配,一方面尝试使用Unity引擎的增量GC功能,来降低每帧GC的CPU耗时。
动画模块的性能耗时较为稳定,但是在低端设备上在Q2时有所上涨。同时,AnimationClipPlayable功能也非常值得研发团队后续研究和关注,它对于动画系统性能方面的提升有很大的潜力可以挖掘。
在Q4测试的部分项目中,物理模块被深度使用,大家对于场景和角色物理模拟的逼真度要求越来越高。布料、布娃娃系统开始逐步被广泛使用,建议研发团队对该方面的技术进行关注和研究。
在这一年中,粒子系统的耗时走势较为平稳,且使用的粒子系统数量并没有在不同档次的设备上显示出不同程度的差异,这说明大部分项目中对于粒子系统的使用基本上是没有分级的,无论是场景中的粒子特效,还是角色的技能特效,对于针对不同档次设备的质量分级都设置得不细致。对此,非常建议研发团队后续针对粒子系统根据不同设备的性能进行不同程度的调整,从而进一步降低粒子系统的CPU耗时和内存占用。
硬件设备内存的变化较为稳定。在不同档位的设备上差异并不明显,4G内存以下设备的内存占用在800~900MB之间,4G内存以上设备的内存占用在950MB~1.1GB。
总体堆内存一直是项目的内存瓶颈,虽然在过去一年有所起伏,但是无论是4G内存以下或是以上的设备,堆内存都高达100MB以上。这主要是游戏的重度化所致,但另一方面也是研发团队对于Mono堆内存分配疏于管理所致,例如配置文件的序列化库使用不当。 项目的内存占用很大一部分来自于资源的使用,下面我们将对项目中主流资源的使用情况进行分析。
使用ASTC格式的项目越来越多,且自身资源的数量在项目中的占比也在快速升高,2022年的国内市场,ASTC格式取代ETC格式已经成为必然趋势; 当然,如果您的游戏考虑到出海问题,对于海外设备较为低端的国家或地区,仍需要考虑ETC格式的使用。
网格资源的内存占用较为稳定,从使用趋势上来看,较为平稳,4G内存以下设备网格内存在30MB左右,4G内存以上的设备网格内存在40~50MB之间。
动画模块的内存使用趋势较为平稳,平均峰值内存长期控制在30MB之内。
Shader资源内存峰值大幅上升的主要原因是不少项目进行了Unity版本的升级,属于正常现象。Unity 2019.4.21以后,Shader的内存统计发生了变化。原来统计在ShaderLab中的内存现在也被算在Shader资源本身了。 这里,UWA仍然需要提醒的是,Standard Shader在大家的项目中被经常误引入进来,建议大家在UWA性能简报中的“具体资源使用信息”中特别关注Standard Shader的使用情况。
RenderTexture的内存占用在21年Q2~Q3这6个月内小幅提升;即使在低端设备上也有提升,从35MB上升到50MB;后续很可能会出现RenderTexture使用程度大幅提升的情况,因此,建议研发团队对RenderTexture密切关注。
粒子系统的使用数量在逐步提升,并在Q4有明显的回落,保持在18~30MB之间。对此,其最有效的优化方法还是降低粒子系统的使用数量,同时研发团队可以考虑在高端设备上使用GPU Particle 新功能,将大幅度提升粒子模块的性能。
您需要 登录 才可以下载或查看,没有账号?立即注册
使用道具 举报
本版积分规则 发表回复 回帖并转播 回帖后跳转到最后一页
小黑屋|手机版|Unity开发者联盟 ( 粤ICP备20003399号 )
GMT+8, 2024-11-16 17:33 , Processed in 0.094402 second(s), 26 queries .
Powered by Discuz! X3.5 Licensed
© 2001-2024 Discuz! Team.