《全民枪战》测评精讲

简介:

CPU性能

该游戏在CPU占用方面的性能非常不错,下图为该游戏在红米2小米4上的CPU占用情况。在报告中,在红米2上运行的15647帧中,超过33ms的帧数占比为13.1%,在小米4上运行的19469帧中,超过33ms的帧数占比为9.6%。

红米2

UWA Tech Doc

小米4

UWA Tech Doc

其整体CPU性能的优秀表现与其各个模块的合理使用是分不开的。下面,我们就详细讲解一下其CPU性能方面的亮点之处。

渲染模块

该游戏在红米2设备上运行时的渲染模块CPU开销如下图所示。通过统计,半透明物体渲染的CPU消耗均值为2.9 ms,主要集中在1.3~5.9ms范围内(5%~95%)。不透明物体渲染的CPU消耗均值为4.4ms,主要集中在0.4~10.5ms范围内(5%~95%)。Draw Call峰值为178,且主要集中在18~131范围内(5%~95%),该值处于合理范围之内。

UWA Tech Doc

从图中可以看出,在战斗副本中,不透明物体的渲染为渲染模块的主要开销,且它与Draw Call和蒙皮网格数量基本上成正比趋势。这说明副本中渲染模块的CPU开销主要由蒙皮网格的渲染性能决定。蒙皮网格的优化将会为性能带来最大的产出比。

UI模块

该游戏在红米2设备上运行时的UI模块CPU开销如下图所示。通过统计,UI模块总体的CPU占用峰值为358.2 ms,均值为1.7 ms,主要集中在0.6~3.8ms范围内(5%~95%),该值处于合理范围之内。同时,在测试过程中总体堆内存分配量为9.0 MB,均值为0.6 KB/帧。

UWA Tech Doc

该游戏UI模块的性能开销很低,在15000+帧的运行过程中,堆内存仅分配9MB。这说明UI界面在制作和使用上均非常合理,其UI操作并没有频繁引起UIDrawCall变化,进而Mesh重建的出现几率很低。


内存模块

《全民枪战》在内存上的表现同样突出,如下图所示。总内存峰值为193MB,Mono堆内存峰值为22MB,且内存的升降非常一致,内存泄露的概率很低。

UWA Tech Doc

Mono堆内存

从上图可知,该游戏的总体Mono堆内存控制得很好,在15647帧中,Mono的堆内存峰值仅为22MB。这得益于其代码中严格避免了不必要的堆内存分配,下图为该游戏在15647帧中函数堆内存分配情况。

UWA Tech Doc

资源内存

该项目的资源内存占用很低,下图为纹理资源的内存占用情况。经过统计,纹理资源数量峰值为331个,内存占用峰值40MB,这说明纹理资源在分辨率、格式和Mipmap使用方面均非常合理。在全部纹理资源中,ETC1格式纹理占有269个,RGB24格式纹理仅有1个,ARGB32和RGBA32格式资源数为0

UWA Tech Doc

其他资源的内存占用情况如下:

(1)Mesh

UWA Tech Doc

(2)AnimationClip

UWA Tech Doc

(3) AudioClip

UWA Tech Doc

以上为《全民枪战》游戏在CPU性能和内存管理方面的具体使用情况。虽然总体内存占用稍高,但优秀的CPU性能、较低的堆内存分配和合理的资源使用,足以说明该研发团队具备非常深厚的技术功底和对于引擎相当优秀的把控能力。

同时,该游戏在资源加载和实例化方面仍有一定的提升空间。在此,我们对其进行罗列,希望同样可以帮助到大家的研发项目

Instantiate实例化

目前,游戏的战斗副本中Instantiate实例化的频率较高,如下图所示。较高频次的Instantiate/Destroy操作会造成一定的内存碎片,从而造成GC的加速到来。目前,游戏在小米4上运行19000+帧时,共检测到GC调用28次,平均690帧/次。

UWA Tech Doc

同时,通过更加细致的分析,可以看到Instantiate实例化的较大CPU开销均发生在背包界面打开时,如下图所示:

UWA Tech Doc

对于UI界面的实例化开销,我们一般建议如下:

  • 对于使用频率不高但却较为耗时的UI界面,可通过Active/Deactive来进行切换;
  • 对于使用频率较高的UI界面,则可通过直接改变Transform的方式来移进移出相机视域体,可以得到更加高效的性能。

Shader解析

在场景切换时,Shader的解析存在一定的CPU占用,如下图所示。可以看出,Shader的解析开销均在150ms之内,而这是可以避免的。对于一款移动游戏来说,Shader的使用数量大致在50个以内,且Shader的内存占用其实相当小,因此,可将Shader单独制作成一个AssetBundle,并通过依赖关系打包,让其他资源与其进行依赖。在游戏一开始启动时,即可加载该Shader的AssetBundle文件,对其进行解析并常驻内存。这样,后续再切换场景时,Shader将不再进行解析,这部分CPU开销自然可以省掉了

