一个游戏程序员的学习资料

一个游戏程序员的学习资料

想起写这篇文章是在看侯杰先生的《深入浅出MFC 》时, 突然觉得自己在大学这

几年关于游戏编程方面还算是有些心得 因此写出这篇小文, 介绍我眼中的游戏

程序员的书单与源代码参考。一则是作为自己今后两年学习目标的备忘录, 二来

没准对别人也有点参考价值。我的原则是只写自己研究过或准备研究的资料 所

以内容无疑会带上强烈的个人喜好色彩, 比如对网络, 数据库等重要方面完全没

有涉及。因为自己主要对三维图形引擎, 人工智能算法, 脚本系统, 反外挂(反反外

挂? ^ ^)等方面感兴趣。这学期电脑都没联网了, 在岳麓山闭关修炼中(^ ^),

连这篇文章都得在学校图书馆电子阅览室 电影放映室 上传, 内容很多凭记

忆写出, 如有误差敬请订正。程序员应该在理论学习与实践编程中反复迭代 所

以学习资料是一回事 须知尽信书不如无书。

一、书籍

算法与数据结构

《数据结构 C 语言版 》——严蔚敏、吴伟民 清华出版社

我觉得其配套习题集甚至比原书更有价值 每个较难的题都值得做一下。

《Introduction to Algorithms》第二版 中文名《算法导论》

关于算法的标准学习教材与工程参考手册 在去年CSDN 网站上其翻译版竟然评

为年度二十大技术畅销书 同时《程序员》杂志上开设了“算法擂台”栏目 这

些溯源固本的举动 不由得使人对中国现今浮躁不堪的所谓“IT ”业又产生了一

线希望。这本厚厚的书 幸亏打折我才买得起。虽然厚达千页 但其英文通俗晓

畅 内容深入浅出 可见经典之作往往比一般水准的书还耐读。还能找到MIT

的视频教程 第一节课那个老教授嘻皮笑脸的 后面就是一长发助教上课了。

《C 语言名题精选百则 技巧篇》——冼镜光 机械工业出版社

作者花费一年时间搜集了各种常见C 程序段的极具技巧性的编程法 其内容都是

大有来头的 而且给出了详细的参考资料。如一个普通的Fibonacci 数就给出了

非递归解、快速算法、扩充算法等 步步深入 直至几无油水可榨。对于视速度

如生命 连一个普通的浮点数转化为整数都另辟蹊径以减少CPU cycle的游戏程

序员 怎可不看

《计算机算法基础 第二版 》—— 佘祥宣等 华中科大出版社

我看到几个学校的研究生拿它作教材 研究生才开算法 太开玩笑了吧 。这本

书薄是薄了点 用作者的话来说 倒也“精辟”。其实此书是《Fundamentals of

Computer Algorithms》的缩写版 不过原书出版太久了 反正我是没找到。

《The Art of Computer Programming》Volume 1-3

作者Donald E. Knuth是我心目中与冯. 诺依曼、Dijkstra 、Shannon 并列的四

位大师。这本书作者从读大学本科时开始写 一直写到博士时 十年磨一剑 足

见其下足了功夫。可作为计算机技术的核心——算法与数据结构的终极参考手

册。创新处也颇多 譬如常见的Shell 排序他在书中提出可用(3i-1)/2的间隔

这使其稍快于O(n1. 5)。当然这套书描述高度数学化 为此恐怕一般的人 我

最好还得先看一本数学预备书《Concrete Mathematics》 直译为混凝土数学

^ ^ 再说。可惜的是这套书才出到第三卷 并没有覆盖全部常见的算法内容。

不过好在对于游戏程序员来说 越常见的算法用得越多 这也不算是什么要命的

损失。

《STL 源码剖析》—— 侯捷 华中科大出版社

侯捷不用介绍了 华人技术作家中的旗舰 说其有世界级水准也不为过。这本书

我以为是C++与数据结构的葵花宝典 欲练此功 必先自宫 。也就是说 不下

几层地狱很难看懂 因为它要求的预备知识太多了 如STL 、数据结构、泛型编

程、内存管理都要很扎实 为此是不是还要看看有内存管理设计模式之称的

《Small Memory Software》这本书呢 但是一旦看懂 真会是所向披靡。

《Data Structures for Game Programmers》

每个数据结构的例程都是一个小游戏 还用SDL 库实现了一个算法演示系统。虽

然内容失之于浅 但起码让人了解了数据结构在游戏中的作用。

其实游戏程序并不比其它程序特殊 甚至要求基本功更加扎实 所以花时间做一

些看似与实际应用不甚相干的习题 对今后的工作是大有裨益的。而且有些应用

很广的算法 如常被人津津乐道的A*算法及其变种 牵涉到图的检索周游与分

枝-限界法 恐怕还得读一些艰深的论文才能充分明白运用 如Donald E. Knuth

的《An analysis of alpha-beta cutoffs 》。其实还有不少此类的好书 如《Data Structures and Algorithms in C++》、《Programming Pearls》、《More Programming

Pearls 》 算法珠玑 等 我却以为要先看严谨一点的著作 再看内容随笔一点

的书。

汇编

《IBM-PC 汇编语言程序设计》第二版

国内经典教材。

《The Art of Assembly Language》

这本书足有1600页 噢

C 语言

《The C Programming Language》第二版

虽然篇幅短小 但每个例程都很经典。 我们老师开始拿它作教材 后面换为谭

小强的C 语言书 理由为 例子尽是些文本处理。我就纳了闷了 难道现代的计

算机程序不是将大量时间消耗在字符串与文本的处理上吗

C++

学过C 语言 再学C++ 先看这本《C++ Primer》的缩写版

《Essential C++》

对C++有个入门了解 再看

《C++ Common Knowledge: Essential Intermediate Programming》

就不会有什么重要的知识点完全不知所措了 接下来是

《The C++ Standard Library : A Tutorial and Reference》

标准库 当然主要是标准模板库的标准学习参考手册 然后最好平时边写程序边

参悟。

《Effective C++》等 我是说书名以形容词 + C++的那些书 计有七八本 慢慢看吧 罗马不是一日建

成的。

(《Essential C++》、《Effective C++》、《More Effective C++》、《Accelerated

C++》、《Effective STL》、《Exceptional C++》、《More Exceptional C++》、

《Imperfect C++》 虽然书名格式相似 但每一本都绝非马虎之作。)

谁说C++程序比C 程序要慢 那就请看下面

《The Design and Evolution of C++》

知其过去才能知其未来 才能应用。

《Inside the C++ Object Model》

揭露C++的编译器模型。

《Efficient C++ Performance Programming Techniques》

当算法优化已到极致 在运用汇编之前 最后还可看看此书 有时高级和低阶都

能做成相同的事情。

还有两本特别的书

《Modern C++ Design : Generic Programming and Design Patterns Applied》

作者想把设计模式和泛型编程结合起来 并写了个尝试提供一切的Loki 库来实

作, 不过其观点并未得到C++社区的普遍响应。尽管如此 本书仍称得上思想前

沿性与技术实用性结合的典范。

《C++ Template Metaprogramming》

把编译器当作计算器 本书介绍了Boost 库的MPL 模板元编程库。当然提到

Boost 库 对于游戏程序员不能不提到其中的Graph 库 有《The Boost Graph

Library 》一书可看。还有其中Python 库 号称国内首款商业三维图形引擎的起

点引擎就用了Boost Python 库。说实话我觉得起点引擎还是蛮不错的 那个自

制的三维编辑器虽然界面简陋 但功能还算蛮完善 给游戏学院用作教学内容也

不错。另有一个号称中国首款自主研发的全套网游解决方案。我看到它那个三维

编辑器 心想这不就是国外一个叫freeworld3D 的编辑器吗 虽然有点偏门 但

