通俗易懂的 GDI 和 D3D 编程入门_逐梦旅程:Windows游戏编程之从零开始书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 逐梦旅程:Windows游戏编程之从零开始 > 通俗易懂的 GDI 和 D3D 编程入门
Breaker Zhao 逐梦旅程:Windows游戏编程之从零开始 的书评 发表时间:2014-09-17 20:09:01

通俗易懂的 GDI 和 D3D 编程入门

周末在图书馆看到此书,发现竟是一位热爱游戏开发和编程技术的网上小友编写的,带着意外和兴趣略读了几章。

书是针对 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.
看到封底作者带有稚气的脸庞,会心一笑。勿忘初心。

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“通俗易懂的 GDI 和 D3D 编程入门”的回应

Breaker Zhao 2015-04-26 23:12:24

@执着

重要的是根据自己的目标和时间安排,选择符合自己的阅读方法。

对于不同的游戏开发者,也有不同的偏向和特长。

比如 Spelunky 的作者 Derek Yu 就鼓励使用成熟的引擎,把重心放在游戏内容的设计。

而程序员出身的 Braid 的作者 Jonathan Blow 就善于不借助已有引擎,而使用底层的 API 开发游戏。

但是同样出身程序员的《模拟城市》系列的作者 Will Wright 却告诉我们了解游戏的整个制作过程(哪怕用 Flash 工具)是最重要的。

如果你的目标是做游戏产品,而不是游戏引擎。

那么你可以略读或跳着读这本书(自己感兴趣的章节),甚至不读。

而自己现在想或想学开发游戏。那么最好的方法之一,就是做出一个让自己也感觉有乐趣的游戏。

你可以先有一个具体的游戏想法,做出它的“纸上原型”。

这是一个游戏性设计的最初阶段(也可能要迭代多次),有很多原则和设计方法学,有书可读,也可以根据好的游戏自己思索和提炼。

这里是两个最基本的原则:

1. 提炼核心的游戏机制。比如超级马里奥就是跑-跳-投作用。

2. 把握好游戏玩家操作记忆的复杂程度。

这里只是宽泛的说,根据你要做的游戏的规模、类型,都会有很大的不同。

把这样的原型在纸上和脑子里演练,需要让它逐渐的稳定和明确。

于是你有了这份最原始的游戏设计文档。

然后,根据这个设计文档的复杂程度,才能开始做使用游戏引擎开发的可行性选择。

或者,这时你和有经验的开发者交流过你的设计文档,他们告诉你从底层 API 开发游戏是可行的,你这时再精度相关书籍。

泛泛而说,引擎都会缩短开发游戏产品的周期。

但引擎本身也需要投入时间学习和掌握。所以选择一个通用型引擎就比较保险。(指机能要求不高、能做各类游戏、方便移植到多个平台)

另外商业引擎都比较复杂,没必要掌握它的每个功能后才开始做“你的游戏”,就像你没必要知道 Photoshop 的每个按钮和功能才能画 CG 一样。

所以你根据要做的游戏和自己的已有能力,按需学习。

比如,我会 3ds Max,就没有再学 Unity 内置的和基于插件的动画功能。

甚至是拿 Max 做 2D 的动画序列,因为我觉得 Max 已经可以解决问题了。

希望能帮助你。

执着 2015-04-25 17:52:56

前辈你好,我是一名大四的实习生,目前的工作是cocos2d-js游戏开发,学习cocos2d引擎好几个月了。想请问一下,我想要的方向是游戏开发而不是游戏引擎开发。那么这本书适合我吗? 因为我看到作者本身也去研究u3d引擎了。 我是很想知道 学做游戏是否单单用引擎不行?能否结合你的工作经验帮助下我。 求回复,谢谢前辈。