做 MOBA 游戏的注意,渲染、UI 和逻辑代码是性能头号杀手!
UWA 曾经发布过 MMORPG 和 ARPG 的 Unity 手游性能测评报告,延续该系列,最近 UWA 对提交测试(登陆 www.uwa4d.com)的所有 MOBA 手游进行了客观的分析和汇总,并将其具有属性特征的几大性能模块数据在此分享,希望能给相关行业的研发人员一些更为明确和建设性的意见。
总体性能
MOBA 游戏类型是目前所有游戏中性能最难把控(CPU 开销最大)的游戏类型,在 Android 中低端机器上流畅运行,是当前 MOBA 项目最大的挑战。
(1) MOBA 游戏中,同屏众多的英雄、小兵和血条 HUD 等,使得渲染、UI 和自身逻辑代码的开销都大大高于引擎的其他系统开销;
(2) 在 UWA 以往优化的 MOBA 项目中,UI 优化是最为难啃的骨头。不仅数量众多,而且出现和消失时机完全随机,如何做到较为理想的动静分离,是 MOBA 项目中 UI 性能优化的关键。
下面我们就来具体分析下这些主流模块的开销情况。
主流模块性能
一、渲染模块
严重程度:噩梦
Draw Call 的主体使用范围为 34~142,峰值平均为 215;
渲染三角面片的峰值集中在 42K~291K,峰值平均为 113K 面。
UWA 推荐:渲染三角面片峰值< 100K,目前达标比例: 35.6%。
不透明物体的渲染耗时平均为 3.3ms,半透明物体的渲染耗时平均为 6.1ms。相机后处理特效的 CPU 耗时主要集中在 0.1~10.5 ms。
小结:
(1) MOBA 游戏的场景渲染三角形面片数量普遍较高,仅 35.6% 的项目能够将场景的渲染三角形面片数峰值控制在 10w 以下;
(2) 半透明物体的渲染开销较高,这主要与 UI 界面、技能特效、野外树林和草丛量有关。
建议:
(1) 如果渲染面片数过高,则优化可从两方面入手,一是对场景模型、英雄小兵模型尝试进行网格简化,二是对中低端机器上渲染 Shader 进行简化,尽可能做到单 Pass 渲染;
(2) 如果是 UI HUD 开销很高(比如 CreateVBO 较高等),则需要对 UI 系统进行优化,具体可见 UWA 之前的 UI 优化相关的视频、文章和 PPT 对 UI 模块进行完善(可以参考 UWA 公众号的历史推送或者 UWA 博客:blog.uwa4d.com)。
二、UI 模块
严重程度:地狱
(1) 使用 NGUI 作为 UI 解决方案的项目占据了相当高的比例,NGUI 目前仍然是研发团队对于 UI 系统使用的主要解决方案;
(2) UI 模块的性能开销很高,将近 74% 的研发团队都面临较为严重的性能问题;
三、逻辑代码
严重程度:地狱
(1)GC 触发频率很高,是造成卡顿的主要原因之一;
(2)90% 以上的游戏团队需要对 GC 的调用进行进一步规划,对代码的堆内存分配进行大力优化。
(1)Instantiate 实例化操作平均每次调用的 CPU 耗时主要分布在: 1.6~64.4 ms,均值为 6.9ms,每 1 万帧总调用次数主要分布在: 55~5452 次;
(2)Instantiate 的频繁实例化是太多数研发团队非常容易忽视的问题。
Log 输出操作平均每次调用的 CPU 耗时主要分布在: 4.0~114.0 ms,均值为 13.7 ms。
(1)Shader 解析操作平均每次调用的 CPU 耗时主要分布在: 19.4~257.9 ms,均值为 66.8ms;
(2)Shader 解析时间较高,且大多数情况是相同 Shader 的重复开销,值得研发团队密切关注。
四、粒子系统
严重程度:地狱
五、动画模块
严重程度:噩梦
目前仅使用 Mecanim 动画系统的 MOBA 游戏项目占比为 58.9%,仅使用 Unity 3.x 老版本动画系统的占比为 4.1%,两种系统混合使用的占比为 37.0%。
小结:
MOBA 类型的动画模块开销是目前所有游戏类型中 CPU 开销最高的,ARPG 可以根据设定好的剧情分布加载和卸载,MMORPG 可以根据玩家的位置来动态加载,但 MOBA 是允许玩家根据小地图快速切屏的,所以以上方式均不适用。经过统计,MOBA 游戏中一场 5V5 战斗基本上需要保证 90-110 个 Skinned Mesh 在不停进行动画和蒙皮计算,这是动画系统开销如此高的原因之一。
建议:
(1) 根据场景中角色位置或者视域体范围,对场景中的英雄、小兵和炮塔等需要进行动画计算的 GameObject 进行分级控制,比如 Disable 其 Animator 组件等;
(2) 开启 Optimize Game Objects 选项,一切策划需求为其让路;
(3) 善用缓存池,尽可能避免如下图中 Animator.Initialize 的频繁耗时。
内存模块
目前 MOBA 项目中的内存占用普遍较高,但泄露问题的占比仅为 23.3%,大幅低于其他游戏类型游戏。
总体内存
严重程度:地狱
总体堆内存
严重程度:地狱
纹理资源
严重程度:地狱
Mesh 资源
严重程度:地狱
Render Texture 资源
严重程度:噩梦
字体资源
严重程度:普通
Shader 资源
严重程度:地狱
动画资源
严重程度:噩梦
音频资源
严重程度:普通
希望以上数据能给大家的开发提供帮助。之后我们将不断与大家分享其他类型的数据,如 ACT,SLG 等。我们深信数据是会说话的,总有规律值得我们追溯求实、鉴往知来。同时我们也会不断细化评析的标准、划分,以使得这些数据更有代表性和说服力。
来源:上方网
关键字:产品经理, moba
版权声明
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处。如若内容有涉嫌抄袭侵权/违法违规/事实不符,请点击 举报 进行投诉反馈!