龙书得失:请读 DirectX 9.0c A Shader Approach 版
2013-01-07
读完龙书已两年,细节已忘,不做 DirectX / D3D 底层或引擎开发。恰时一小友问起学习游戏开发的书籍资料,便想起此书。
最开始按 Clayman 的《游戏程序员养成计划》学习图谱 http://www.cnblogs.com/clayman/archive/2009/05/17/1459001.html ,第一本便是此书。现反思,Clayman 的标题应为《游戏引擎程序员养成计划》,而自己内心所求的是《游戏开发者 / 制作者养成计划》,歪了路。
几处得失:
1. 读完龙书是做不了你当初想象中的 3D 游戏的。
2. 龙书对 Engine Programmer 和 Gameplay Programmer 都有意义,毕竟是 D3D 入门之入门,但读法上需有差异:引擎程序员需精研提炼为我而用,游戏性程序员应略读练习了解功能。
3. 请读 DirectX 9.0c A Shader Approach 版 http://book.douban.com/subject/2228878/ 。读完龙书一段时间后发现不对劲,那些图形学计算在哪里用呢(尤其光照),已有封装好 D3DX API 直接调用便可,岂不白学数学理论?
其实那些算式大量应用在可编程管线的 shader 中(现代游戏很少用固定管线)——手工编写代替 D3DX API 的等价实现。所以至少应该从龙书(第 1 版封面即龙书别名来历)的第 2 版 DirectX 9.0c A Shader Approach 版开始读(第 2 版之后都是可编程管线方法 http://d3dcoder.net/ ),目前有英文电子版但无中文版,龙书第 3 版 DirectX 10 版有汤毅于 2011-11 翻译的中文版电子版,但目前未出版。莫要读错了版本,尤其对志在游戏引擎开发方向。
4. 引擎开发的学习图谱。对于龙书除了 Clayman 的指导外,还有 Captain 的书评《我还是愿意尊它为龙书》比较实用 http://book.douban.com/review/4504528/ ,说明龙书读完后该做什么。
我承接龙书读的下一本是《Character Animation With Direct3D》 http://book.douban.com/subject/3863786/ ,感觉和龙书一气呵成读完,Clayman 和 Captain 的指导都提到此书,还有 acros 的书评《Animation 入门书》比较中肯 http://book.douban.com/review/5201144/ 。内容:2 章物理相关 (Ragdoll) + 1 章 AI 相关 (Crowd) + 1 章法线贴图 (Wrinkle Map) + 各章动画实现方法 (Skinned / Skeletal, Morphing / Facial, IK, Lip-syncing, Hair)。此书对引擎程序员迫切(精读),对游戏性程序员没有龙书迫切(闲时略读),读法和龙书相同。
以上和相关链接中的技能树(3D 引擎、动画实现)是针对引擎程序员的底层技术和引擎开发方向。
对于游戏性程序员需要修习的主技能并非如此,游戏性程序员应该把功夫花在对某种引擎的炉火纯青的使用之上,再根据自身发展方向修习其它技艺(可偏美术和设计),如 3D 建模(Technical Art 方向)。