UWA问答 | 博客 | 游戏及VR应用性能优化记录分享 | 侑虎科技 - 小米超神
type: channel
link: https://blog.uwa4d.com/tag/小米超神/
items: UWA官方Demo新增《小米超神》，全面揭秘重度手游的性能表现！
items: MOBA手游《小米超神》案例精讲

UWA官方Demo新增《小米超神》，全面揭秘重度手游的性能表现！
type: item
date: 2017-12-25T04:19:00+02:00
description: 还记得UWA【博观约取】专栏推荐的《小米超神》吗？作为一款重度的MOBA手游，它在不同配置的移动设备上，无论是画面表现力，还是性能开销都非常优秀。我们曾公布过该游戏的主要性能数据，当然其出色性能的背后和各方面的细节处理都有着千丝万缕的联系。为此，我们将该游戏的完整性能数据以UWA demo的形式公开，从而让大家更细致全面地感受其每个引擎模块的具体表现。 为什么重度游戏的性能如此小清新？不妨跟随小编的脚步一起到UWA官网上揭秘吧！ 再此特别感谢研发团队福州朱雀网络对UWA的认可和支持，也感谢他们乐于将项目性能数据与大家一起分享。 首先，我们登录UWA首页www.uwa4d.com，点击观看演示demo。 在性能诊断与优化的示例项目中选择《小米超神》。 同时我们也支持VR项目测评，大家可以点击下图右边的demo了解VR项目的性能报告。 下面我们来围观下《小米超神》的性能报告。下图为报告的性能总结页面。研发团队能从宏观上高效分析项目运行时的整体趋势，包括总体CPU性能、GC调用频率和引擎各模块性能等，同时也能根据同类型项目中的排名，对性能的薄弱环节一目了然，使得优化更加有的放矢。 UWA报告也可以协助开发团队从各个引擎模块（渲染模块、物理模块、粒子模块、动画模块、UI模块等）的微观处深入剖析项目的性能。下图即为UWA报告中渲染模块的耗时，可以看到该模块中有DrawCall、Triangle、半透明和不透明渲染耗时等参数的具体使用情况，条分缕析，疏而不漏。 UWA报告中能展现内存模块的详细使用情况，涵盖了几乎所有资源如纹理、网格、动画、音频等。不仅如此，各个资源的属性（如纹理的高度、宽度，数量峰值等）都一览无遗。在成百上千个资源文件中，即使再小的资源漏洞都无处遁形。 下图为《小米超神》的纹理资源具体使用情况。 90%的性能问题都和加载息息相关，而对于加载问题的定位这正是UWA性能测评的亮点之一，在《小米超神》报告中的资源管理界面中，对于加载/卸载的API调用使用情况，我们能一目了然。 我们可以看到资源加载和卸载的具体操作情况，不仅可以让用户看到整体加载耗时和加载次数，同时还可以通过图表来显示具体每次加载的位置和耗时。 下图为资源实例化功能，通过该功能，开发者能明确任何一个GameObject在实例化和销毁时的CPU占用情况：不仅可以看到最为耗时的GameObject，同时还能看到每次触发的时间点。 需要说明的是，上文提供的这些数据只是报告中的冰山一角，作为一支优秀团队精心打造的重度MOBA手游，我们强烈推荐大家多研究其报告中各个模块的性能细节以加深认知。同时，UWA真正想让大家看到的不仅是数据，更是数据背后我们研究问题的方式和厚积薄发的态度，这也是以后能切实帮到大家的东西。 温馨提示：PC上登录www.uwa4d.com即可以查看该游戏的完整性能数据。 UWA会员功能一览 简单优化，优化简单。这是UWA成立之初的愿景，我们希望UWA能帮到任何一个项目，哪怕是提速一毫秒。如果您的项目也存在运行卡顿、包体过大、资源冗余、内存泄漏、内存过大，代码效率低下、加载龟速等问题，不要犹豫了，时间不等你，让UWA为你助力！ 官网：www.uwa4d.com 官方技术博客：blog.uwa4d.com 官方问答社区：answer.uwa4d.com 官方技术QQ群：793972859（仅限技术交流）

