一本学习3D游戏引擎的好书
2014-02-27
因为前几年工作当中接触过一些计算机图形方面的基础内容,所以平时闲暇之余对于游戏开发也就有些好奇。年前听说Milo Yip翻译的新书《游戏引擎架构》要上市了,所以就有心想买来一读,满足一下好奇心。除此之外,出于敬仰译者在对待技术方面的严谨态度,除了拜读以外,也希望能够收藏此书。
上上周的周末,拿到了此书,接下来花了一个多星期的时间通读了一遍。因为自己并不是做游戏开发的,所以这里只是谈一谈自己的阅读感受,仅供大家参考。
从目录来看,本书分为五个部分。
第一部分为基础部分
第一章导论,属于全书的概览。1.5小节的一张运行时引擎架构图基本展示了整本书中二、三、四部分所要讲解的主要内容。本章接下来的小节,依照这张架构图从下往上依次先做了简短的介绍,以此作为全书的导论。读完本章之后,整体浏览一下本书的目录,会发现整本书的内容,基本上就是遵照这张图从下往上依次讲解的,编排思路非常清晰。
哦,从本章开始,全书有一个看似不起眼的部分对我帮助非常大,那就是整本书的译注。整本书中,译注非常的翔实。对我这个游戏开发的外行人来说,在我阅读整本书的过程中,译注除了辅助我解释一些专业词汇以外,还包括一些本书以外的扩展知识。比如一些技术的背景知识,对于原书作者一些不恰当观点的纠正,以及对于原书中一些过时的技术做一些更新提示。总之,译注真的是本书的一大亮点,阅读的过程中千万不能错过。
第一部分接下来的二、三、四章,主要就是介绍学习本书后面章节所需要的一些基础知识。
第二章开发工具的讲解以Windows平台的Visual Studio为主,以及在游戏开发中常使用的工具做了介绍。或许是因为自己平时用Mac的原因,所以对这部分不太感冒,只是做了简单的了解。:P
第三章对于C/C++的相关知识做了回顾。除了C++的基本语法以外,对于计算机当中数值的讲解以及C++的内存布局的讲解还是蛮重要的,因为这直接影响到理解本书第二部分第五章内存管理的内容。对于这部分,我自己觉得对于C++不太好的同学也不用太担心,因为这部分的讲解采用了图文并茂的方式,讲解思路非常的清晰,而且每个知识点都是从最简单的开始,门槛已经很低了,你需要做的就是集中注意力,勇敢的紧跟作者的思路就OK了。而且,整本书采用LaTeX排版,除了中文的文字看起来很爽以外,代码的排版看起来也非常的舒服。
第四章介绍游戏开发中涉及到的三维数学。这一章讲解了3D游戏开发过程中常见的数学运算,包括向量、矩阵等等。几乎都是简单的介绍基本的运算原理,绝对没有搞一堆看起来“高大上”的数学公式。这部分最重要的就是仿射矩阵,包括仿射矩阵的平移、旋转和缩放等,不管是后面的渲染引擎,还是碰撞物理引擎,或是引擎的局部优化,都会涉及到矩阵运算原理的知识。
从第二部分从低阶引擎系统开始,就算是正式开始讲解游戏引擎。
第五章讲解游戏支持系统,这部分算是游戏引擎的最底层了。所以会有很多C++简短的代码示例片段。对于内存管理,包括了堆栈分配器,双端堆栈分配器,池分配器,含对齐功能的分配器,单帧和双缓冲分配器等等,当然,还有如何处理内存碎片的问题。在容器这部分介绍了一些常见C++类库在游戏开发过程中的优劣。例如,STL、Boost、Loki等等。这部分感觉如果C++内存布局那部分能理解的话,理解这些基本原理应该不是问题,而且这部分的讲解很多也是图文并茂的,很直观。
第六章主要是讲资源管理。资源管理主要分为两大部分,一部分是离线资源管理,另一部分就是运行时资源管理。对于运行时资源管理,也涉及到了内存管理。具体的细节这里就不展开介绍了。
好像写的有点太过详细了……后面的介绍简短一些吧。
第七章讲游戏循环及实时模拟。主要在讲游戏的主循环渲染。介绍了几种常见的循环渲染的方式,对游戏当中的时间问题做了详细的讲解,以及不同游戏平台下,多处理器的游戏循环等。
第八章讲人体学接口设备。这一章主要就是讲解游戏外设,这一章印象比较深刻的一点是跨平台的HID(human interface device)系统。
第九章讲调试及开发工具。从这章的目录中就可以知道主要在讲哪些内容。对于我这个游戏开发的外行人来说,没有太多的感悟,:P
第三部分图形及动画
第十章讲渲染引擎。这章大概分为三个部分,第一部分在讲解3D渲染相关的基本概念。第二部分讲解渲染管道。第三部分主要是讲解光照。在第二部分讲解渲染管道的过程中,作者结合游戏开发,在流程上,把产生几何数据的工具,资产调节管道,应用程序这三个阶段加入了进来。这一点把游戏开发的整体流程考虑了进来,而非像普通图形学书籍那样,只讲解几何处理,光栅化部分。当然,对于渲染引擎来说,这几十页的内容是远远不够的,所以也可以看出,本章讲的其实是一些比较基础的知识。当然,为了让读者能够深入学习,本章最后特意留有一个小节,作为延伸阅读。译者也在章节过程中穿插推荐了一些不错的读物。
第十一章讲解动画系统。本章主要以骨骼蒙皮动画为主。具体如何,可以从译者的译序中也可以看出,本章和第十四章属于本书特别出彩的章节,想必应该不用多说了吧,:)
第十二章讲解碰撞及刚体力学。从题目也可以看出,本章分为三大部分,一部分为碰撞检测,第二部分为刚体动力学,最后一部分是整合到游戏引擎。在碰撞检测系统中,介绍了碰撞原型,碰撞检测及解析几何,这当中讲解了GJK算法。碰撞查询,碰撞过滤等。刚体动力学中主要包括运动学方面的知识。
第四部分游戏性
这部分就不分章说了。关于这部分,不管是云风的推荐序1,还是译者的译序,都特别推荐了这部分。
第五部分是总结
回头来看,本书适合当作学习3D游戏引擎的教材,既可以了解游戏引擎的全貌,又可以根据书中提供的阅读资料深入学习。不管是入门还是进阶,都可以参考此书。而且译者的翻译非常流畅,使用LaTeX排版的阅读体验还是非常爽的 :)