周末在图书馆看到此书,发现竟是一位热爱游戏开发和编程技术的网上小友编写的,带着意外和兴趣略读了几章。
书是针对 Windows 游戏编程的初学者,包含从 GDI 到 D3D 的基本 API 用法和一些 3D 游戏图形基本功能,如粒子系统和天空盒。书中代码注释和概念说明清晰,语言风趣又热血,看得出作者的用心和对游戏开发事业充满了热情和斗志。
书偏厚,这是作者也提到的“事无巨细”的代价,其实目标再专注一些,一些如 GDI 的东西是可以裁掉的。游戏编程的初学者,可把这种巨量的信息看成是建立游戏编程的知识覆盖,为自己反思后选择更精益和实用的知识打好基础。
我认为验证个人真正掌握知识有两种方法:第一种是将自己学到的讲给不懂的人听;另一种是应用知识生产出实物。作者将自己在游戏编程路途上所学所思整理出详尽的学习地图,用浅显易懂的文字告诉后来的人,首先对他自己就是一件有意义的事,如作者所道“对往日拼搏的一种纪念”。
这里是我对面向初学者的游戏编程书籍的一般建议:
如果能多一些像第 9 章的回合战斗示例程序——一个可以“玩”的程序例子,对初学者的成就感和继续前进将有帮助。Derek Yu 说过:当你做一个可以“玩”的东西时才表示你“开始做游戏”,而其它的一切只是“准备开始” <http://makegames.tumblr.com/post/1136623767/finishing-a-game>。可以一个完整的游戏为书的最终目标示例,游戏各功能的实现和所用技术在各章详述。
有时我想当时学了如此书所示的 D3D 基本固定管线 API 究竟能做什么 3D 游戏,还要保证它有起码的游戏趣味?其实,游戏设计思想并不过分受限于技术。比如学完这些琐碎的 API 后可以做一个:太空环境的第三人称飞行射击游戏:
角色有飞船、敌舰、小行星资源、母舰和中立的太空平台等,这便用到模型载入、光照甚至动画技术。
飞船和敌舰的攻击、对小行星资源的采集则用到碰撞检测、粒子系统。
太空背景用到天空盒,太空平台用到地形技术。飞船在太空是飞行控制,而降落到平台上是陆地控制,便用到镜头和输入控制。
最后,在基本的游戏规则上细化,比如敌舰的攻击方式、母舰的补给等。
这里只是一个游戏 Idea,目的是让游戏编程初学者的“野球拳”也有用武之地,培养在游戏开发职业道路上持续前进的动力。
P.S.
看到封底作者带有稚气的脸庞,会心一笑。勿忘初心。