多纹理合批3.x (性能狗测试)

前言


高性能多纹理合批方案,已经发布完善一个月了,
这次带来网友公司上线项目,微信小游戏的性能狗测试数据。
(感谢网友提供的测试数据,尊重他公司的意愿,下面就没公开游戏截图和名字,仅拿提供的性能狗数据,进行对比分析。)

体验连接:仅作体验,性能源码为准

获取地址: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

>>> 98K 全系列作品链接

微信号

3赞

3.8.3也能用么,有什么端是被限制无法开启的么

本来就是在3.8.x 上做的,实测3.6以上都适用,目前支持h5小游戏。

原生支持有时间表么。。

大佬太牛啦!不知道是否方便分享下内存这块的对比数据呢?

未使用多纹理

已使用多纹理

两次对比数据

总结

多纹理合批设计之初,就没有大量消耗增加内存,
从上面数据看出差异不大,个别有差异,是因为,
测试是30分钟,两次打开的内容不可能完全一致,
这种偏差是可以存在,主要是看内存峰值和平均内存
以及内存的增长释放趋势。

3.x 多纹理合批 , 已支持原生