我以前还较劲尝试破解过呢。还把英文界面汉化了 大概用exescope 这样的资源修改软件就能搞定吧。我又心想为什么要找freeworld3D 这个功能并不太强大

的编辑器呢 仅仅是因为它便宜到几十美金 它唯一特别一点的地方就是支持

导出OGRE 图形引擎的场景格式 这样一想不由得使人对它图形引擎的“自主”

性也产生怀疑了。这样的“自主”研发真让人汗颜 只要中国还没封

sourceforge 这个网站 据说以前和freeBSD 网站一起被封过 国人就能“自

主”研发。

有人还会推荐《C++ Primer》《Thinking in C++》《The C++ Programming Language》

等书吧 诚然这些书也很好 但我总觉得它们太大部头了。还不如多花点时间看

看国外好的源代码。

Windows 编程

Operating System Concepts第五版

国内有些操作系统的教程其实就是它的缩写版。

《Windows 95 System Programming Secrets》

深入剖析了Windows 操作系统的种种种种 有人爱看《Linux 内核完全注释》

有人爱看《自己动手写操作系统》这样煽情的书 但我想作为商业的操作系统

把Windows 内核剖析到这地步也高山仰止了。

《Programming Applications for Microsoft Windows》第四版

先进程线程 再虚存管理 再动态链接库 最多讲到消息机制。作者在序言中说

“我不讲什么ActiveX, COM等等 因为当你了解了这些基础后 那些东西很快

就会明白 ”可以作为《Programming Windows》的先修课。

计算机体系

《Computer Systems : A Programmer’s Perspective》

和《The Art of Computer Programming》在我心中是计算机史上两本称得上伟

大的书 计算机组成原理 操作系统 汇编 编译原理 计算机网络等等课程汇

成这本千页的大书 因为计算机在作者眼中就是一个整体。

开源阅读

《Code Reading : The Open Source Perspective》

张大千临摹了几百张明代石涛的山水 画出的画以假乱真 后来他去敦煌潜心临

摹几年 回来画风大变 终成大家。程序员其实有40%的时间是在读别人的源代

码 侯捷先生说 “源码面前 了无秘密” 又说“天下大事 必作于细” 可

以与他的《上穷碧落下黄泉 源码追踪经验谈》参看。

MFC:

《深入浅出MFC 》

我实在以为没有看过侯捷先生的《深入浅出MFC 》的人多半不会懂得MFC 编程。

其实我是打算用一年多的时间写一个给游戏美工用的三维编辑器 顺便作为毕业

设计。图形库就用MFC 吧 反正也没得选择。如果要用wxWidgets 无非是猎奇而

已 还不是MFC 的翻版 当然它跨平台了。就象阻击手对自己枪械的零件了如指

掌一样 要想用MFC 写出非玩具程序的人一定要了解其内部构造。还有一本书叫

《MFC 深入浅出》 并不是同一本。

IDE:

《Microsoft Visual Studio 2005 Unleashed》

工欲善其事 必先利其器。当然我认为与其用形如Source Insight、Slick Edit、

Code Visualizer之类的代码阅读器、图形化工具 还不如用自己的大脑。但如

果你嫌打源代码慢的话 可以用Visual AssistX。如果嫌老是写重复相似的代

码的话 可以用Code Smith。单元测试可以用CppUnit Boost 库中的测试框架

也不错。有心情可以吧Visual Studio外接Intel 的Compiler 内嵌STLport

但不是大工程 性能分析没必要动不动就用下VTune 吧。

程序员之路

《游戏之旅——我的编程感悟》

云风大哥。在我心目中游戏程序员国外首推卡马克 国内首推云风。也许过两年

我会到网易当云风大哥的助理程序员吧。It ’s my dream. ^-^ 他写这本书

的时候本着只有透彻理解的东西才写出来 因此内容不会很酷新 但是相信我 每读一遍都有新的收获 主要还不是知识上的 因为知识是学无止境的 授人

以鱼不如授人以渔 精神上的启迪才是长久的。诚如经典游戏《仙剑奇侠传》的

主力程序员兼美术指导姚壮宪 人称姚仙 在序言中所说的“云风得到的只是一

些稿费 而整个中国民族游戏产业得到的将是一次知识的推动” 此言不虚矣。

《编程高手箴言》

梁肇新是豪杰超级解霸的作者 本来每个合格的程序员 Programmer , 而非

Coder 都应该掌握的东西 现在变成了编程高手的独家箴言。不知是作者的幸

运还是中国IT 业的悲哀。知识点还是讲得蛮多的 不过对MFC 的地位颇有微词。

我实在认为MFC 的名声就是那些不懂得用它的人搞臭的。不过作者的牢骚也情有

可原 每个具有创造力的程序员都应该不太喜欢framework 。

《Masters of DOOM: How Two Guys Created an Empire and Transformed Pop

Culture 》中文名《DOOM 启世录》

卡马克 罗洛斯 这些游戏史上如雷贯耳的名字。 现在卡马克已专注于火箭制

造上 罗洛斯则携妻回乡隐居 要不是没上过大学的卡马克和图 形学大师亚伯

拉罕的功勋 可能到现在游戏中还不知三维为何物。勿庸置疑 在计算机界历史

是英雄们所推动的。这本书真实的记录了这些尘世英雄的所为所思。

作为程序员的我对这几本策划与美工的书也产生了浓厚兴趣 以前搞过一两年的

3DS MAX插件编程 觉得用maxscript 还是好过MaxSDK 毕竟游戏开发中所多的

是模型场景数据的导入导出 大可不必大动干戈。

策划

《Creating Emotion in Games : The Craft and Art of Emotioneering》

在壮丽煊目的宏伟三维世界背后 在残酷的杀戮 动人心魄的情节背后 我们还

需要什么来抓住玩家的心 答对了 就是emotion. 真正打动人心的 才是深入

骨髓的。

《Ultimate Game Design : Building Game Worlds》 从名字可以看出 写给关卡设计师的 特别是讲室外自然场景的构建颇有可取之

处。

《Developing Online Games : An Insider’s Guide》

就象名为反模式的书讲软件团队运营一样 这本书讲商业运作多过技术。一个历

经艰难 现在盛大的游戏程序员 翻译了这本书。

美工

《Digital Cinematography & Directing》

数字摄影导演术 每当你在3DS MAX或者Maya 等三维创作软件中摆放摄影机

设计其运动轨迹时 你可曾想过你也站在导演的位置上了

《The Animator’s Survival Kit》

看着这本讲卡通角色运动规律的书 一边产生温习《猫和老鼠》的念头 一边继

续对前不久新闻联播中关于中国产生了某计算机自动卡通动画生 成软件报道的

蔑视 这条报道称此举可大大加快中国卡通动画的产量。我且不从技术上探讨其

是否是在放卫星 其实我知道得很清楚 前文已表 本人搞过一两年的 卡通动

画辅助软件编程 但计算机机械生成的动画怎可代替人类充满灵性的创作

《The Dark Side of Game Texturing》

用Photoshop 制作材质贴图 还真有些学问。

三维图形学

搞三维图形学首先还是要扎扎实实的先看解析几何、线性代数、计算几何的教材

后面的习题一个都不能少。国内数学书还是蛮好的。苏步青大师的《计算几何》

称得上具有世界级水准 可惜中国CAD 的宏图被盗版给击垮了。现在是我们接过

接力棒的时候了。It ’s time!

《Computer Graphics Geometrical Tools》

《计算机图形学几何工具算法详解》算法很多 纰漏处也不少。

《3D Math Primer for Graphics and Game Development》

浅易 可作为三维数学的“速食“。

《Mathematics for 3D Game Programming & Computer Graphics》第二版

