绘图优化:
1、脏矩形:每次都重绘整个背景图,其实是非常浪费的,前后两帧的图其实只有很少的一部发生了变化,因此可以只重绘变化的部分。这是一种常用的绘图优化方式,需要注意的是,android用了双缓冲,也就是说,使用脏矩形的时候,需要连续绘制两次才能完成对surface的刷新。
2、卷屏:这是常用的一种方法,缓存整张背景图,抽象出一个可视窗口,仅显示窗口中的内容,窗口的移动方向与sprite相同,与背景运动方向相反。android游戏背景图的分辨率一般与屏幕的相同,这种方法很少会被用到。
引擎优化:
1、流水作业化资源:简单来说,就是整合资源,不用的资源就及时释放,需要用到的资源再加载,类似流水线生产过程。比如,游戏加载过程中,当前关卡(场景、模式等等)使用不到的音乐或者图像资源就全部释放,仅加载需要用的资源;用不到的线程,不要让它休眠,一定要把它干掉;如果有的资源只用得到一部分,那么就拆解开来,仅加载需要的部分。
2、状态转移逻辑:游戏开发前一定要想清楚状态转移,冗余的状态变化将损耗框架的整体性能,对游戏流畅性的影响以及后期修改的成本往往是远远超出预期的。不要怕费力,一定要认真优化状态转移过程。此外,activity之间切换、ui线程和游戏线程之间的切换,都是非常花费时间的,应该尽力避免。
游戏逻辑优化:
1、预处理:尽可能地预处理游戏逻辑中的运算。比如游戏中经常要用到随机数,就应该在游戏开始之前,生成足够的随机数供游戏逻辑调用,千万避免使用系统自身的rand()函数。这种优化方式难度比较大,但是往往是突破瓶颈的最有效手段。
2、算法优化:这个没有什么好多说的,算法功底和经验积累很重要,单干搞不定的,赶快找同事帮忙。
3、语法优化:语法对运行速度也有很大影响,比如for循环,不同的写法,时间开销差别极大