龙书得失:请读 DirectX 9.0c A Shader Approach 版
读完龙书已两年,细节已忘,不做 DirectX low-level 引擎开发。恰逢一小友问起学习游戏开发的书籍资料,便想起此书。
最开始按 Clayman 的《游戏程序员养成计划》学习游戏编程,第一本便是此书(俗称 DirectX/D3D 龙书)。现在反思,那篇文章标题应为《游戏引擎程序员养成计划》,而自己内心所求的是《游戏制作者养成计划》,这两者之间既有联系又有区别。
几处得失:
1. 读完龙书是做不了你当初想象中的 3D 游戏的。
2. 龙书对引擎程序员 (Engine Programmer) 和游戏性程序员 (Gameplay Programmer) 都有意义,毕竟是 D3D 入门书。但读法上需有差异,引擎程序员需精研提炼为己所用,而游戏性程序员应略读了解功能。
3. 请至少从这个版本开始读《Introduction to 3D Game Programming with DirectX 9.0c: A Shader Approach》
读完龙书后出现一个疑问:书中的那些图形学数学公式在哪里用呢(尤其是 T&L 变换与光照),既然已有封装好的 D3DX API,直接调用即可,岂不白学数学公式?
其实那些数学公式大量应用在可编程管线 (Programmable Rendering Pipeline) 的 shader 程序中,现代游戏很少使用固定管线 (Fixed Function Rendering Pipeline)。也就是说,通过手工编写与特定 D3DX 功能等价的 shader 程序来替代 D3DX。所以至少应该从龙书的第 2 版《DirectX 9.0c: A Shader Approach》开始读。第 2 版之后的版本均采用可编程管线的方法。第 3 版 DirectX 10 版有汤毅于 2011.11 翻译的中文电子版(目前尚未出版)。对有志于游戏引擎开发的同学,莫要读错了版本。龙书的名字来自于第 1 版封面,而第 2 版之后就没有龙的封面了。
4. 引擎开发的学习图谱。对于读完龙书之后该做什么,除了 Clayman 的指导文章外,还有 Captain 的书评《我还是愿意尊它为龙书》也比较实用。
我承接龙书读的下一本书是《Character Animation with Direct3D》。龙书和此书可以一气呵成读完,此书内容包括:两章物理相关 (Ragdoll) + 一章 AI 相关 (Crowd) + 一章法线贴图 (Wrinkle Map) + 各章动画实现方法 (Skinned/Skeletal, Morphing/Facial, IK, Lip-syncing, Hair)。有志于游戏引擎开发需精读,而有志于游戏性编程可以略读。
以上和相关链接中的技能点(3D 引擎、动画实现)是针对引擎程序员的主要技能。
游戏性程序员需要修习的主要技能有所不同,游戏性程序员应把功夫花在对某种引擎的炉火纯青的使用之上,再根据自身发展方向修习其它关联技能,如偏美术可学习建模动画(Technical Artist 方向),偏策划设计可学习数值平衡设计(数值策划)等。