比上面那本深入一些 证明推理的数学气也浓一些 可作为专业的数学书与编程

实践一个过渡的桥梁吧。内容涉猎也广 射线追踪 光照计算 可视裁剪 碰撞

检测 多边形技术 阴影算法 刚体物理 流体水波 数值方法 曲线曲面 还

真够丰富。

《Vector Game Math Processors》

想学MMX,SSE 吗 那就看它吧 不过从基础讲起的 要耐心哦。

DirectX:

《Introduction to 3D Game Programming with DirectX 9.0》

DirectX 入门的龙书 作者自己写的简单示例框架 后面我干脆用State 模式

把所有例子绑到一块儿去了。

《Beginning Direct3D Game Programming》

作者取得律师学位后变成了游戏程序员 真是怪也哉。本书虽定位为入门级书

内容颇有独特可取之处。它用到的示例框架是DXSDK Sample Framework 而不

是现在通行的DXUT 。要想编译有两种办法吧 一是自己改写成用DXUT 的。二是

找旧的Sample Framework。我又懒得为了一个示例框架下载整个早期版本的

DirectX 后面在Nvidia SDK 9.5中发现了。

《Advanced Animation with DirectX》

DirectX 高级动画技术。骨骼系统 渐变关键帧动画 偶人技术 表情变形 粒

子系统 布料柔体 动态材质 不一而足。我常常在想 从三维创作软件导出的

种种效果 变成一堆text 或binary 先加密压缩打包再解包解压解密 再用游

戏程序重建一个Lite 动画系统 游戏程序员也真是辛苦。

OpenGL:

《NeHe OpenGL Tutorials》

虽是网络教程 不比正式的书逊 本来学OpenGL 就不过是看百来条C 函数文档

的工夫吧, 如果图形学基础知识扎实的话。

《OpenGL Shading Language》

OpenGL 支持最新显卡技术要靠修修补补的插件扩展 所以还要配合

《Nvidia OpenGL Extension Specifications》

来看为上。

《Focus on 3D Models》

《Focus on 3D Terrain Programming》

《Focus on Curves and Surfaces》

顾名思义 三本专论 虽然都很不深 但要对未知三维模型格式作反向工程前

研读Geomipmapping 地形算法论文前 CAD 前 还是要看看它们为上 如果没从

别处得过到基础的话。

脚本

先看 《Game Scripting Mastery》

等自己了解了虚拟机的构造 可以设计出简单的脚本解释执行系统了。

再去查Python , Lua Ruby 的手册吧 会事半半功倍倍的。

《Programming Role Playing Games with DirectX 8.0》

一边教学一边用DirectX 写出了一个GameCore 库 初具引擎稚形。

《Isometric Game Programming with DirectX 7.0》

三维也是建立在二维的基础上 这就是这本书现在还值得看的原因。

《Visual C++网络游戏建模与实现》

联众的程序员写的 功力很扎实 讲棋牌类游戏编程 特别讲了UML 建模和

Rotional Rose。

《Object-Oriented Game Development》

套用某人的话 “I like this book.”

Shader:

要入门可先看

《Shaders for Game Programmers and Artists》

讲在RenderMonkey 中用HLSL 高级着色语言写Shader.

再看

《Direct3D ShaderX : Vertex and Pixel Shander Tips and Tricks》 用汇编着色语言 纯银赤金。

三大宝库

《Game Programming Gems》

我只见到1-6本 据说第7、8本也出来了 附带的源代码常有bug 不过瑕不

掩瑜 这套世界顶级游戏程序员每年一度的技术文集 涉及游戏开发的各个方面

我觉得富有开发经验的人更能在其中找到共鸣。

《Graphics Gems》全五本

图形学编程Bible 看了这套书你会明白计算机领域的科学家和工程师区别之所

在。科学家总是说 这个东西在理论上可行。工程师会说 要使问题在logN 的

时限内解决我只能忍痛割爱 舍繁趋简。

《GPU Gems》出了二本

Nvidia 公司召集图形学Gurus 写的 等到看懂的那一天 我也有心情跑去

Siggraph 国际图形学大会上投文章碰运气。

游戏引擎编程

《3D Game Engine Programming》

是ZFXEngine 引擎的设计思路阐释 很平实 冇太多惊喜。

《3D Game Engine Design》

数学物理的理论知识讲解较多 本来这样就够了 还能期待更多吗

人工智能

《AI Techniques for Game Programming》 讲遗传算法 人工神经网络 主要用到位数组 图算法。书的原型是根据作者发

表到GameDev.net 论坛上的内容整理出来的 还比较切中实际。

《AI Game Programming Wisdom》

相当于AI 编程的Gems 。

《PC 游戏编程(人机博弈) 》

以象棋程序为蓝本 介绍了很多种搜索算法 除了常见的极大极小值算法及其改

进--负极大值算法 还有深度优先搜索以外。更提供了多种改进算法 如

Alpha-Beta,Fail-soft alpha-beta,Aspiration Search, Minimal Window

Search,Zobrist Hash,Iterative Deepening,History Heuristic,Killer

Heuristic,SSS*,DUAL*,MFD and more.琳琅满目 实属难得。

反外挂

《加密与解密(第二版) 》 看雪论坛站长 段钢

破解序列号与反外挂有关系么 不过 世上哪两件事情之间又没有关系呢

《UML Distilled》 Martin Fowler

很多人直到看了这本书才真正学懂UML 。

Martin Fowler是真正的大师, 从早期的分析模式, 到这本UML 精粹, 革命性的重

构都是他提出的, 后来又写了企业模式一书。现在领导一个软件开发咨询公司

去年JavaOne 中国大会他作为专家来华了吧。个人网站 MartinFowler.com

设计模式三剑客

《Design Patterns Elements of Reusable Object-Oriented Software》

《Design Patterns Explained》

《Head First Design Patterns》

重构三板斧

《Refactoring : Improving the Design of Existing Code》

《Refactoring to Patterns》

《Refactoring Workbook》

软件工程:

《Extreme Programming Explained : Embrace Change》第二版

其中Simplicity 的Value 真是振聋发聩 这就是我什么都喜欢轻量级的原因。

《Agile Software Development Principles,Patterns,and Practices》

敏捷真是炒得够火的 连企业都有敏捷一说 不过大师是不会这么advertising

的。

《Code Complete》第二版

名著。

数学

《数学 确定性的丧失》M. 克莱因

原来数学也只不过是人类的发明与臆造 用不着供入神殿 想起历史上那么多不

食人间烟火的科学家 多半是数学家 自以为发现了宇宙运作的奥秘 是时候

走下神坛了。

物理

《普通物理学》第一册 += 《Physics for Game Developers》 物理我想就到此为此吧 再复杂我可要用Newton Engine,ODE了 等待物理卡

PPU 普及的那天 就可充分发挥PhysX 的功效了 看过最新的《细胞分裂》游戏

Demo 演示 成千上万个Box 疯狂Collide 骨灰级玩家该一边摸钱包一边流口水

了。

二、开源代码

Irrlicht

著名的鬼火引擎 从两年前第一眼看到它 这个轻量级的三维图形引擎 就喜欢

上了它。源代码优雅 高效 且不故弄玄虚。值得每个C++程序员一读 并不限

于图形编程者。它的周边中也有不少轻量级的东西。如Lightfeather 扩展引擎

ICE 、IrrlichtRPG 、IrrWizard. 还有IrrEdit 、IrrKlang 、IrrXML 可用。 可能

是为了效率原因 很多开源作者往往喜欢自己写XML 解析库 如以上的IrrXML

库, 即使有现成的tinyXML 库可用。这真会让tomcat 里面塞Axis Axis 里面塞

JUDDI 弄得像俄罗斯套娃玩具的Java Web Service Coder们汗颜。

OGRE