MOBA手游《小米超神》案例精讲
type: item
date: 2017-11-21T10:33:00+02:00
description: 今天我们为大家带来由福州朱雀网络研发的MOBA手游《小米超神》的UWA测评报告分析。该游戏在不同配置的移动终端设备上，无论是画面表现力，还是性能开销都非常优异。在此，我们将对该款游戏的性能数据进行深度剖析，希望通过这篇文章可以让大家对移动游戏各个模块的运行效率有更为深刻的认知，并对大家的项目研发有所帮助。 一、CPU性能 该游戏在CPU占用方面的性能非常不错，下图为该游戏在红米Note2设备上进行一场5V5战斗时的性能数据。 可以看出，在红米Note2上运行的19876帧中，超过33ms的帧数占比为13.9%，超过50ms的帧数占比为1.7%，并且从图中可以看出，其CPU耗时较高处主要集中在5V5场景的资源加载阶段。因此，该游戏在战斗时的性能可以说是非常优秀，绝大多数时刻游戏运行非常流畅。 同时，通过进一步统计，该游戏的CPU性能超过了64%的同设备（红米Note2）上测试的其他游戏，其能耗更是低于86%的同设备测试游戏。由于目前国内的MOBA游戏较少，所以上述排名并不是在MOBA类型中的排名，而是在所有类型游戏中的排名。对于一款超重度的MOBA移动游戏来说，该CPU性能和能耗排名可以说是相当出色。 其整体CPU性能的优秀表现与其各个模块的合理使用是分不开的。下面，我们就详细讲解其CPU性能方面的亮点之处。 1、渲染模块 通过UWA性能测评报告，我们可以看到该游戏详尽的渲染模块性能开销。该游戏在红米Note2设备上运行时的渲染模块CPU开销如下图所示。通过统计，半透明物体渲染的CPU消耗均值为1.7 ms，主要集中在0.8~3.0 ms范围内（5%~95%）。不透明物体渲染的CPU消耗均值为1.0 ms，主要集中在0.2~1.7 ms范围内（5%~95%）。可以看出，在整个5V5战斗过程中，无论是移动、Farm、Gank还是团战，甚至上高地时，其渲染耗时都稳定在一个较低的耗时区间。这得益于研发团队对于场景模型、蒙皮网格和UI的控制十分得当。 Draw Call峰值为167，且主要集中在 45~130范围内（5%~95%），渲染三角形面片单帧峰值为64900，以上数值均处于合理范围之内。 2、UI模块 该游戏在红米Note2设备上运行时的UI模块CPU开销如下图所示。该游戏使用UGUI作为UI界面的解决方案。经过统计，UI模块总体的CPU占用均值为1.5 ms，主要集中在0.1~3.5 ms（5%~95%），属于合理范围之内。堆内存累积分配为16000帧 2.4MB，平均每帧分配堆内存155.4B，这说明该游戏UI界面的制作及UI重建的影响范围非常合理。目前，UWA推荐UGUI模块中，平均每帧堆内存分配尽可能控制在200B以下。 战斗场景中，UI系统的性能耗时主要是由UI元素的状态变化而导致的，比如血条、飘字等HUD的移动、消隐等。这种操作稍不注意，就会带来较高的UI网格重建开销。所以，UI界面的研发看似直观、简单，但是其对于制作时的层层考究和运行时的耐心调优，则是一款产品是否“匠心”的试金石。以下则为《小米超神》这款产品在经过几轮优化后的UI性能对比图。 3、动画模块 在UWA测评报告中，该游戏运行时的动画模块CPU开销如下图所示。可以看出，除进入场景时出现CPU高值外，其在战斗副本中的CPU开销均控制在较低水平。Animator.Update的CPU均值为2.0 ms，主要集中在0.1~4.3ms区间内，对于MOBA项目5V5场景来说，基本上每帧均有90-130个物体在进行运动（除英雄、小兵之外，还有信使宠物、野怪、塔、插眼等等），由于玩家可以随意查看地图上任何一个角落的特点，其每帧的动画系统压力要比常规的MMO游戏大上数倍。因此，《小米超神》可以将其控制在均值2.0ms的水平线上，已经是非常优秀的数据了。 同时，经过进一步检测发现，动画模块的耗时主要由Animators.ProcessAnimationsJob和Animators.FireAnimationEventsAndBehaviours导致，前者主要是持续的累积耗时，而后者则是非连续的“尖刺”开销。前者是动画系统对于AnimationClip的读取和计算耗时所致，其耗时大小与当前帧参与计算的骨骼节点数、动画曲线数、动画执行状态和Animator Controller的具体设置相关，其具体说明可参见《Unity中动画系统性能优化方案回顾》；后者则是动画事件的具体耗时，主要是项目逻辑代码的性能开销，此处研发团队可以通过性能堆栈来进一步查看其逻辑代码的开销是否有进一步的优化空间。 4、GC 调用 该研发团队对于GC调用频率控制得非常出众，游戏在运行过程中，GC调用频率为1656帧/次，优于目前93%的行业内游戏。一般来说，我们建议一款项目的GC调用频率可以控制在1000…