但是使用游戏引擎毕竟是停留在表面看不到本质,当游戏开发的时候出现了某些问题或者特殊需求,你往往很难处理。而且游戏引擎技术日新月异,你所学的几乎都是别人留下来的方法,而不是其本质思想。如果将来别的游戏引擎兴起,你又要重新学习另外的游戏引擎怎么使用。在很多大公司里面,甚至都有自己公司内部专用的引擎(如网易公司的风魂引擎、金山公司的剑网3引擎、蜗牛公司的Flexi引擎等等)。所以单纯地走这条路线,可能不会让你走得很远并且可能会日渐乏味。
线路二:使用游戏引擎并深入了解游戏引擎原理
对于第二条路线,深入学习游戏引擎原理短时间不会让你的工作有什么卓越的成效,但是可以弥补只使用游戏引擎导致的问题,而且学习游戏引擎原理,更多时候不是一定就为了自己日后要造个游戏引擎,而是更深入理解自己的游戏引擎,更好地使用它。当然,千里之行始于足下,经常学习游戏引擎底层原理的人到了一定的积累的时候,自己造个游戏引擎也是可以的。
对于像学习游戏引擎原理的人来说,需要制定自己明确的长期目标:
1) 首先,一开始可能对游戏引擎没什么概念,建议先使用一两个游戏引擎(我推荐C++程序员学习虚幻4游戏引擎,现在是免费开源的,非常值得学习。那些不开源的游戏引擎尽量不要去学习,因为其对于学习原理来说没有多大贡献)。
2) 因为游戏开发就是一门实时渲染的艺术,所以离不开图形库的学习。现在主流的图形库是Windows平台专用的DirectX 11和通用平台的Opengl。这两个图形库,至少需要入门其中一个。
3) 然后,你就可以开始看计算机图形学的书籍了。如果你发现你的理论底子不足,这个时候就需要补一下线性代数、基本的微积分、还有3D数学的知识。
4)
游戏引擎中包含了各个部分,上面的渲染只是游戏引擎的一部分。还有其它诸如着色器编写、地形编写、物理引擎编写、模型和动画、人工智能体设计、网络编程等等,完成渲染部分的基本学习后,你可以选择自己感兴趣的部分进行专攻,毕竟我们实际工作大多数时候是团队开发,而不是单打独斗,每个人都应该精通自己所擅长的那部分。
这里为了文章的紧凑性,我将游戏引擎的基础理论知识和各个引擎组件的推荐书籍放到了文章的附录处。
下表是基础理论知识和游戏引擎组件书籍推荐(不必全看,请有选择地阅读):
1) 数学基础
下面这些数学基础书籍是为游戏开发量身定制的,比专门看某一数学方向更有效率:
《3D Math Primer for Graphics and Game Development》,有中文版
《Mathematics for 3D Game Programming and Computer Graphics》
《Essential Mathematics Guide》
《Geometric Tools for Computer Graphics》
2) 图形库
针对 DirectX 的书籍:
《Introduction to 3D Game Programming with DirectX 11》,大名鼎鼎的龙书,入门必看的
《Practical Rendering and Computation with Direct3D 11》,进阶
《Real-Time 3D Rendering with DirectX and HLSL》
针对 OpengGL 的书籍:
《OpenGL SuperBible》,著名的蓝宝书,以例子为主,有中文版。但不建议看中文版,翻译得不好。
《OpenGL Programming Guide》,著名的红宝书,有中文版。红宝书更像是手册,API大全,例子较少,适合熟练者查询使用。
《OpenGL 4.0 Shading Language Cookbook》,进阶,基本上就是API手册,有中文版。但不建议看中文版,翻译得不好。
3) 计算机图形学
《The Nature of Code》,有中文版,比较简单
《Fundamentals of Computer Graphics》,被国外多所大学采用的入门教材,介绍范围比较广,从基本的相关数学到建模、渲染、动画、应用方面都有提及
《Physically Based Rendering》,主要是离线渲染
《Real-Time-Rendering》,必读经典!必读!
《计算机图形学》,作者舍利
《Computer Graphics》,要看最新的第三版
《计算机图形学原理及实践:C语言描述》
4) Shader着色器
《Cg_tutorial》,入门
《The Complete Effect and HLSL Guide》,入门
《Shaders for Game Programmers and Artists》,含有大量入门例子
《Advanced Lighting And Materials With Shaders》,介绍光照模型和技术
《GPU Gems》进阶必读。
《Shader X》系列,每年出版一本,包含最新的实时渲染技术。论文性的比较多,偏难。
《Programming Vertex, Geometry, and Pixel Shaders》,以DirectX 10为主,很详细。
5) 地形
《Real Time 3D Terrain Engines Using C++ And DX9》非常全面的讨论了关于地形渲染的各种技术。
6) 模型导入和动画
《Character Animation With Direct3D》包含了最新的游戏动画技术
《Computer Animation》
《Real-Time Cameras》
《Computer Facial Animation》
《Realtime 3D Character Animation with Visual C++》
《Advanced Animation and Rendering Techniques》
《Cloth Modeling and Animation》
7) 网络
《TCP/IP 详解 卷2》
《Network Programming for Microsoft Windows》
《Advanced Programming in the UNIX Environment》
《Windows核心编程》
《Multithreading applications in Win32》
《网络游戏核心技术与实战》
8) 物理
《Game Physics》
《Game Physics Engine Development》
《Real-time Collision Detection》,碰撞检测方面最好的书
《3D Game Engine Design, 2nd》第8、9章值得一看
9) 细节层次