排名第一的开源图形引擎 当然规模是很大的 周边也很多。除了以C#写就的

OgreStudio ofusion 嵌入3DS MAX作为WYSWYG 式的三维编辑器也是棒棒的

特别是其几个场景、地形插件值得研究。以至于《Pro OGRE 3D Programming》

一书专论其用法。搜狐的《天龙八部》游戏就是以其作为图形引擎 当然还另外

开发了引擎插块啦。我早知道OGRE 开 发组中有一个中国人谢程序员 他以前做

了很多年的传统软件编程。有一次天龙八部游戏的图形模块的出错信息中包含了

一串某程序员的工作目录 有一个文件夹名 即是谢程序员的英文名 我据此推

断谢程序员即是搜狐北京的主程。看来中国对开源事业还是有所贡献的嘛 王开

源哥哥的努力看来不会白费 ^-^ 不过我侦测的手法也有些像网站数据库爆

库了 非君子之所为作。

RakNet

基于UDI 的网络库 竟还支持声音传输 以后和OpenVision 结合起来做个视聊

程序试试。

Blender 声誉最盛的开源三维动画软件 竟还带一个游戏引擎。虽然操作以快捷键驱动

也就是说要背上百来个快捷键才能熟练使用。但是作为从商业代码变为开源之

作 威胁三维商业巨头的轻骑兵 历经十年锤炼 代码达百万行 此代码只应天

上有 人间哪得几回看 怎可不作为长期的源码参考

风魂

二维图形库。云风大哥的成名之作。虽然不代表其最高水平 最高水平作为商业

代码保存在广州网易互动的SVN 里呢 但是也可以一仰风采了。

圣剑英雄传

二维RPG 。几个作者已成为成都锦天的主力程序员。锦天的老总从一百万发家

三年时间身价过亿 也是一代枭 雄了。这份代码作为几年前的学生作品也算可

以了 因为一个工程讲究的是四平八稳 并不一定要哪个模块多么出彩。反正我

是没有时间写这么一个东东 连个美工 都找不到 只能整天想着破解别人的资

源 ^-^ 。

Boost

C++准标准库 我想更多的时候可以参考学习其源代码。

Yake

我遇到的最好的轻量级游戏框架了。在以前把一个工程中的图形引擎从

Irrlicht 换成OGRE 的尝试中 遇到了它。OGRE 的周边工程在我看来都很庸肿

没有完善文档的情况下看起来和Linux 内核差不多。不过这个Yake 引擎倒是很

喜欢。它以一个FSM 有限状态机作为实时程序的调度核心 然后每个模块 物理、

图形、网络、脚本、GUI 、输入等等都提供一个接口 接口之下再提供到每种具

体开源引擎的接口 然后再接具体引擎。通过这样层层抽象 此时你是接Newton

Engine,ODE 还是PysX 都可以 是接OGRE,Crystal Space还是Irrlicht 都可以

是接RakNet 还是LibCurl 都可以 是接Python Lua 还是Ruby 都可以 是接

CEGUI 还是others 是接OIS 还是others 呵呵, 记不起来others 都可以。所

以Yake 本质上不是OGRE 的周边。虽然用Neoengine 的人都倒向了它 但是现在

版本还很早。特别是我认为 学习研究时一定要有这种抽象之抽象 接口之接口

的东西把思维从具体的绑定打开 而开发时抽象要有限度的 就像蔡学镛在《Java

夜未眠》中讲的 面向对象用得过滥也会得OOOO 症(面向对象过敏强迫症) 。

Quake Doom系列

据说很经典 卡马克这种开源的黑客精神就值得赞许。把商业源代码放出来 走

自己的创新之路 让别人追去吧。不过Quake 与Unreal 引擎的三维编辑器是现

在所有编辑器的鼻祖 看来要好好看看了。

Nvidia SDK 9.X

三维图形编程的大宝库 这些Diret3D 与OpenGL 的示例程序都是用来展示其最

新的显卡技术的。硬件厂商往往对软件产品不甚在意 源代码给你看, 东西给你

用去吧 学完了还得买我的硬件。Intel 的编译器 PhysX 物理引擎大概也都是

这样。Havok 会把它的Havok 物理引擎免费给别人用吗 别说试用版 连个Demo

都看不到。所以这套SDK 的内容可比MS DirectX SDK里面那些入门级的示例酷

多了 反正我是如获至宝 三月不知愁滋味。不过显卡要so-so 哦。我的GeForce

6600有两三个跑不过去, 差强人意。

三、网站

www.CSDN.net

程序员大本营吧 软文与“新技术秀”讨厌了点 blog 和社区是精华之所在。

www.GameRes.com

游戏程序员基地 文档库中还有点东西。投稿的接收者Seabug 与圣剑英雄传的

主程Seabug 会是同一个人吗 一个在成都锦天担当技术重担的高手还有时间维

护网站吗 我不得而知。

“何苦做游戏”网站

名字很个性 站长也是历尽几年前产业发展初期的艰难才出此名字。

www.66rpg.com 二维游戏图片资源很多 站长柳柳主推的RPGMaker 软件也可以玩一玩吧 但对

于专业开发者来说不可当真。

www.GameDev.net

论坛中有不少热心的国外高手在活动。

www.SourceForge.net

不用说了 世界最大的开源代码库 入金山怎可空手而返 看到国外那些学生项

目动不动就像模像样的。 DirectX 的稚形就是英国的学生项目 在学校还被判

为不合格。

www.koders.com

源代码搜索引擎, 支持正则表达式,google Lab中也有。当你某种功能写不出来

时, 可以看一下开源代码怎么写的, 当然不过是仅供参考, 开源代码未必都有产品

级的强度。说到google, 可看《Google Power Tools Bible》一书 你会发现

google 的众多产品原来也有这么多使用门道。

这篇小文足足写了一天半的时间 不由得使我对侯捷一样的技术作家长期伏案辛

勤劳作深深敬佩了。看来对于书籍或者软件 都应该尊重作者或者programmer

的才智劳动

一个游戏程序员的学习资料

想起写这篇文章是在看侯杰先生的《深入浅出MFC 》时, 突然觉得自己在大学这

几年关于游戏编程方面还算是有些心得 因此写出这篇小文, 介绍我眼中的游戏

程序员的书单与源代码参考。一则是作为自己今后两年学习目标的备忘录, 二来

没准对别人也有点参考价值。我的原则是只写自己研究过或准备研究的资料 所

以内容无疑会带上强烈的个人喜好色彩, 比如对网络, 数据库等重要方面完全没

有涉及。因为自己主要对三维图形引擎, 人工智能算法, 脚本系统, 反外挂(反反外

挂? ^ ^)等方面感兴趣。这学期电脑都没联网了, 在岳麓山闭关修炼中(^ ^),

连这篇文章都得在学校图书馆电子阅览室 电影放映室 上传, 内容很多凭记

忆写出, 如有误差敬请订正。程序员应该在理论学习与实践编程中反复迭代 所

以学习资料是一回事 须知尽信书不如无书。

一、书籍

算法与数据结构

《数据结构 C 语言版 》——严蔚敏、吴伟民 清华出版社

我觉得其配套习题集甚至比原书更有价值 每个较难的题都值得做一下。

《Introduction to Algorithms》第二版 中文名《算法导论》

关于算法的标准学习教材与工程参考手册 在去年CSDN 网站上其翻译版竟然评

为年度二十大技术畅销书 同时《程序员》杂志上开设了“算法擂台”栏目 这

些溯源固本的举动 不由得使人对中国现今浮躁不堪的所谓“IT ”业又产生了一

线希望。这本厚厚的书 幸亏打折我才买得起。虽然厚达千页 但其英文通俗晓

畅 内容深入浅出 可见经典之作往往比一般水准的书还耐读。还能找到MIT

