最近在读《游戏引擎架构》这本书,虽然感觉理论颇多,而且很多很多东西都看不懂,不过还是简单的把一些感觉很好的思想和方法或者概念记录下来。
1. 关于各个部件初始化,一个最简单粗暴的办法就是将各个部件按顺序排列起来,不但可以方便的看到初始化顺序,而且修改也十分容易。
2. 关于内存分配:
a) 游戏中最常见的法则是-维持最低限度的堆分配,并且永远不在紧凑的循环中使用堆分配。
b) 定制的内存分配器,先预先申请一大块内存,然后构建自己的内存分配器(stack allocator-堆栈分配器或者 池分配器, 单帧分配器,双缓冲分配器)
c) 高效能的代码体积越小越好,关键代码中避免函数调用,如果要调用该函数,最好将该函数放在调用函数附近,尤其不要放到其他编译单元中!谨慎使用内联函数,过多的内联会使代码体积过大,关键代码不能完全装入内存,导致命中失败。
3. 关于迭代器,最好使用前置递增,即++p,后置递增要备份其值,会导致性能损失。
4. 运用stl,但是要慎用。
5. 字符串相关:外部字符串涉及到本地化问题,需要考虑翻译的情况。内部字符串需要考虑性能问题,关于一个对象命名为一个字符串,但是比较或者查找这个字符串是一个很大的性能开销。
6. 唯一标识符:GUID <globally unique identifier>游戏中的对象都有一个全局标识符,一般为对象资源的