求教游戏发烫问题怎么解决,请大家不吝支招

最近公司的游戏也快完成了,但碰到一个问题,就是手机玩起来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、额外的资源加载问题,我们上的是百度智能小程序,有会发现不少资源加载卡死情况,就是即没有加载成功也没有加载失败的回调,这块不知引擎方是否有对应方案?

以上就是我们游戏现在的一些情况,请大家不吝赐教

1赞

子弹必须要使用物理组件吗?如果自己写碰撞逻辑会不会好点呢?

顶你个肺 上去

超级大招:闲置30帧,碰撞60帧

正解
我之前写弹幕游戏
自己做屏幕分区碰撞检测
采用横向纵向距离判断替代碰撞
在子弹达到3000的情况下
依然有很好的碰撞效果

是的,我们也在考虑这个问题,接下来正着手去掉碰撞组件,用自己的实现代替

不要用碰撞组件,逻辑层去判断是否碰撞,表现层更新表现,逻辑层用20或者30帧,表现层60帧,这样又会有个问题,插帧,不过性能会有比较大的优化

嗯,曾经看过部分游戏时这么干过,表现出来就是有规律一顿一顿的感觉,但游戏其实还是流畅的。我们30帧的表现层也试过,其实也是在流畅范围之内,也是可以接受的。
我们今天就着手去掉碰撞组件试试看,结果我会在这里公布

首先感谢上面各位的意见。接上次的贴,我已经将碰撞组件去掉了,替换成自己的实现。在碰撞策略上,根据具体游戏的情况,加了较多的前置条件,如在什么条件之下才允许检测碰撞等等。先说下机型的实际表现:总体来说,在大部分机型上的表现明显较之前好,流畅度也提升了,发热情况在开发人员自己的手机上,有减缓,但发热依然有。此外,原先通过google profiler能定位到的碰撞组件的消耗由于替换掉了,自己实现的这块已经几乎可以忽略了。
总体来说,虽然不能说革命性的提升我们这款游戏的性能,但改善也是不小。

4赞