的视频教程 第一节课那个老教授嘻皮笑脸的 后面就是一长发助教上课了。

《C 语言名题精选百则 技巧篇》——冼镜光 机械工业出版社

作者花费一年时间搜集了各种常见C 程序段的极具技巧性的编程法 其内容都是

大有来头的 而且给出了详细的参考资料。如一个普通的Fibonacci 数就给出了

非递归解、快速算法、扩充算法等 步步深入 直至几无油水可榨。对于视速度

如生命 连一个普通的浮点数转化为整数都另辟蹊径以减少CPU cycle的游戏程

序员 怎可不看

《计算机算法基础 第二版 》—— 佘祥宣等 华中科大出版社

我看到几个学校的研究生拿它作教材 研究生才开算法 太开玩笑了吧 。这本

书薄是薄了点 用作者的话来说 倒也“精辟”。其实此书是《Fundamentals of

Computer Algorithms》的缩写版 不过原书出版太久了 反正我是没找到。

《The Art of Computer Programming》Volume 1-3

作者Donald E. Knuth是我心目中与冯. 诺依曼、Dijkstra 、Shannon 并列的四

位大师。这本书作者从读大学本科时开始写 一直写到博士时 十年磨一剑 足

见其下足了功夫。可作为计算机技术的核心——算法与数据结构的终极参考手

册。创新处也颇多 譬如常见的Shell 排序他在书中提出可用(3i-1)/2的间隔

这使其稍快于O(n1. 5)。当然这套书描述高度数学化 为此恐怕一般的人 我

最好还得先看一本数学预备书《Concrete Mathematics》 直译为混凝土数学

^ ^ 再说。可惜的是这套书才出到第三卷 并没有覆盖全部常见的算法内容。

不过好在对于游戏程序员来说 越常见的算法用得越多 这也不算是什么要命的

损失。

《STL 源码剖析》—— 侯捷 华中科大出版社

侯捷不用介绍了 华人技术作家中的旗舰 说其有世界级水准也不为过。这本书

我以为是C++与数据结构的葵花宝典 欲练此功 必先自宫 。也就是说 不下

几层地狱很难看懂 因为它要求的预备知识太多了 如STL 、数据结构、泛型编

程、内存管理都要很扎实 为此是不是还要看看有内存管理设计模式之称的

《Small Memory Software》这本书呢 但是一旦看懂 真会是所向披靡。

《Data Structures for Game Programmers》

每个数据结构的例程都是一个小游戏 还用SDL 库实现了一个算法演示系统。虽

然内容失之于浅 但起码让人了解了数据结构在游戏中的作用。

其实游戏程序并不比其它程序特殊 甚至要求基本功更加扎实 所以花时间做一

些看似与实际应用不甚相干的习题 对今后的工作是大有裨益的。而且有些应用

很广的算法 如常被人津津乐道的A*算法及其变种 牵涉到图的检索周游与分

枝-限界法 恐怕还得读一些艰深的论文才能充分明白运用 如Donald E. Knuth

的《An analysis of alpha-beta cutoffs 》。其实还有不少此类的好书 如《Data Structures and Algorithms in C++》、《Programming Pearls》、《More Programming

Pearls 》 算法珠玑 等 我却以为要先看严谨一点的著作 再看内容随笔一点

的书。

汇编

《IBM-PC 汇编语言程序设计》第二版

国内经典教材。

《The Art of Assembly Language》

这本书足有1600页 噢

C 语言

《The C Programming Language》第二版

虽然篇幅短小 但每个例程都很经典。 我们老师开始拿它作教材 后面换为谭

小强的C 语言书 理由为 例子尽是些文本处理。我就纳了闷了 难道现代的计

算机程序不是将大量时间消耗在字符串与文本的处理上吗

C++

学过C 语言 再学C++ 先看这本《C++ Primer》的缩写版

《Essential C++》

对C++有个入门了解 再看

《C++ Common Knowledge: Essential Intermediate Programming》

就不会有什么重要的知识点完全不知所措了 接下来是

《The C++ Standard Library : A Tutorial and Reference》

标准库 当然主要是标准模板库的标准学习参考手册 然后最好平时边写程序边

参悟。

《Effective C++》等 我是说书名以形容词 + C++的那些书 计有七八本 慢慢看吧 罗马不是一日建

成的。

(《Essential C++》、《Effective C++》、《More Effective C++》、《Accelerated

C++》、《Effective STL》、《Exceptional C++》、《More Exceptional C++》、

《Imperfect C++》 虽然书名格式相似 但每一本都绝非马虎之作。)

谁说C++程序比C 程序要慢 那就请看下面

《The Design and Evolution of C++》

知其过去才能知其未来 才能应用。

《Inside the C++ Object Model》

揭露C++的编译器模型。

《Efficient C++ Performance Programming Techniques》

当算法优化已到极致 在运用汇编之前 最后还可看看此书 有时高级和低阶都

能做成相同的事情。

还有两本特别的书

《Modern C++ Design : Generic Programming and Design Patterns Applied》

作者想把设计模式和泛型编程结合起来 并写了个尝试提供一切的Loki 库来实

作, 不过其观点并未得到C++社区的普遍响应。尽管如此 本书仍称得上思想前

沿性与技术实用性结合的典范。

《C++ Template Metaprogramming》

把编译器当作计算器 本书介绍了Boost 库的MPL 模板元编程库。当然提到

Boost 库 对于游戏程序员不能不提到其中的Graph 库 有《The Boost Graph

Library 》一书可看。还有其中Python 库 号称国内首款商业三维图形引擎的起

点引擎就用了Boost Python 库。说实话我觉得起点引擎还是蛮不错的 那个自

制的三维编辑器虽然界面简陋 但功能还算蛮完善 给游戏学院用作教学内容也

不错。另有一个号称中国首款自主研发的全套网游解决方案。我看到它那个三维

编辑器 心想这不就是国外一个叫freeworld3D 的编辑器吗 虽然有点偏门 但

我以前还较劲尝试破解过呢。还把英文界面汉化了 大概用exescope 这样的资源修改软件就能搞定吧。我又心想为什么要找freeworld3D 这个功能并不太强大

的编辑器呢 仅仅是因为它便宜到几十美金 它唯一特别一点的地方就是支持

导出OGRE 图形引擎的场景格式 这样一想不由得使人对它图形引擎的“自主”

性也产生怀疑了。这样的“自主”研发真让人汗颜 只要中国还没封

sourceforge 这个网站 据说以前和freeBSD 网站一起被封过 国人就能“自

主”研发。

有人还会推荐《C++ Primer》《Thinking in C++》《The C++ Programming Language》

等书吧 诚然这些书也很好 但我总觉得它们太大部头了。还不如多花点时间看

看国外好的源代码。

Windows 编程

Operating System Concepts第五版

国内有些操作系统的教程其实就是它的缩写版。

《Windows 95 System Programming Secrets》

深入剖析了Windows 操作系统的种种种种 有人爱看《Linux 内核完全注释》

有人爱看《自己动手写操作系统》这样煽情的书 但我想作为商业的操作系统

把Windows 内核剖析到这地步也高山仰止了。

《Programming Applications for Microsoft Windows》第四版

先进程线程 再虚存管理 再动态链接库 最多讲到消息机制。作者在序言中说

“我不讲什么ActiveX, COM等等 因为当你了解了这些基础后 那些东西很快

就会明白 ”可以作为《Programming Windows》的先修课。

计算机体系

《Computer Systems : A Programmer’s Perspective》

和《The Art of Computer Programming》在我心中是计算机史上两本称得上伟

大的书 计算机组成原理 操作系统 汇编 编译原理 计算机网络等等课程汇

成这本千页的大书 因为计算机在作者眼中就是一个整体。

