乐趣区

关于手游:UWA发布|Unity手游性能蓝皮书

作为游戏行业的服务商,UWA 不仅为游戏开发者提供高效的性能优化工具,也致力于为行业提供更全面、更具体的信息和服务。为此,UWA 明天公布 2019-2020 年度手游蓝皮书,从总体性能数据、引擎各模块开销、内存占用 等方面进行汇总剖析,出现 Unity 手游行业现状。


这是侑虎科技原创文章,欢送转发分享,未经官网受权请勿转载。如果您有任何独到的见解或者发现也欢送分割咱们,一起探讨。(QQ 群:793972859)

MMORPG 作为目前游戏市场上的头部力量,在 UWA 测评过的我的项目中,也占据了次要份额,因而咱们以该类型的测评数据为例,为大家出现 2019-2020 年的手游性能现状和发展趋势。

报告目录:
1)MMORPG 手游总体性能开销剖析
2)MMORPG 手游 CPU 模块性能开销剖析
3)MMORPG 手游内存模块性能开销剖析
4)MMORPG 手游资源管理剖析
5)UWA 对于 MMORPG 手游研发团队的倡议


◆◆◆◆◆

MMORPG 手游总体性能开销剖析

Android 设施的 CPU 均值主体范畴为 14.7~78.9 ms,且次要集中在 17~33ms 和 33~50ms 两档。

依照 UWA 官网(www.uwa4d.com)的测评机型分类,咱们将统计的性能数据分为低端、中端和高端;在趋势图中则间接以最具备代表性的低端和高端来展示。

大部分 MMORPG 手游在中低端设施的性能开销较高,大于 33ms 的耗时占比范畴在 60%~70%。

无论是高、中和低端的 Android 设施,渲染和逻辑代码都是须要研发团队重点关注的,它们的耗费总和占了总开销的近 70%。逻辑代码的耗时占比仍然很高,这次要与角色、怪物的数量越来越多相干。随着其一直减少,逻辑状态的更新开销、AI 开销等都在大幅减少,这是须要游戏研发团队中亲密关注的耗时瓶颈。

上面咱们就来具体分析这些支流模块的开销状况。


◆◆◆◆◆

MMORPG 手游 CPU 模块性能开销剖析

一、渲染模块

重大水平:天堂

为了可能更好地反映出各个性能参数的整体应用状况,咱们统计了每种性能参数的主体应用范畴,其范畴区间是[5%~95%],以下数据中 P5 代表 5%,P50 代表均值,P95 代表 95%。

在过来的 4 个季度中,半透明渲染和不通明渲染在低端设施上的 CPU 耗时在一直降落,Q2 略有回升,这意味着游戏团队对于引擎渲染模块的了解越来越深刻。

二、逻辑代码

重大水平:天堂

1)GC 触发频率很高,是造成卡顿的次要起因之一,目前只有 36.8% 的我的项目能够将 GC 的触发频率管制在 1000 帧 / 次以上。
2)随着 MMORPG 游戏越来越重度化,GC 均匀耗时在逐渐回升。GC 耗时会逐步成为游戏运行时的支流性能杀手,须要研发团队时刻留神!

咱们能够看到,在过来的 Q2 中,Instantiate 调用频率有显著降落,这阐明大家在我的项目中一直器重对于资源 Instantiate/Destroy 的治理。

如果大家的我的项目中仍有大量的 Instantiate/Destroy 调用,那么咱们建议您着重查看 UWA 线上性能报告中资源管理分类的“资源实例化 / 激活”页面,通过它能够疾速把握到底具体哪些 GameObject 在不停地被执行实例化操作,从而更为高效地缩小不必要的性能开销。

Shader.Parse 操作是比较突出的性能杀手,但咱们看到在 2019 的 Q4 中曾经大幅度降落,目前均匀每次调用的 CPU 耗时次要散布在 0.8~74.9 ms。

三、UI 模块

重大水平:天堂

目前咱们次要统计了 NGUI、UGUI 和 FGUI 的占比以及具体的应用状况。在刚刚过来的四个季度中,UGUI 的应用占比仍然强势,最高时可达 72%。NGUI 的占比有显著降落的趋势,而 FGUI 有显著上涨的趋势。

上面咱们将别离阐明它们的 CPU 耗时和堆内存占用状况。

