欢迎阅读《DirectX游戏开发终极指南》一书。这是一本介绍在Windows平台上使用C++和DirectX开发游戏的书籍。我希望每个阅读本书的读者都能够从本书中找到有价值的内容,并且希望读者能够享受到初次开发视频游戏所带来的乐趣。本书旨在为那些没有DirectX使用经验的读者提供帮助。如果读者已经有了一定的DirectX开发经验,那么也希望您能从中发掘出对您有价值的内容。我希望读过此书的每一位读者都能够与我为伍,并且能够加入到www.UltimateGameProgramming.com网站上的其他程序员社区中来。
DirectX API由图形、输入设备、网络、音效及其他部分组成。本书从头至尾介绍一个名为Stranded的第一人3D游戏的开发。这样读者可以通过研究该游戏的开发和运行完成本书的学习。相对于当今市面上的专业游戏而言,该游戏比较简单,但这是游戏开发程序员的极为重要的入门步骤。
本书的组织结构
本书主要分为三部分,介绍了游戏开发的整个流程。第一部分重点介绍了使用Direct3D API生成DirectX图形。其内容涵盖了向屏幕上显示几何图形、图像、文本和图形界面以及设定3D光照、创建和显示特效、为游戏编写脚本的所有知识。这部分涉及到本书1~7章的内容,为读者创建最终的游戏以及从一个入门级程序员转变为中级程序员打下基础。本部分有很多需要花费读者大量时间阅读的内容,因此读者要确保在进一步深入学习之前理解这部分材料。对这部分材料理解得越深刻,深入学习后面的高级专题就越容易。
本书的第二部分主要介绍了游戏数学、碰撞检测、输入检测和游戏音效。游戏中使用的数学知识可能非常高深,尤其是实现更高一级的物理和图形效果时更能体现出这一点。即使数学功底不是很好,通过耐心学习和不断实践也可以掌握游戏开发所需的数学知识。读者并不需要有数学方面的专业知识,但要乐意于深入学习这方面的内容,因为游戏开发和它紧密相关。
本书的第三部分介绍了模型加载和在3D场景中的动画和场景管理。模型加载过程就是将模型的各个组成部分显示到屏幕上。在此将介绍不同的文件格式以及用于驱动这些模型并使其在3D空间中移动的技术。本部分最后介绍了读者在深入学习游戏编程中可能遇到的不同的场景管理技术和主题。
本书的最后将完成整个游戏的开发。虽然这是本书最激动人心的内容,但是读者不要为了迫切得到最终的游戏而忽略前面的章节直奔本书最后内容。踏实地学好本书前两部分的基础内容将有助于您超越本书所讨论内容的限制从而开发出自己的游戏。
学习本书的要求
为了最大限度地发掘本书的价值,您需要掌握一些C++编程知识。本书旨在介绍游戏编程,而不是计算机编程,所以并不需要读者是C或C++专家,但需要读者已经掌握了编写代码的方法。只要读者基本理解类和结构就足够了,而不需要掌握任何DirectX知识。
为了编写DirectX应用程序,读者要有一套DirectX软件开发包或是DirectX SDK。该软件可以从Microsoft的网站下载或是通过本书的附带光盘获得。读者至少要在自己的机器上安装DirectX 9.0c。虽然所有的Windows操作系统都提供了DirectX,但是读者要确保在自己的机器上安装了最新版本的DirectX。本书编写的时候,DirectX的最新版本是2005年12月更新的DirectX 9.0c。
CD-ROM上所有的演示程序都是用Microsoft公司的Visual Studio 2003编写的。为了打开项目文件,读者机器上至少要安装.NET 2003。读者可以使用以前版本的Visual Studio或是完全不同的集成开发环境,但是为了创建应用程序就必须创建自己的项目文件。这并不是很困难的事情。所以,读者要牢记的是,是否已安装了另一个自己喜欢使用的开发环境。
补充材料
Internet上有很多关于游戏开发和业界发展动态的信息。这里推荐一个值得访问的网站:http://www.UltimateGameProgramming.com。除了有一个访问量很大的社区之外,该网站还提供了大量关于DirectX编程、OpenGL以及游戏引擎编程的信息。同样,读者要牢记的是,如果在运行过程中遇到问题的话,可以使用自己机器上或MSDN网站上的MSDN和DirectX帮助文档。附录A中包含了作者向读者推荐的大量书籍和网站。