开源阅读

《Code Reading : The Open Source Perspective》

张大千临摹了几百张明代石涛的山水 画出的画以假乱真 后来他去敦煌潜心临

摹几年 回来画风大变 终成大家。程序员其实有40%的时间是在读别人的源代

码 侯捷先生说 “源码面前 了无秘密” 又说“天下大事 必作于细” 可

以与他的《上穷碧落下黄泉 源码追踪经验谈》参看。

MFC:

《深入浅出MFC 》

我实在以为没有看过侯捷先生的《深入浅出MFC 》的人多半不会懂得MFC 编程。

其实我是打算用一年多的时间写一个给游戏美工用的三维编辑器 顺便作为毕业

设计。图形库就用MFC 吧 反正也没得选择。如果要用wxWidgets 无非是猎奇而

已 还不是MFC 的翻版 当然它跨平台了。就象阻击手对自己枪械的零件了如指

掌一样 要想用MFC 写出非玩具程序的人一定要了解其内部构造。还有一本书叫

《MFC 深入浅出》 并不是同一本。

IDE:

《Microsoft Visual Studio 2005 Unleashed》

工欲善其事 必先利其器。当然我认为与其用形如Source Insight、Slick Edit、

Code Visualizer之类的代码阅读器、图形化工具 还不如用自己的大脑。但如

果你嫌打源代码慢的话 可以用Visual AssistX。如果嫌老是写重复相似的代

码的话 可以用Code Smith。单元测试可以用CppUnit Boost 库中的测试框架

也不错。有心情可以吧Visual Studio外接Intel 的Compiler 内嵌STLport

但不是大工程 性能分析没必要动不动就用下VTune 吧。

程序员之路

《游戏之旅——我的编程感悟》

云风大哥。在我心目中游戏程序员国外首推卡马克 国内首推云风。也许过两年

我会到网易当云风大哥的助理程序员吧。It ’s my dream. ^-^ 他写这本书

的时候本着只有透彻理解的东西才写出来 因此内容不会很酷新 但是相信我 每读一遍都有新的收获 主要还不是知识上的 因为知识是学无止境的 授人

以鱼不如授人以渔 精神上的启迪才是长久的。诚如经典游戏《仙剑奇侠传》的

主力程序员兼美术指导姚壮宪 人称姚仙 在序言中所说的“云风得到的只是一

些稿费 而整个中国民族游戏产业得到的将是一次知识的推动” 此言不虚矣。

《编程高手箴言》

梁肇新是豪杰超级解霸的作者 本来每个合格的程序员 Programmer , 而非

Coder 都应该掌握的东西 现在变成了编程高手的独家箴言。不知是作者的幸

运还是中国IT 业的悲哀。知识点还是讲得蛮多的 不过对MFC 的地位颇有微词。

我实在认为MFC 的名声就是那些不懂得用它的人搞臭的。不过作者的牢骚也情有

可原 每个具有创造力的程序员都应该不太喜欢framework 。

《Masters of DOOM: How Two Guys Created an Empire and Transformed Pop

Culture 》中文名《DOOM 启世录》

卡马克 罗洛斯 这些游戏史上如雷贯耳的名字。 现在卡马克已专注于火箭制

造上 罗洛斯则携妻回乡隐居 要不是没上过大学的卡马克和图 形学大师亚伯

拉罕的功勋 可能到现在游戏中还不知三维为何物。勿庸置疑 在计算机界历史

是英雄们所推动的。这本书真实的记录了这些尘世英雄的所为所思。

作为程序员的我对这几本策划与美工的书也产生了浓厚兴趣 以前搞过一两年的

3DS MAX插件编程 觉得用maxscript 还是好过MaxSDK 毕竟游戏开发中所多的

是模型场景数据的导入导出 大可不必大动干戈。

策划

《Creating Emotion in Games : The Craft and Art of Emotioneering》

在壮丽煊目的宏伟三维世界背后 在残酷的杀戮 动人心魄的情节背后 我们还

需要什么来抓住玩家的心 答对了 就是emotion. 真正打动人心的 才是深入

骨髓的。

《Ultimate Game Design : Building Game Worlds》 从名字可以看出 写给关卡设计师的 特别是讲室外自然场景的构建颇有可取之

处。

《Developing Online Games : An Insider’s Guide》

就象名为反模式的书讲软件团队运营一样 这本书讲商业运作多过技术。一个历

经艰难 现在盛大的游戏程序员 翻译了这本书。

美工

《Digital Cinematography & Directing》

数字摄影导演术 每当你在3DS MAX或者Maya 等三维创作软件中摆放摄影机

设计其运动轨迹时 你可曾想过你也站在导演的位置上了

《The Animator’s Survival Kit》

看着这本讲卡通角色运动规律的书 一边产生温习《猫和老鼠》的念头 一边继

续对前不久新闻联播中关于中国产生了某计算机自动卡通动画生 成软件报道的

蔑视 这条报道称此举可大大加快中国卡通动画的产量。我且不从技术上探讨其

是否是在放卫星 其实我知道得很清楚 前文已表 本人搞过一两年的 卡通动

画辅助软件编程 但计算机机械生成的动画怎可代替人类充满灵性的创作

《The Dark Side of Game Texturing》

用Photoshop 制作材质贴图 还真有些学问。

三维图形学

搞三维图形学首先还是要扎扎实实的先看解析几何、线性代数、计算几何的教材

后面的习题一个都不能少。国内数学书还是蛮好的。苏步青大师的《计算几何》

称得上具有世界级水准 可惜中国CAD 的宏图被盗版给击垮了。现在是我们接过

接力棒的时候了。It ’s time!

《Computer Graphics Geometrical Tools》

《计算机图形学几何工具算法详解》算法很多 纰漏处也不少。

《3D Math Primer for Graphics and Game Development》

浅易 可作为三维数学的“速食“。

《Mathematics for 3D Game Programming & Computer Graphics》第二版

比上面那本深入一些 证明推理的数学气也浓一些 可作为专业的数学书与编程

实践一个过渡的桥梁吧。内容涉猎也广 射线追踪 光照计算 可视裁剪 碰撞

检测 多边形技术 阴影算法 刚体物理 流体水波 数值方法 曲线曲面 还

真够丰富。

《Vector Game Math Processors》

想学MMX,SSE 吗 那就看它吧 不过从基础讲起的 要耐心哦。

DirectX:

《Introduction to 3D Game Programming with DirectX 9.0》

DirectX 入门的龙书 作者自己写的简单示例框架 后面我干脆用State 模式

把所有例子绑到一块儿去了。

《Beginning Direct3D Game Programming》

作者取得律师学位后变成了游戏程序员 真是怪也哉。本书虽定位为入门级书

内容颇有独特可取之处。它用到的示例框架是DXSDK Sample Framework 而不

是现在通行的DXUT 。要想编译有两种办法吧 一是自己改写成用DXUT 的。二是

找旧的Sample Framework。我又懒得为了一个示例框架下载整个早期版本的

DirectX 后面在Nvidia SDK 9.5中发现了。

《Advanced Animation with DirectX》

DirectX 高级动画技术。骨骼系统 渐变关键帧动画 偶人技术 表情变形 粒

子系统 布料柔体 动态材质 不一而足。我常常在想 从三维创作软件导出的

种种效果 变成一堆text 或binary 先加密压缩打包再解包解压解密 再用游

戏程序重建一个Lite 动画系统 游戏程序员也真是辛苦。

OpenGL:

《NeHe OpenGL Tutorials》

虽是网络教程 不比正式的书逊 本来学OpenGL 就不过是看百来条C 函数文档

的工夫吧, 如果图形学基础知识扎实的话。

《OpenGL Shading Language》

OpenGL 支持最新显卡技术要靠修修补补的插件扩展 所以还要配合