UI 模块的性能开销仍然很高,但相较于去年相比的确有进一步晋升。这次要是在这一年多以来,各大研发团队对于 UGUI 的了解和把握都在不断深入。当然,当初 UGUI 的显著性能问题次要有以下四方面:
1.Draw Call;
2. 重建;
3.OverDraw;
4. 主线程阻塞。

针对以上问题,大家能够通过 UWA 学堂(https://edu.uwa4d.com)中 UI 相干的相干技术问题和视频进行学习和理解,置信对帮忙大家疾速晋升 UI 方面的技术了解大有裨益。
FGUI 的性能看起来很不错,然而目前 FGUI 的使用量较少,可能存在一些统计偏差。仅供参考。

四、动画模块

重大水平:一般

动画模块在最近一年来的性能体现始终较为安稳,这阐明大家对于动画模块中应有的性能优化点把握曾经较为到位。尽管 MMO 我的项目中的角色、NPC 和怪物等数量继续有在减少,但在这些模型少数是通过 GPU Skinning 的形式来实现。这种形式对于实现场景中的大量同种怪物十分无效。

五、物理模块

重大水平:一般

物理模块的性能存在回升趋势,特地是高端设施上。对于应用 Unity 2017.4 版本当前的团队,Auto Simulation 和 Auto Sync Transforms 是大家须要关怀的参数,以防止不必要的性能耗时。

六、粒子模块

重大水平:一般

粒子系统的 CPU 开销广泛较低,但总体应用数量峰值在 2020 Q1 后大幅回升。咱们仍然倡议研发团队尽可能将数量峰值管制在 600 以下(低端设施)和 1000 以下(中高端设施)。对此,倡议研发团队常常通过以下两方面来检测本人的粒子特效应用状况:
1)粒子系统(特地是技能特效)的配置文件是否适量;
2)特效中是否含有短暂不必的粒子系统。


◆◆◆◆◆

MMORPG 手游内存模块开销剖析

内存泄露

重大水平:噩梦

内存泄露问题在过来的一年中显著减轻,40% 的提测我的项目都存在透露的问题。

咱们倡议研发团队后续可更为频繁地进行检测和监控,即可进一步升高堆内存泄露的危险。研发团队可通过以下两种形式高效地对堆内存泄露函数进行剖析和优化:
1)UWA GOT Online 中的具体 Mono 堆内存剖析和 Lua 性能剖析报告;
2)UWA 线上深度测评中的具体 Mono 堆内存测评报告。

总体内存

重大水平:天堂

总体内存在最近的一年里,峰值均值稳步晋升,共计晋升了 132MB。随着高端挪动设施的遍及、MMO 游戏的逐渐重度化,内存逐渐晋升是一个必然的趋势。目前,我的项目中的次要内存瓶颈仍然是资源和 Mono 堆内存。对此,咱们将在接下来的文章中进行详细分析。

总体堆内存

重大水平:天堂

总体堆内存在最近一年里回升趋势非常明显,这次要是游戏的重度化所致。但另一方面,也是研发团队对于 Mono 堆内存调配的疏于治理所致。就目前而言,Mono 堆内存过高次要是因为配置文件的序列化库使用不当所致。

我的项目的内存占用很大一部分来自于资源的应用,上面咱们将对我的项目中支流资源的应用状况进行剖析。

纹理资源内存

重大水平:天堂

如上图所示,对于纹理资源来说,在过来的 4 个季度中,其内存占用处于回升阶段。倡议研发团队对于纹理 Mipmap 应用状况、渲染利用率等进行进一步的检测和欠缺。

网格资源内存

重大水平:天堂

1)网格资源内存峰值次要散布为 12.7~ 96.1 MB,且次要集中在 60MB 以内。
2)MMORPG 游戏的场景广泛较大、角色广泛较多,因而,其网格资源量显著高于其它类型游戏。但从应用趋势上来看,其最近一年的应用趋势较为安稳,均值均在 50MB-80MB 浮动。

动画资源内存

重大水平:一般

动画模块的内存应用趋势较为安稳,均匀峰值内存长期管制在 20~40MB 区间之内。

Shader 资源内存

重大水平:一般

