前言
高性能多纹理合批方案,已经发布完善一个月了,
这次带来网友公司上线项目,微信小游戏的性能狗测试数据。
(感谢网友提供的测试数据,尊重他公司的意愿,下面就没公开游戏截图和名字,仅拿提供的性能狗数据,进行对比分析。)
体验连接:仅作体验,性能源码为准
获取地址:98k 高性能多纹理合批 3.x
>>> 98K 全系列作品链接
多纹理合批,性能狗测试
在观看测试数据,先介绍性能狗,实用的指标参数
FPS(帧率)
FPS(游戏画面平均刷新次数,俗称帧率/FPS)
- Avg(FPS):平均帧率(一段时间内平均FPS)
- Var(FPS):帧率方差(一段时间内FPS方差)
- Drop(FPS):降帧次数(平均每小时相邻两个FPS点下降大于8帧的次数)
- Min(FPS):最小帧率(一段时间内最小FPS)
- Median(FPS):中位帧率(一段时间内FPS中位数)
- MedRange(FPS):FPS偏离中位数20%(±)内的占比
Jank(卡顿)
- Jank(/10min):平均每10分钟卡顿次数。
- BigJank(/10min):平均每10分钟严重卡顿次数
Jank卡顿,同时满足以下两条件
- 当前帧耗时>前三帧平均耗时2倍。
- 当前帧耗时>两帧电影帧耗(84ms)
BigJank严重卡顿,同时满足两条件
- 当前帧耗时>前三帧平均耗时2倍。
- 当前帧耗时>三帧电影帧耗时(125ms)。
其他参数:
- Stutter (测试过程中,卡顿时长的占比例)
- Smooth (稳帧指数,越小越好,对画面平稳度的评估,一般游戏 < 8,应用APP(滑动时) < 20)
普及个知识:
(在30或60FPS以上,保证帧率的稳定性)
帧率FPS高并不能反映流畅或不卡顿。比如:FPS为50帧,前200ms渲染一帧,后800ms渲染49帧,虽然帧率50,但依然觉得非常卡顿。同时帧率FPS低,并不代表卡顿,比如无卡顿时均匀FPS为15帧。所以平均帧率FPS与卡顿无任何直接关系。
没有对比没有感知,前后帧率的不稳定,才是卡顿的真正原因。所以帧率的稳定,决定了用户卡顿的感知,在设置合适FPS前提下,减少Jank卡顿才是真正的优化体验。
30分钟测试结果:
引擎版本:creator 3.8.x
98k 多纹理合批 : 1.0.5 版本
平台:微信小游戏(高性能)
设备:iphone 12
DrawCall 优化效果
性能狗30分钟,未用多纹理
性能狗30分钟,使用多纹理
FPS帧率对比
Smooth (稳帧指数,越小越好)
- 优化前:16.9
- 优化后:12.7
Median(FPS) (中位帧率,越大越好)
- 优化前:50
- 优化后:53
MedRange(FPS) (中位帧率占比,越大越好)
- 优化前:75.1%
- 优化后:84.6%
Jank卡顿对比
Stutter (卡顿时长占比,越小越好)
- 优化前:8%
- 优化后:5.7%
Jank(/10分钟)(卡顿次数,越小越好)
- 优化前:311.7
- 优化后:229.4
减少卡顿:26%
BigJank(/10分钟)(卡顿次数,越小越好)
- 优化前:173.2
- 优化后:118.6
减少卡顿:31%
最后总结
原游戏DC已经优化过,在120左右,已经不错,
使用多纹理后,DC缩减到30左右,性能有增益。
游戏帧率提高,卡顿率下降明显,体验明显改善。
经分进一步的分析,在静态很多时候游戏是能满帧,
剩下卡顿现象是动态创建造成,接下来对资源加载和创建进行优化提升:
- 资源进行预加载
- 优化资源文件大小
- 场景进行分帧加载
插件获取
已上架到官方商店:
多纹理合批 3.x, 1.0.7 已经上线,
优化检测的流程,进一步提升性能。
获取地址:98K 高性能多纹理合批 3.x