《Nvidia OpenGL Extension Specifications》

来看为上。

《Focus on 3D Models》

《Focus on 3D Terrain Programming》

《Focus on Curves and Surfaces》

顾名思义 三本专论 虽然都很不深 但要对未知三维模型格式作反向工程前

研读Geomipmapping 地形算法论文前 CAD 前 还是要看看它们为上 如果没从

别处得过到基础的话。

脚本

先看 《Game Scripting Mastery》

等自己了解了虚拟机的构造 可以设计出简单的脚本解释执行系统了。

再去查Python , Lua Ruby 的手册吧 会事半半功倍倍的。

《Programming Role Playing Games with DirectX 8.0》

一边教学一边用DirectX 写出了一个GameCore 库 初具引擎稚形。

《Isometric Game Programming with DirectX 7.0》

三维也是建立在二维的基础上 这就是这本书现在还值得看的原因。

《Visual C++网络游戏建模与实现》

联众的程序员写的 功力很扎实 讲棋牌类游戏编程 特别讲了UML 建模和

Rotional Rose。

《Object-Oriented Game Development》

套用某人的话 “I like this book.”

Shader:

要入门可先看

《Shaders for Game Programmers and Artists》

讲在RenderMonkey 中用HLSL 高级着色语言写Shader.

再看

《Direct3D ShaderX : Vertex and Pixel Shander Tips and Tricks》 用汇编着色语言 纯银赤金。

三大宝库

《Game Programming Gems》

我只见到1-6本 据说第7、8本也出来了 附带的源代码常有bug 不过瑕不

掩瑜 这套世界顶级游戏程序员每年一度的技术文集 涉及游戏开发的各个方面

我觉得富有开发经验的人更能在其中找到共鸣。

《Graphics Gems》全五本

图形学编程Bible 看了这套书你会明白计算机领域的科学家和工程师区别之所

在。科学家总是说 这个东西在理论上可行。工程师会说 要使问题在logN 的

时限内解决我只能忍痛割爱 舍繁趋简。

《GPU Gems》出了二本

Nvidia 公司召集图形学Gurus 写的 等到看懂的那一天 我也有心情跑去

Siggraph 国际图形学大会上投文章碰运气。

游戏引擎编程

《3D Game Engine Programming》

是ZFXEngine 引擎的设计思路阐释 很平实 冇太多惊喜。

《3D Game Engine Design》

数学物理的理论知识讲解较多 本来这样就够了 还能期待更多吗

人工智能

《AI Techniques for Game Programming》 讲遗传算法 人工神经网络 主要用到位数组 图算法。书的原型是根据作者发

表到GameDev.net 论坛上的内容整理出来的 还比较切中实际。

《AI Game Programming Wisdom》

相当于AI 编程的Gems 。

《PC 游戏编程(人机博弈) 》

以象棋程序为蓝本 介绍了很多种搜索算法 除了常见的极大极小值算法及其改

进--负极大值算法 还有深度优先搜索以外。更提供了多种改进算法 如

Alpha-Beta,Fail-soft alpha-beta,Aspiration Search, Minimal Window

Search,Zobrist Hash,Iterative Deepening,History Heuristic,Killer

Heuristic,SSS*,DUAL*,MFD and more.琳琅满目 实属难得。

反外挂

《加密与解密(第二版) 》 看雪论坛站长 段钢

破解序列号与反外挂有关系么 不过 世上哪两件事情之间又没有关系呢

《UML Distilled》 Martin Fowler

很多人直到看了这本书才真正学懂UML 。

Martin Fowler是真正的大师, 从早期的分析模式, 到这本UML 精粹, 革命性的重

构都是他提出的, 后来又写了企业模式一书。现在领导一个软件开发咨询公司

去年JavaOne 中国大会他作为专家来华了吧。个人网站 MartinFowler.com

设计模式三剑客

《Design Patterns Elements of Reusable Object-Oriented Software》

《Design Patterns Explained》

《Head First Design Patterns》

重构三板斧

《Refactoring : Improving the Design of Existing Code》

《Refactoring to Patterns》

《Refactoring Workbook》

软件工程:

《Extreme Programming Explained : Embrace Change》第二版

其中Simplicity 的Value 真是振聋发聩 这就是我什么都喜欢轻量级的原因。

《Agile Software Development Principles,Patterns,and Practices》

敏捷真是炒得够火的 连企业都有敏捷一说 不过大师是不会这么advertising

的。

《Code Complete》第二版

名著。

数学

《数学 确定性的丧失》M. 克莱因

原来数学也只不过是人类的发明与臆造 用不着供入神殿 想起历史上那么多不

食人间烟火的科学家 多半是数学家 自以为发现了宇宙运作的奥秘 是时候

走下神坛了。

物理

《普通物理学》第一册 += 《Physics for Game Developers》 物理我想就到此为此吧 再复杂我可要用Newton Engine,ODE了 等待物理卡

PPU 普及的那天 就可充分发挥PhysX 的功效了 看过最新的《细胞分裂》游戏

Demo 演示 成千上万个Box 疯狂Collide 骨灰级玩家该一边摸钱包一边流口水

了。

二、开源代码

Irrlicht

著名的鬼火引擎 从两年前第一眼看到它 这个轻量级的三维图形引擎 就喜欢

上了它。源代码优雅 高效 且不故弄玄虚。值得每个C++程序员一读 并不限

于图形编程者。它的周边中也有不少轻量级的东西。如Lightfeather 扩展引擎

ICE 、IrrlichtRPG 、IrrWizard. 还有IrrEdit 、IrrKlang 、IrrXML 可用。 可能

是为了效率原因 很多开源作者往往喜欢自己写XML 解析库 如以上的IrrXML

库, 即使有现成的tinyXML 库可用。这真会让tomcat 里面塞Axis Axis 里面塞

JUDDI 弄得像俄罗斯套娃玩具的Java Web Service Coder们汗颜。

OGRE

排名第一的开源图形引擎 当然规模是很大的 周边也很多。除了以C#写就的

OgreStudio ofusion 嵌入3DS MAX作为WYSWYG 式的三维编辑器也是棒棒的

特别是其几个场景、地形插件值得研究。以至于《Pro OGRE 3D Programming》

一书专论其用法。搜狐的《天龙八部》游戏就是以其作为图形引擎 当然还另外

开发了引擎插块啦。我早知道OGRE 开 发组中有一个中国人谢程序员 他以前做

了很多年的传统软件编程。有一次天龙八部游戏的图形模块的出错信息中包含了

一串某程序员的工作目录 有一个文件夹名 即是谢程序员的英文名 我据此推

断谢程序员即是搜狐北京的主程。看来中国对开源事业还是有所贡献的嘛 王开

源哥哥的努力看来不会白费 ^-^ 不过我侦测的手法也有些像网站数据库爆

库了 非君子之所为作。

RakNet

基于UDI 的网络库 竟还支持声音传输 以后和OpenVision 结合起来做个视聊

程序试试。

Blender 声誉最盛的开源三维动画软件 竟还带一个游戏引擎。虽然操作以快捷键驱动

也就是说要背上百来个快捷键才能熟练使用。但是作为从商业代码变为开源之

作 威胁三维商业巨头的轻骑兵 历经十年锤炼 代码达百万行 此代码只应天

上有 人间哪得几回看 怎可不作为长期的源码参考

风魂

二维图形库。云风大哥的成名之作。虽然不代表其最高水平 最高水平作为商业

代码保存在广州网易互动的SVN 里呢 但是也可以一仰风采了。

圣剑英雄传

二维RPG 。几个作者已成为成都锦天的主力程序员。锦天的老总从一百万发家

三年时间身价过亿 也是一代枭 雄了。这份代码作为几年前的学生作品也算可

