普通小游戏运行时优化建议
收藏
我的收藏性能优化是 功能,表现,时间,空间 等方面的权衡
FPS
FPS(Frames Per Second) 越高,游戏感觉越流畅。如果小于30,那玩家会感觉到卡顿。所以应当争取,在绝大多数机型上,FPS保持在30帧以上。
受到手机的限制,平台的限帧是60。并且提供了限帧接口,如果游戏对画面的流畅度要求并不高,建议限制在30,以保证长时间运行下手机不发热。
CPU 性能优化
绘制调用(draw call) 次数过多,游戏循环中计算量过大,都会造成 CPU 性能下降,尽量减少游戏中的总绘制调用 次数,应该尽可能的使用批量绘制。
一般有以下几种优化方案:
- •合并网格:将多个相同材质的网格合并成一个大的网格,减少渲染调用次数。
- •使用图集:将多个小的纹理合并成一个大的纹理图集,减少纹理切换次数。
- •使用批处理:将多个相同材质的物体放在一个批处理中一起渲染,减少渲染调用次数。
- •使用GPU实例化:使用GPU实例化技术,将多个相同模型的物体实例化渲染,减少渲染调用次数。
- •减少透明物体:透明物体的渲染需要进行混合操作,会增加DrawCall的次数,可以尽量减少透明物体的数量。
- •使用静态批处理:将不会发生变化的物体进行静态批处理,减少渲染调用次数。
IO操作
当玩家玩游戏时,要尽量避免 IO 操作,尽可能预加载图集、音频、TTF字体等
运算优化
- •不要在游戏循环中进行繁重的计算操作,因为这可能造成每帧 60 次的大量计算,性能消耗大。
- •考虑使用worker,利用多线程能力,进行异步计算。
GPU 性能优化
一般来说, 2D 游戏,没有复杂的着色器,基本不会遇到 GPU 性能问题。但是过度绘制的问题仍然存在,如果过度绘制较多,将会消耗大量带宽,进而降低 GPU 性能。
内存优化
- •使用合适的的压缩纹理,参考各引擎的纹理压缩的支持情况
- •及时释放使用不到的资源,内存紧张时,限制资源的预加载
- •在场景切换的时候主动调用
tt.triggerGC
主动清理内存
其他性能优化建议
- •始终使用批量绘图,将同一图层中的精灵图像打包成一个大的图集
- •为避免加载资源带来的卡顿,考虑资源预加载
- •为避免GC带来的卡顿,对频繁使用的对象,使用对象池
- •使用烘焙光照,而不是动态光照
- •避免使用复杂的像素着色器
参考资料: