最近公司的游戏也快完成了,但碰到一个问题,就是手机玩起来5分钟左右就很烫,这个在IOS上非常明显。我们的游戏时射击类游戏,我们自己优化过几轮,分别是基于采用降drawcall(合图集,采用bmfont等措施),对象采用对象池。但无奈于对象较多,即使这些措施采用下来,虽然有不少的效果,但发热现象依然还是较为厉害。以下是我们游戏的做法及一些主要指标性数据:
1、对象数较多(一般而言,200个子弹对象在场),每个子弹都挂载了BoxCollider组件(据说BoxCollider会导致发热,但没测试过)
2、游戏中的drawcall,主场景(不包含弹窗UI)大致在40~60之间
3、碰撞我们采取了分组,只会指定碰撞组与组之间会有碰撞,同一时间碰撞的对象大概是所有对象的1/5。
4、测试的机型情况:
(1)iPhone 8及以上,都较为流畅45-60帧都是妥妥的
(2)iPhone7看不同人的机型,有些体验和iPhone8一样,有些又感觉到卡顿,这个分析下来,肯定是测试人员的手机应用开的很多的结果;
(3)iPhone 5s大概在17-20帧之间,虽然要求连iPhone 5c都要适配(这个,感觉力不从心呀,好难做到)
5、子弹对象我们有测试过,一旦降下来,确实效果非常明显,但这样做,游戏设计就要改变很多。
6、我们游戏中的角色对象都是dragonBones,实际上用chrome profiler分析下来,这块也是性能开销的大头。本想尝试用dragonBones的SHARED_CACHE模式来提高性能,但发现采用了之后,dragonBones的帧事件又没有了,可能这种模式不支持,这个我没找到相关资料证实这一点。
7、额外的资源加载问题,我们上的是百度智能小程序,有会发现不少资源加载卡死情况,就是即没有加载成功也没有加载失败的回调,这块不知引擎方是否有对应方案?
以上就是我们游戏现在的一些情况,请大家不吝赐教