这里,UWA 依然须要揭示的是,Standard Shader 在大家的我的项目中被常常误引入进来,倡议大家在 UWA 性能简报中的“具体资源应用信息”中特地关注 Standard Shader 的应用状况。

RenderTexture 资源内存

重大水平:噩梦

RenderTexture 的内存占用在进入 2020 年 Q1 当前回升趋势显著,特地是在低端设施上,随着大家对于图像后处理成果的需要晋升,后续很可能会呈现 RenderTexture 应用水平大幅晋升的状况,因而,倡议研发团队对 RenderTexture 亲密关注。

粒子系统资源内存

重大水平:噩梦

粒子系统的应用数量过大,从而导致其内存占用过高。对此,其最无效的优化办法还是升高粒子系统的应用数量,同时研发团队能够思考在高端设施上应用 GPU Particle 新性能,将大幅度晋升粒子模块的性能。


◆◆◆◆◆

MMORPG 手游资源管理剖析

AssetBundle 加载形式(Load 和 LoadAsync)的应用占比在过来的一年中都放弃在 80% 左右。毫无疑问,AssetBundle 加载形式是目前绝大多数研发团队的资源加载首选。

在接下来的一年中,咱们依然倡议大家应用 AUP(Async Upload Pipleine)性能来尝试达到更高的加载效率。对于 AUP 中须要特地关注的技术点,倡议查看 UWA DAY 2019 中的相干分享《Unity 引擎加载模块和内存治理的量化剖析及优化办法》,同时,咱们在往年 UWA DAY 2020 上有了更具体的补充,倡议大家后续关注。

在泛滥加载形式中,LoadFromFile 加载形式仍然是一家独大,LoadFromFile+LZ4 的组合在移动游戏中加载性能劣势显著,仍然是移动游戏资源加载的不二抉择。

1)对于 Instantiate/Destroy 的欠缺,研发团队需时刻关注缓存池的应用是否正当;
2)对于 Active/Deactive 的欠缺,则须要研发团队尽可能留神防止 UI 和动画角色的频繁调用,从而尽可能防止不必要的调用开销。

除了以上信息,往年 UWA DAY 2020 上咱们还分享了其余重要的性能参数数据,不仅实用于 MMO 我的项目:譬如 ASTC 纹理的应用状况、SRP 我的项目的应用状况、色彩空间的应用状况等,这些都是大家在立项或研发阶段较为关怀的话题,咱们将在后续的 UWA DAY 2020 视频中播出,欢送大家关注。

SRP 和色彩空间的应用状况图

ASTC 纹理的应用占比趋势图

热更新库和序列化库的应用趋势图

同时,咱们将本地资源检测服务中的检测后果进行了剖析统计。对于检测未通过率高达 70% 以上的 Top10 的检测规定,倡议大家多关注。研发团队也能够自行应用该服务,以检测本身我的项目是否存在相似的问题。


◆◆◆◆◆

UWA 对于 MMORPG 手游研发团队的倡议

1、警觉渲染模块、逻辑代码这两大性能杀手!随着精品化 MMORPG 我的项目的日益增多,这两项在接下来仍然是研发团队在性能优化时的重中之重!

2、内存泄露问题在过来的一年有恶化趋势,数据显示 40% 的我的项目存在着泄露问题,Mono 堆内存、纹理、网格、RenderTexture 和粒子系统仍然是大家接下来须要关注的重点。特地是 Mono 堆内存局部,对于序列化信息的治理曾经迫不及待,在接下来的一年,UWA 会尽可能为各大研发团队解决和监控这一内存难题。倡议通过 Mono 和 Asset 模式继续监控。

3、资源加载方面,在过来的一年中,LoadFromFile(Async)曾经是移动游戏我的项目中的支流加载形式,AssetBundle.Load(Async)同样也是资源加载的支流形式,并且获得了显著的成果,UWA 也倡议国内各大研发团队开始着手进行学习和钻研。

4、GPU 性能问题在过来的一年中逐渐凸显,在不少超重度 MMO 游戏中,GPU 曾经俨然成了游戏我的项目的次要瓶颈,对此,倡议研发团队通过 GOT Online 的 Overview 模式检测 GPU 耗时,从而定位 GPU 的瓶颈。

* 本报告中的数据最终解释权归侑虎科技所有。

退出移动版