小游戏发热优化
收藏
我的收藏优化的重要性和目标
发热问题是小游戏性能优化中的一个关键方面。
- •发热会导致手机降频运行,进一步导致游戏帧率下降、卡顿,甚至出现闪退等现象。
- •发热会极大地影响玩家的游戏体验,降低玩家游戏时长和留存。
优化发热问题的目标在于降低设备在运行游戏时的功耗,提高游戏的流畅性和稳定性。具体而言,要通过优化游戏代码、资源管理、图形渲染等方面,实现高效的性能表现,让玩家能够在长时间的游戏过程中享受流畅、稳定的体验。
发热原因
手机发热,都来源于硬件资源的使用,主要的有CPU,GPU,网络。对应要优化的游戏计算部分有
- •每帧要运行的代码的效率
- •每帧渲染的图形的处理
- •持续的网络请求或IO请求
分析和优化策略
降低 CPU 使用率
- •限帧:如果游戏能够在大多数机型上跑60帧,那么说明单帧计算耗时没有问题。此时如果游戏对实时性没有很高的要求,降低游戏帧率到30帧,是较为通用的能够减少cpu计算的手段。(如果本身游戏已经较为卡顿,那么该设置方法意义不大)tt.setPreferredFramesPerSecond_小游戏_抖音开放平台
- •检查骨骼动画的数量及做法,是否有较多的Spine的骨骼动画更新计算;
- •如果有较多的物理计算,考虑修改物理引擎迭代计算的参数,降低刚体迭代的数目等
- •针对Profiler的Top10函数进行优化,根据性能堆栈定位性能根源并进行优化;
- •使用对象池来管理对象的创建和销毁,减少频繁的内存分配和释放,避免频繁的垃圾回收。
降低GPU使用率
- •看看纹理的一些设置是否合理,比如是否压缩、是否开启Mipmap,这两项通常都是需要设置成开启的。还可以查看是否有消耗高的后处理操作
- •通过LOD,减少模型细节,降低渲染质量,减少光照。
- •合并drawcall,提前烘培,使 用更简单的shader,关闭一些特效,等。根据游戏情况做优化。
降低IO
控制网络流量。游戏中如果有边玩边下的功能,可以控制当游戏处于战斗等本身消耗比较大的场景时,停止下载。游戏比较闲置(如只在进行一些简单的UI操作)时再重新开始下载。
使用分包功能
对于基于webasmmbly的游戏,编译时会占用较高的CPU,通过分包功能,减少首包,能优化发热情况。
iOS上使用高性能/高性能+模式