作为游戏行业的服务商,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的瓶颈。

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