UWA Tech Doc

动画资源冗余

在测评过程中,我们发现该项目的动画资源在使用上存在一定的冗余现象。如下图所示,图中红框内的数量峰值即表示该资源在测试过程中存在不同程度的冗余情况。点击资源,图表中即可显示该资源在项目测试阶段的具体使用情况,从而大家可以直接通过该曲线来定位资源出现冗余时的具体位置。

UWA Tech Doc

以上则为该项目在后续研发中可进一步提升性能的主要方面。在我们测评过的项目中,实例化频率过大,Shader重复解析、资源冗余等问题也是绝大多数研发团队遇到的共性问题。希望以上的讲解对大家的相关问题有所帮助。

最后,非常感谢《全民枪战》研发团队对UWA的认可和支持。





原文出处:侑虎科技
转载请与作者联系,同时请务必标明文章原始出处和原文链接及本声明。

目录
相关文章
|
9月前
|
架构师
阿里云分销领航员训练营圆满收官, “实战演练”精准提升伙伴能力
2023年3月13日,由阿里云组织的阿里云分销领航员训练营·北京专场在北京分公司圆满收官。
阿里云分销领航员训练营圆满收官, “实战演练”精准提升伙伴能力
|
数据挖掘 大数据 BI
阿里云ACP大数据分析师公开课—快速攻克ACP大数据数据分析,扫码进领取学习资料!
0元免费 公开课;5天试题+2天直播;发放学习资料,支持学习问题答疑
阿里云ACP大数据分析师公开课—快速攻克ACP大数据数据分析,扫码进领取学习资料!
|
存储 Cloud Native Oracle
直播预告 | PolarDB 开源人才培初级考试备考辅导公开课
为了让学员的学考更有针对性,本次特邀CUUG首席讲师陈卫星老师(Oracle 10g/11g OCM、PostgreSQL PGCM证书获得者,PolarDB 开源人才初级课程金牌讲师)为您答疑解惑,陈老师目前总共分享过200多场数据库相关技术公开课,此次公开课将对比PolarDB与其它国产数据库的技术特点,分享PolarDB 开源人才初级考试秘笈,助您顺利通过考试。
直播预告 | PolarDB 开源人才培初级考试备考辅导公开课
|
SQL 数据采集 弹性计算
冬季实战营第五期:轻松入门学习大数据全流程
冬季实战营第五期:轻松入门学习大数据全流程
118 0
冬季实战营第五期:轻松入门学习大数据全流程
|
Cloud Native 新金融 开发者
数智新金融训练营上线啦!
作为处于第四次工业革命浪潮之中的金融机构,正在加速数智化转型,积极探索业务创新、运营优化、改善客户体验的新金融商业模式。
数智新金融训练营上线啦!
|
弹性计算 运维 Kubernetes
5个免费名额、阿里专家亲自辅导,手把手带领企业落地云原生持续交付
寻5家企业,共创云原生持续交付解决方案,定义下一代云原生持续交付产品。阿里专家面对面沟通、亲自浮躁,带领企业落地云原生持续交付方案
279 0
5个免费名额、阿里专家亲自辅导,手把手带领企业落地云原生持续交付
|
存储 SQL 弹性计算
双十一云起实验室体验专场,七大场景,体验有礼
云起实验室是阿里云为开发者打造的一站式体验学习平台,在这里你可以了解并亲自动手体验各类云产品和云计算基础,无需关注资源开通和底层产品,无需任何费用。只要有一颗想要了解云、学习云、体验云的心,这里就是你的上云第一站。
双十一云起实验室体验专场,七大场景,体验有礼
|
Kubernetes 开发者 容器
【1024创造营】K8s难点攻破训练营第二期训练营玩法公告
欢迎参加由阿里云开发者学堂发起的“K8s难点攻破训练营第二期训练营”。 本期训练营内容充实,无论你是新晋开发者,还是身经百战的大牛,都欢迎报名。
【1024创造营】K8s难点攻破训练营第二期训练营玩法公告
|
机器学习/深度学习 分布式计算 DataWorks
大数据上手实战!训练营“9营齐开”第二季限时免费报名啦
首期大数据“9营齐开”计划吸引了10000+开发者报名参与,成为今夏最火爆的大数据训练营!伴随着第一季训练营的完美落幕,大数据训练营“九营齐开”第二季已蓄势待发!
3938 0
大数据上手实战!训练营“9营齐开”第二季限时免费报名啦
|
机器学习/深度学习 分布式计算 DataWorks
9大训练营免费开营!阿里云大数据团队的独门绝学全在这了
即日起,阿里云大数据训练营九营齐开!理论与实践,概念与案例,大数据从0到1上手学习,行业大神真人带练!
3215 0
9大训练营免费开营!阿里云大数据团队的独门绝学全在这了