【不定期更新】游戏开发中的一些良好习惯与技术技巧
平时programing时想到和积累的一些小技巧,在这里写成一篇日志,欢迎拍砖。
<技巧一>
使用二进制位移运算来进行乘数是2的幂的简单整数乘法(除法),因为所有的数据在计算机中都是以二进制储存,把一组位元向左或右移动就分别等价于乘法和除法运算.
<技巧二>
不要疯狂地写太多的class,也不要把任何东西都overload(重载),说到底,简单而且直观的代码是最好的程序,也最容易调试。
<技巧三>
尽量使用32位变量而不是用8位变量或16位变量,目前的主流系统是32位,这就意味着它们并不喜欢8位或者16位的数据字。实际上,由于高速缓存和其他相关内容存储器的寻址变得较不规律,较小的数据可能会使执行效率下降。
<技巧四>
经常注释你的代码。为了得到整洁,有良好的注释代码,一点点额外的打字绝对是值得的。
<技巧五>
以类似RISC(精简指令集计算机)的方式来编程,尽量简化你的代码。你的程序可以长些,但尽量使用简单指令,使程序相对编译器更加简单些。
<技巧六>
在开始你的游戏项目之前,应当进行一下组织工作。使用合理的文件名和目录名。提出一种一致的变量名的约定,尽量对图形和声音数据使用分开的目录,而不是将所有的东西都一股脑儿放到同一个目录中。
<技巧七>
设计高效率算法,没有任何一种汇编语言能使复杂度为O(n2)的算法运行得很快,更好的做法是使用清楚,高效的算法而不是蛮力型和穷举型的算法。
<技巧八>
不要在编程过程中优化代码,这通常只是浪费时间。建议你等到主要代码块或整个程序都完成后才开始着手进行繁重的优化工作,这样做最终会节省你的时间,因为你不必对一些含义模糊的代码进行不必要的优化。当游戏的coding基本完成的时候,才到了性能测试(profiling)和查找需要优化的问题的时候,另一方面,程序代码要注意错落有致,不要写得杂乱无章。
<技巧九>
不要为简单的对象定义太多的复杂的数据结构,链表结构很好用,但这并不意味着当你所需要的其实是大约有256个元素的固定数组时候,你也要使用链表。这时候,我们只需要为其静态的分配内存即可。视频游戏编程中90%的部分都是数据操作,所以数据尽可能简单和可见,这样才能够迅速地存取它,随意操作它,应当确保你的数据结构适合你所真正要解决的问题。
<技巧十>
使用内联函数,通过使用inline指示符来完全摆脱函数调用,你甚至能够改进全局变量的使用时机,inline指示符指示编译器用函数体代码去替换函数调用,这样做无疑会使编译后的程序变得更大,但却有效地提高了运行速度。
<技巧十一>
如果你知道自己酷酷的跑车将要行驶上一段坎坷的荆棘路,最好的做法是停下来,然后掉头绕路而行。有很多人沿着一条很差的编程路线走着,直到在糟糕的代码堆中葬送了自己。能意识到自己所犯的错误并重新编写500行的代码,比写一个总是令人不快的代码结构要好得多。因此,如果在coding中发现问题,就要重新评估并确保你节约的时间是值得的。
<技巧十二>
不要怕使用全局变量,许多视频游戏不让你对时间要求严格的函数使用参数,而是使用一些全局变量来专递参数,巧妙地避开很多未知的问题。
<技巧十三>
经常备份你的工作。在coding游戏代码时,需要相当繁琐地锁定代码库中的代码,重写一个排序算法还是比较容易的,但是要重写角色AI或者重写碰撞检测则是困难得多了。
<技巧十四>
多用template模板来减少重复的代码,这样可以节省不少的代码量。
【此文章不定期更新~~~】