抖音开放平台Logo
开发者文档
控制台

小游戏发热优化

收藏
我的收藏

优化的重要性和目标

发热问题是小游戏性能优化中的一个关键方面。
    发热会导致手机降频运行,进一步导致游戏帧率下降、卡顿,甚至出现闪退等现象。
    发热会极大地影响玩家的游戏体验,降低玩家游戏时长和留存。
优化发热问题的目标在于降低设备在运行游戏时的功耗,提高游戏的流畅性和稳定性。具体而言,要通过优化游戏代码、资源管理、图形渲染等方面,实现高效的性能表现,让玩家能够在长时间的游戏过程中享受流畅、稳定的体验。

发热原因

手机发热,都来源于硬件资源的使用,主要的有CPU,GPU,网络。对应要优化的游戏计算部分有
    每帧要运行的代码的效率
    每帧渲染的图形的处理
    持续的网络请求或IO请求

分析和优化策略

降低 CPU 使用率

    限帧:如果游戏能够在大多数机型上跑60帧,那么说明单帧计算耗时没有问题。此时如果游戏对实时性没有很高的要求,降低游戏帧率到30帧,是较为通用的能够减少cpu计算的手段。(如果本身游戏已经较为卡顿,那么该设置方法意义不大)tt.setPreferredFramesPerSecond_小游戏_抖音开放平台
    检查骨骼动画的数量及做法,是否有较多的Spine的骨骼动画更新计算;
    如果有较多的物理计算,考虑修改物理引擎迭代计算的参数,降低刚体迭代的数目等
    针对Profiler的Top10函数进行优化,根据性能堆栈定位性能根源并进行优化;
    使用对象池来管理对象的创建和销毁,减少频繁的内存分配和释放,避免频繁的垃圾回收。

降低GPU使用率

    看看纹理的一些设置是否合理,比如是否压缩、是否开启Mipmap,这两项通常都是需要设置成开启的。还可以查看是否有消耗高的后处理操作
    通过LOD,减少模型细节,降低渲染质量,减少光照。
    合并drawcall,提前烘培,使用更简单的shader,关闭一些特效,等。根据游戏情况做优化。

降低IO

控制网络流量。游戏中如果有边玩边下的功能,可以控制当游戏处于战斗等本身消耗比较大的场景时,停止下载。游戏比较闲置(如只在进行一些简单的UI操作)时再重新开始下载。

使用分包功能

对于基于webasmmbly的游戏,编译时会占用较高的CPU,通过分包功能,减少首包,能优化发热情况。

iOS上使用高性能/高性能+模式