以了 因为一个工程讲究的是四平八稳 并不一定要哪个模块多么出彩。反正我

是没有时间写这么一个东东 连个美工 都找不到 只能整天想着破解别人的资

源 ^-^ 。

Boost

C++准标准库 我想更多的时候可以参考学习其源代码。

Yake

我遇到的最好的轻量级游戏框架了。在以前把一个工程中的图形引擎从

Irrlicht 换成OGRE 的尝试中 遇到了它。OGRE 的周边工程在我看来都很庸肿

没有完善文档的情况下看起来和Linux 内核差不多。不过这个Yake 引擎倒是很

喜欢。它以一个FSM 有限状态机作为实时程序的调度核心 然后每个模块 物理、

图形、网络、脚本、GUI 、输入等等都提供一个接口 接口之下再提供到每种具

体开源引擎的接口 然后再接具体引擎。通过这样层层抽象 此时你是接Newton

Engine,ODE 还是PysX 都可以 是接OGRE,Crystal Space还是Irrlicht 都可以

是接RakNet 还是LibCurl 都可以 是接Python Lua 还是Ruby 都可以 是接

CEGUI 还是others 是接OIS 还是others 呵呵, 记不起来others 都可以。所

以Yake 本质上不是OGRE 的周边。虽然用Neoengine 的人都倒向了它 但是现在

版本还很早。特别是我认为 学习研究时一定要有这种抽象之抽象 接口之接口

的东西把思维从具体的绑定打开 而开发时抽象要有限度的 就像蔡学镛在《Java

夜未眠》中讲的 面向对象用得过滥也会得OOOO 症(面向对象过敏强迫症) 。

Quake Doom系列

据说很经典 卡马克这种开源的黑客精神就值得赞许。把商业源代码放出来 走

自己的创新之路 让别人追去吧。不过Quake 与Unreal 引擎的三维编辑器是现

在所有编辑器的鼻祖 看来要好好看看了。

Nvidia SDK 9.X

三维图形编程的大宝库 这些Diret3D 与OpenGL 的示例程序都是用来展示其最

新的显卡技术的。硬件厂商往往对软件产品不甚在意 源代码给你看, 东西给你

用去吧 学完了还得买我的硬件。Intel 的编译器 PhysX 物理引擎大概也都是

这样。Havok 会把它的Havok 物理引擎免费给别人用吗 别说试用版 连个Demo

都看不到。所以这套SDK 的内容可比MS DirectX SDK里面那些入门级的示例酷

多了 反正我是如获至宝 三月不知愁滋味。不过显卡要so-so 哦。我的GeForce

6600有两三个跑不过去, 差强人意。

三、网站

www.CSDN.net

程序员大本营吧 软文与“新技术秀”讨厌了点 blog 和社区是精华之所在。

www.GameRes.com

游戏程序员基地 文档库中还有点东西。投稿的接收者Seabug 与圣剑英雄传的

主程Seabug 会是同一个人吗 一个在成都锦天担当技术重担的高手还有时间维

护网站吗 我不得而知。

“何苦做游戏”网站

名字很个性 站长也是历尽几年前产业发展初期的艰难才出此名字。

www.66rpg.com 二维游戏图片资源很多 站长柳柳主推的RPGMaker 软件也可以玩一玩吧 但对

于专业开发者来说不可当真。

www.GameDev.net

论坛中有不少热心的国外高手在活动。

www.SourceForge.net

不用说了 世界最大的开源代码库 入金山怎可空手而返 看到国外那些学生项

目动不动就像模像样的。 DirectX 的稚形就是英国的学生项目 在学校还被判

为不合格。

www.koders.com

源代码搜索引擎, 支持正则表达式,google Lab中也有。当你某种功能写不出来

时, 可以看一下开源代码怎么写的, 当然不过是仅供参考, 开源代码未必都有产品

级的强度。说到google, 可看《Google Power Tools Bible》一书 你会发现

google 的众多产品原来也有这么多使用门道。

这篇小文足足写了一天半的时间 不由得使我对侯捷一样的技术作家长期伏案辛

勤劳作深深敬佩了。看来对于书籍或者软件 都应该尊重作者或者programmer

的才智劳动


相关内容

  • [JAVA游戏程序设计教程]实验任务书
  • <Java 游戏程序设计教程>实验任务书 实验一弹跳小球游戏设计 一实验目的 通过设计和制作弹跳小球游戏来了解游戏程序的基本结构,理解游戏循环和双缓冲机制的基本原理,并掌握游戏运行框架的设计方法.二实验内容 学习和了解游戏基本框架的设计方法(参考教材第3章内容及相关代码),在此基础上设计 ...

  • 网络游戏服务器数据库的设计和实现毕业论文
  • 毕业设计论文 网络游戏服务器数据库的设计和实现 摘 要 随着网络的普及,网络游戏已经成为大家耳濡目染的新生事物.现在,可以说网络游戏已经成为人们休闲.娱乐的有效方式.网络游戏必须依托于互联网,可以多人同时参与游戏,通过人与人之间的互动达到交流.娱乐和休闲的目的. 在网络游戏中,数据库主要用来保存用户 ...

  • 毕业设计---游戏开发实现与设计
  • 目 录 第一章 游戏开发的现状分析........................................... 0 1.1游戏开发现状................................................. 0 1.2 游戏开发中存在的问题 ........... ...

  • c++课程设计报告 掷骰子游戏
  • 目录 一.课题设计的内容与主要功能 . ............................ 2 1.1题目内容 ............................................ 2 1.2 功能 ..................................... ...

  • 7猜数字游戏课程设计完整版
  • 北京邮电大学世纪学院 实验.实习.课程设计报告撰写格式与要求 (试行) 一.实验报告格式要求 1.有实验教学手册,按手册要求填写,若无则采用统一实验报告封面. 2.报告一律用钢笔书写或打印,打印要求用A4纸:页边距要求如下:页边距上下各为2.5厘米,左右边距各为2.5厘米:行间距取固定值(设置值为2 ...

  • 手机游戏设计与开发-T0201-0
  • 编号:JX/GC7.3.1-02-JL01 <手机游戏设计与开发>课程标准 学分:4学分 参考学时:72学时 一.课程概述 <手机游戏设计与开发>是嵌入式技术与应用专业的专业限选课程.本课程的先修课程包括<C 程序设计>.<C++程序设计>.<嵌 ...

  • 游戏程序设计教学案例
  • 游戏程序设计教学案例 游戏编写是游戏程序设计教程中很重要的内容.本文介绍了一个完整的2D游戏-坦克大战的开发过程,对游戏素材编辑.地图编辑和游戏主程序的设计做作了完整介绍和代码实现,使学生能完全掌握并应用到实际其它游戏的开发过程中. 关键词:计算机游戏:程序设计:地图:游戏引擎 1游戏程序设计教程中 ...

  • 培训师的小游戏
  • 目 录 沟通 1.我的期望 2.我是记者 3.生日线 4.撕纸 5.三分钟测试 6.猜名人游戏 7.空方阵 28. 29. 30. 31. 寻人游戏 进化论 寻宝游戏 扑克组合 相合认识 指寻学习 32. 33. 34. 35. 36. 踢足球 对掌推 自我SWOT分析 学习的障碍 不考试的测试 团 ...

  • 西洋跳棋智能程序设计毕业论文
  • 西洋跳棋智能程序设计 学 院 专 业 班 级 学 号 姓 名 指导教师 负责教师 计算机学院 计算机科学与技术 2016年6月 摘 要 随着社会发展,科技进步,电脑得以普及.电脑游戏伴随着网络和电脑的普及深深的吸引了很多玩家,特别是快节奏的生活,传统的两个人一张桌子的下棋方式逐渐被取缔,人机对弈棋牌 ...