注册 | 登录读书好,好读书,读好书!
读书网-DuShu.com
当前位置: 首页出版图书科学技术计算机/网络游戏设计Windows游戏编程大师技巧(第2版)

Windows游戏编程大师技巧(第2版)

Windows游戏编程大师技巧(第2版)

定 价:¥108.00

作 者: (美) André LaMothe 著,沙鹰 译
出版社: 人民邮电出版社
丛编项:
标 签: 多媒体

购买这本书可以去


ISBN: 9787115292483 出版时间: 2012-11-01 包装: 平装
开本: 16开 页数: 734 字数:  

内容简介

  \Dead or alive, you're coming with me.\—Robocop(电影《机械战警》)物换星移,仿佛已经是很久以前,我写了一本名为《WINDOWS游戏编程大师技巧》的书。对于我来说,这本书提供了一个绝好的机会,让我能够实现去创造某些东西的夙愿——那就是去写出一本能够教会读者如何制作游戏的书。现在,已经又过去了几年,我相信我现在更有经验,也更聪明了些,并且在这几年里,我的确又学会了很多游戏制作的窍门,哈哈。这本书,将会续写和弥补上一本书所没有涉及的内容。游戏编程的每一个关键主题都将涵盖其中。我将以我所学,倾囊相授。当然,通常我不会假设读者已经是一个编程大师,或者已经知道如何制作游戏。这本书将适合高级游戏编程人员阅读;同时,初学者也同样适用。虽然如此,本书将以较快的节奏深化内容,所以,不可掉以轻心。现今,可能是跻身游戏行业的人们,有史以来所经历的最酷的时代。我是说,我们现在可以用所拥有的高科技去创造以假乱真的游戏世界!想像一下,未来的游戏,将会是何面貌?但是,所有这些高新技术并非轻易就能掌握,艰辛的努力必不可少。近来,游戏制作所需要掌握的技能已明显提高。但是,如果你正阅读这段文字,或许如我所料,你就是那些乐于迎接挑战的人中的一员。我要说,你来对了地方,作出了正确的选择,因为当你掌握了本书内容,你将能够制作在电脑上运行的全3D,有纹理映射的,具有专业水平的光照效果的视频游戏。此外,你还将懂得蕴涵于游戏之中的人工智能、物理建模、游戏算法和2D/3D图形学的基本原理。同时,你将能够在现在和将来运用3D硬件。你将学到什么通过本书你将学到数以TB计的信息!我决心要往你的大脑里面塞入如此之多的信息以至于可能会有些信息溢出来。认真地说,本书覆盖了全部必要的元素,来创建基于Windows9X/NT/XP/2000平台的PC游戏:? Win32编程? DirectX基础知识? 2D图形和算法? 游戏编程技术和数据结构? 多线程编程? 人工智能? 物理建模? 使用3D加速硬件设备(见配套光盘)除了这些,还有更多其它的内容……本书主要讨论游戏编程。光盘上带有两套完整的在线电子版书籍,涉及Direct3D直接模式和General 3DGraphic。应当具备的基础知识本书假定你可以编程。如果你还不懂如何编写C语言程序,那么阅读本书的某些部分可能会使你感到相当困惑。会让C语言程序员感到心神不安的是,本书中又有一定的范例程序是用C++写的。不过别担心,在我要做任何古怪的事情以前,我将提醒你。或许,如果你需要关于C++程序设计的速成课程,本书的附录D可作为一份C++入门读本来使用。基本上本书只在用到DirectX的场合里才使用C++。然而,我还是决定要在本书中稍微多用一些C++。因为在游戏编程中有如此之多的事情可用面向对象的方法来概括,若是硬要把它们设计成C风格的结构那简直是亵渎了它们。我的底线是:如果你能用C编程,很好。如果你能够用C和C++编程,那就太好了,阅读本书对你来说完全不成问题。众所周知,计算机程序是由逻辑和数学组成。而3D视频游戏很强调数学部分!3D图形学里的内容几乎全部涉及数学。幸运的是那是有趣的数学(的确,数学本身可以很有趣)。只要了解一些基本的代数和几何知识就可以了。我还将教你关于矢量和矩阵的知识。只要会做加、减、乘、除运算,就可以理解这里90%以上的内容,而不一定要亲自进行推导。毕竟,只要能够应用文章中的代码,那就够了。上面所列举的就是所有你应当具备的基础知识。当然,你最好告诉所有的朋友,在大约两年之内他们都将看不到你,因为在这段时间中,你将非常忙碌。但是在你理解制作游戏程序后,就可以尽情享受了!本书的组织《Windows游戏编程大师技巧,第二版》共分为四大部分,计15章和6个附录。第一部分 Windows编程基础第一章 无尽之旅第二章 Windows编程模型第三章 高级Windows编程第四章 Windows GDI、控件和突发奇想第二部分 DirectX和2D基础第五章 DirectX基础和令人生畏的COM第六章 首次接触:DirectDraw第七章 高级DirectDraw和位图图形第八章 矢量光栅化及2D转换第九章 利用DirectInput和力反馈进行输入第十章 用DirectSound和DirectMusic演奏乐曲第三部分 核心游戏编程第十一章 算法、数据结构、内存管理及多线程第十二章 人工智能在游戏中的运用第十三章 基本物理建模第十四章综合运用第四部分 附录附录A CD上的内容附录B 安装DirectX和使用C/C++编译器附录C 三角函数和矢量附录D C++基础附录E 游戏编程资源附录F ASCII表安装本书的配套光盘本书的配套光盘包含本书所有程序源码、可执行文件、示例程序、美术素材、3D建模工具、音效,和补充的技术文章。目录结构如下:CD-DRIVE:\\T3DGAMER1\\SOURCE\\ T3DCHAP01\\ T3DCHAP02\\.. T3DCHAP14\\ T3DCHAP15\\APPLICATIONS\\ARTWORK\\BITMAPS\\MODELS\\SOUND\\ WAVES\\ MIDI\\DIRECTX\\GAMES\\ARTICLES\\ONLINEBOOKS\\ENGINES\\每一个主要目录下含有所需要的具体数据。下面是更详细的分类:T3DGAMER1——含有所有其他目录的根目录。请首先阅读一下README.TXT文件以便了解任何有关本书付印之后才作的改动。SOURCE——含有本书所有的按章节排列的源代码目录。只要将整个SOURCE\\目录全部复制到硬盘上,就可以从硬盘上运行。DEMOS——含有许多公司授权我放在本书配套光盘里的演示版软件。ARTWORK——包含可以在你的程序中免费使用的公开的美术素材。SOUND——包含可以在你的程序中免费使用的公开的音效和音乐素材。DIRECTX——包含最新版本的DirectX SDK。GAMES——包含大量我觉得非常不错的2D和3D的共享游戏软件。ARTICLES——含有游戏编程领域中的大师们撰写的可给人启迪的文章。ONLINEBOOKS——含有一些在线电子版书籍,涉及Direct3D直接模式和General 3D Graphic。ENGINES——含有几种试用版本的3D引擎。本书的配套光盘由于包含许多不同类型的程序和数据,因而没有通用安装程序。你需要自己安装。但是,在大多数情况下,只要将SOURCE\\目录复制到硬盘上,然后在里面运行就可以了。对于其他程序和数据,当你需要时安装就可以了。安装DirectX本书的配套光盘内你唯一必须安装的重要部份是DirectX的SDK和运行时文件(RuntimeFile)。安装程序位于DIRECTX\\目录,与解释最新改动的README.TXT 文件在一起。注意你至少要安装DirectX 8.0SDK,如果你能全面的利用这些光盘就更好。如果你不确定系统里是否有最新的文件,请运行安装程序,系统会提示你。编译本书的程序我在Microsoft Visual C++ 5.0/6.0的环境下编写了本书所含的程序代码。多数情况下这些程序能以任一个与Win32兼容的编译器来编译通过。然而,我还是推荐Microsoft VC++,因为用它作这类工作最有效率。如果你对你的编译器的集成开发环境(IDE)还不熟悉,编译Windows程序的时候你一准会遇到大麻烦。所以请尽管花些时间来熟悉和使用你的编译器。你至少要懂得如何编译一个”HelloWorld”的控制台(console)程序或相似的小程序,然后你才能投入地继续编译其他程序。要编译生成Windows Win32 .EXE程序,应当将你的应用程序工程的目标程序设定为Win32.EXE再进行编译。但是要创建DirectX程序的话,必须在工程中包含DirectX输入库。你可能认为只要将DirectX库添加到你的头文件包含路径(Includepath)中就可以了,但那样不行。为了避免麻烦,将DirectX的众多.LIB库文件手动包含到工程中或者是工作空间(Workspace)中。在安装的DirectXSDK主目录下的LIB\\目录下可以找到.LIB文件。这样就不会导致任何连接错误。大部分情况下,应当还需要下面这些库:DDRAW.LIB DirectDraw输入库DINPUT.LIB DirectInput输入库DINPUT8.LIB DirectInput8输入库DSOUND.LIB DirectSound输入库D3DIM.LIB Direct3D直接模式(或立即模式)输入库DXGUID.LIB DirectX GUID库WINMM.LIB Windows多媒体扩展库对于上述文件,我们将在具体学习时再详细介绍,但是当连接程序报错说“未知的符号(UnresolvedSymbol)”时应记起这些库。我不希望收到初学程序员任何关于这问题的电子邮件。除了DirectX .LIB文件之外,还要在标题搜索路径中包含DirectX.H头文件,这一点同样要牢记在心。还要确认将DirectXSDK目录放在搜索路径列表的第一位,因为许多C++编译器自己带有旧版本的DirectX,编译器可能会在自己的INCLUDE\\目录下找到旧版本的头文件,而使用这些头文件是错误的。正确的位置是DirectXSDK的include目录,即于DirectX SDK安装目录下的INCLUDE\\子目录。最后,如果使用Borland产品,要确认使用DirectX .LIB文件的Borland版本。该文件位于DirectXSDK安装目录下的Borland\\目录。关于第二版《Windows游戏编程大师技巧》的此次修订更新了第一版中的内容。更新是多方面的,诸如清除拼写和技术错误,并且加入新的内容,使得可用DirectX的最新版本来配合编译本书所带的程序代码(在这一版的DirectX里微软公司改编并移除了DirectDraw,真不知道他们是怎么想的!)。这新版书包括关于16位RGB 高彩模式的更多细节,将在DirectX 8.0下通过编译,还有一个新章节专门讨论文本解析(textparsing),此外贯穿全书更有新增的解释。总之,这是《Windows游戏编程大师技巧》的一个更加清楚,更加完全的版本。本书主要讨论游戏程序设计;因此,涉及的DirectX仅限于让读者充分理解游戏编程中的各个主题。一般情况下,我的原则是让事情尽可能简单。DirectDraw和Direct3D的合并对3D应用程序来讲是好事,但是对2D游戏和教学来说就有点过于强大和复杂了。因此,我在未发生改变的地方使用DirectX8.0,同时仍然使用DirectDraw7.0来简化说明。毕竟,DirectX只是一些技术,而人们总是得为特定应用程序挑选合适的技术来用。

作者简介

  \Dead or alive, you're coming with me.\—Robocop(电影《机械战警》)物换星移,仿佛已经是很久以前,我写了一本名为《WINDOWS游戏编程大师技巧》的书。对于我来说,这本书提供了一个绝好的机会,让我能够实现去创造某些东西的夙愿——那就是去写出一本能够教会读者如何制作游戏的书。现在,已经又过去了几年,我相信我现在更有经验,也更聪明了些,并且在这几年里,我的确又学会了很多游戏制作的窍门,哈哈。这本书,将会续写和弥补上一本书所没有涉及的内容。游戏编程的每一个关键主题都将涵盖其中。我将以我所学,倾囊相授。当然,通常我不会假设读者已经是一个编程大师,或者已经知道如何制作游戏。这本书将适合高级游戏编程人员阅读;同时,初学者也同样适用。虽然如此,本书将以较快的节奏深化内容,所以,不可掉以轻心。现今,可能是跻身游戏行业的人们,有史以来所经历的最酷的时代。我是说,我们现在可以用所拥有的高科技去创造以假乱真的游戏世界!想像一下,未来的游戏,将会是何面貌?但是,所有这些高新技术并非轻易就能掌握,艰辛的努力必不可少。近来,游戏制作所需要掌握的技能已明显提高。但是,如果你正阅读这段文字,或许如我所料,你就是那些乐于迎接挑战的人中的一员。我要说,你来对了地方,作出了正确的选择,因为当你掌握了本书内容,你将能够制作在电脑上运行的全3D,有纹理映射的,具有专业水平的光照效果的视频游戏。此外,你还将懂得蕴涵于游戏之中的人工智能、物理建模、游戏算法和2D/3D图形学的基本原理。同时,你将能够在现在和将来运用3D硬件。你将学到什么通过本书你将学到数以TB计的信息!我决心要往你的大脑里面塞入如此之多的信息以至于可能会有些信息溢出来。认真地说,本书覆盖了全部必要的元素,来创建基于Windows9X/NT/XP/2000平台的PC游戏:? Win32编程? DirectX基础知识? 2D图形和算法? 游戏编程技术和数据结构? 多线程编程? 人工智能? 物理建模? 使用3D加速硬件设备(见配套光盘)除了这些,还有更多其它的内容……本书主要讨论游戏编程。光盘上带有两套完整的在线电子版书籍,涉及Direct3D直接模式和General 3DGraphic。应当具备的基础知识本书假定你可以编程。如果你还不懂如何编写C语言程序,那么阅读本书的某些部分可能会使你感到相当困惑。会让C语言程序员感到心神不安的是,本书中又有一定的范例程序是用C++写的。不过别担心,在我要做任何古怪的事情以前,我将提醒你。或许,如果你需要关于C++程序设计的速成课程,本书的附录D可作为一份C++入门读本来使用。基本上本书只在用到DirectX的场合里才使用C++。然而,我还是决定要在本书中稍微多用一些C++。因为在游戏编程中有如此之多的事情可用面向对象的方法来概括,若是硬要把它们设计成C风格的结构那简直是亵渎了它们。我的底线是:如果你能用C编程,很好。如果你能够用C和C++编程,那就太好了,阅读本书对你来说完全不成问题。众所周知,计算机程序是由逻辑和数学组成。而3D视频游戏很强调数学部分!3D图形学里的内容几乎全部涉及数学。幸运的是那是有趣的数学(的确,数学本身可以很有趣)。只要了解一些基本的代数和几何知识就可以了。我还将教你关于矢量和矩阵的知识。只要会做加、减、乘、除运算,就可以理解这里90%以上的内容,而不一定要亲自进行推导。毕竟,只要能够应用文章中的代码,那就够了。上面所列举的就是所有你应当具备的基础知识。当然,你最好告诉所有的朋友,在大约两年之内他们都将看不到你,因为在这段时间中,你将非常忙碌。但是在你理解制作游戏程序后,就可以尽情享受了!本书的组织《Windows游戏编程大师技巧,第二版》共分为四大部分,计15章和6个附录。第一部分 Windows编程基础第一章 无尽之旅第二章 Windows编程模型第三章 高级Windows编程第四章 Windows GDI、控件和突发奇想第二部分 DirectX和2D基础第五章 DirectX基础和令人生畏的COM第六章 首次接触:DirectDraw第七章 高级DirectDraw和位图图形第八章 矢量光栅化及2D转换第九章 利用DirectInput和力反馈进行输入第十章 用DirectSound和DirectMusic演奏乐曲第三部分 核心游戏编程第十一章 算法、数据结构、内存管理及多线程第十二章 人工智能在游戏中的运用第十三章 基本物理建模第十四章综合运用第四部分 附录附录A CD上的内容附录B 安装DirectX和使用C/C++编译器附录C 三角函数和矢量附录D C++基础附录E 游戏编程资源附录F ASCII表安装本书的配套光盘本书的配套光盘包含本书所有程序源码、可执行文件、示例程序、美术素材、3D建模工具、音效,和补充的技术文章。目录结构如下:CD-DRIVE:\\T3DGAMER1\\SOURCE\\ T3DCHAP01\\ T3DCHAP02\\.. T3DCHAP14\\ T3DCHAP15\\APPLICATIONS\\ARTWORK\\BITMAPS\\MODELS\\SOUND\\ WAVES\\ MIDI\\DIRECTX\\GAMES\\ARTICLES\\ONLINEBOOKS\\ENGINES\\每一个主要目录下含有所需要的具体数据。下面是更详细的分类:T3DGAMER1——含有所有其他目录的根目录。请首先阅读一下README.TXT文件以便了解任何有关本书付印之后才作的改动。SOURCE——含有本书所有的按章节排列的源代码目录。只要将整个SOURCE\\目录全部复制到硬盘上,就可以从硬盘上运行。DEMOS——含有许多公司授权我放在本书配套光盘里的演示版软件。ARTWORK——包含可以在你的程序中免费使用的公开的美术素材。SOUND——包含可以在你的程序中免费使用的公开的音效和音乐素材。DIRECTX——包含最新版本的DirectX SDK。GAMES——包含大量我觉得非常不错的2D和3D的共享游戏软件。ARTICLES——含有游戏编程领域中的大师们撰写的可给人启迪的文章。ONLINEBOOKS——含有一些在线电子版书籍,涉及Direct3D直接模式和General 3D Graphic。ENGINES——含有几种试用版本的3D引擎。本书的配套光盘由于包含许多不同类型的程序和数据,因而没有通用安装程序。你需要自己安装。但是,在大多数情况下,只要将SOURCE\\目录复制到硬盘上,然后在里面运行就可以了。对于其他程序和数据,当你需要时安装就可以了。安装DirectX本书的配套光盘内你唯一必须安装的重要部份是DirectX的SDK和运行时文件(RuntimeFile)。安装程序位于DIRECTX\\目录,与解释最新改动的README.TXT 文件在一起。注意你至少要安装DirectX 8.0SDK,如果你能全面的利用这些光盘就更好。如果你不确定系统里是否有最新的文件,请运行安装程序,系统会提示你。编译本书的程序我在Microsoft Visual C++ 5.0/6.0的环境下编写了本书所含的程序代码。多数情况下这些程序能以任一个与Win32兼容的编译器来编译通过。然而,我还是推荐Microsoft VC++,因为用它作这类工作最有效率。如果你对你的编译器的集成开发环境(IDE)还不熟悉,编译Windows程序的时候你一准会遇到大麻烦。所以请尽管花些时间来熟悉和使用你的编译器。你至少要懂得如何编译一个”HelloWorld”的控制台(console)程序或相似的小程序,然后你才能投入地继续编译其他程序。要编译生成Windows Win32 .EXE程序,应当将你的应用程序工程的目标程序设定为Win32.EXE再进行编译。但是要创建DirectX程序的话,必须在工程中包含DirectX输入库。你可能认为只要将DirectX库添加到你的头文件包含路径(Includepath)中就可以了,但那样不行。为了避免麻烦,将DirectX的众多.LIB库文件手动包含到工程中或者是工作空间(Workspace)中。在安装的DirectXSDK主目录下的LIB\\目录下可以找到.LIB文件。这样就不会导致任何连接错误。大部分情况下,应当还需要下面这些库:DDRAW.LIB DirectDraw输入库DINPUT.LIB DirectInput输入库DINPUT8.LIB DirectInput8输入库DSOUND.LIB DirectSound输入库D3DIM.LIB Direct3D直接模式(或立即模式)输入库DXGUID.LIB DirectX GUID库WINMM.LIB Windows多媒体扩展库对于上述文件,我们将在具体学习时再详细介绍,但是当连接程序报错说“未知的符号(UnresolvedSymbol)”时应记起这些库。我不希望收到初学程序员任何关于这问题的电子邮件。除了DirectX .LIB文件之外,还要在标题搜索路径中包含DirectX.H头文件,这一点同样要牢记在心。还要确认将DirectXSDK目录放在搜索路径列表的第一位,因为许多C++编译器自己带有旧版本的DirectX,编译器可能会在自己的INCLUDE\\目录下找到旧版本的头文件,而使用这些头文件是错误的。正确的位置是DirectXSDK的include目录,即于DirectX SDK安装目录下的INCLUDE\\子目录。最后,如果使用Borland产品,要确认使用DirectX .LIB文件的Borland版本。该文件位于DirectXSDK安装目录下的Borland\\目录。关于第二版《Windows游戏编程大师技巧》的此次修订更新了第一版中的内容。更新是多方面的,诸如清除拼写和技术错误,并且加入新的内容,使得可用DirectX的最新版本来配合编译本书所带的程序代码(在这一版的DirectX里微软公司改编并移除了DirectDraw,真不知道他们是怎么想的!)。这新版书包括关于16位RGB 高彩模式的更多细节,将在DirectX 8.0下通过编译,还有一个新章节专门讨论文本解析(textparsing),此外贯穿全书更有新增的解释。总之,这是《Windows游戏编程大师技巧》的一个更加清楚,更加完全的版本。本书主要讨论游戏程序设计;因此,涉及的DirectX仅限于让读者充分理解游戏编程中的各个主题。一般情况下,我的原则是让事情尽可能简单。DirectDraw和Direct3D的合并对3D应用程序来讲是好事,但是对2D游戏和教学来说就有点过于强大和复杂了。因此,我在未发生改变的地方使用DirectX8.0,同时仍然使用DirectDraw7.0来简化说明。毕竟,DirectX只是一些技术,而人们总是得为特定应用程序挑选合适的技术来用。

图书目录

第一部分 Windows编程基础
第1章 学海无涯
1.1 历史一瞥
1.2 设计游戏
1.3 游戏类型
1.4 集思广益
1.5 设计文档和情节串联图板
1.6 使游戏具有趣味性
1.7 游戏的构成
1.8 常规游戏编程指导规范
1.9 使用工具
1.10 从准备到完成——使用编译器
1.11 示例:FreakOut
1.12 小结
第2章 Windows编程模型
2.1 Windows的起源
2.1.1 早期版本的Windows
2.1.2 Windows 3.x
2.1.3 Windows 95
2.1.4 Windows 98
2.1.5 Windows ME
2.1.6 Windows XP
2.1.7 Windows NT/2000
2.1.8 Windows 基本架构:Win9X/NT
2.2 多任务和多线程
2.2.1 获取线程的信息
2.2.2 事件模型
2.3 按照微软风格编程:匈牙利符号表示法
2.3.1 变量的命名
2.3.2 函数的命名
2.3.3 类型和常量的命名
2.3.4 类的命名
2.3.5 参数的命名
2.4 世界上最简单的Windows程序
2.4.1 总是从WinMain()开始
2.4.2 程序剖析
2.4.3 选择一个信息框
2.5 现实中的Windows应用程序
2.6 Windows类
2.7 注册Windows类
2.8 创建窗口
2.9 事件处理程序
2.10 主事件循环
2.11 产生一个实时事件循环
2.12 打开多个窗口
2.13 小结
第3章 高级Windows编程
3.1 使用资源
3.1.1 整合资源
3.1.2 使用图标资源
3.1.3 使用光标资源
3.1.4 创建字符串表资源
3.1.5 使用.WAV声音资源
3.1.6 使用编译器创建.RC文件
3.2 使用菜单
3.2.1 创建菜单
3.2.2 装载菜单
3.2.3 响应菜单事件消息
3.3 GDI(图形设备接口)简介
3.3.1 重拾WM_PAINT信息
3.3.2 视频显示基础和色彩(Video Display Basics and Color)
3.3.3 RGB和调色板模式
3.3.4 基本文本显示
3.4 处理重要事件
3.4.1 Windows操作
3.4.2 处理键盘事件
3.4.3 处理鼠标事件
3.5 自行发送消息
3.6 小结
第4章 Windows GDI、控件和灵感
4.1 高级GDI绘图
4.1.1 掀开图形设备描述表的盖头来
4.1.2 颜色、画笔和画刷
4.1.3 使用画笔
4.1.4 使用画刷
4.2 点、线、平面多边形和圆
4.2.1 绘制点
4.2.2 绘制线段
4.2.3 绘制矩形
4.2.4 绘制圆
4.2.5 绘制多边形
4.3 深入文本和字体
4.4 定时高于一切
4.4.1 WM_TIMER消息
4.4.2 低层定时操作
4.5 使用控件
4.5.1 按钮
4.5.2 向子控件发送消息
4.6 获取信息
4.7 T3D游戏控制台程序
4.8 小结
第二部分 DirectX和2D基础
第5章 DirectX基础知识和令人生畏的COM
5.1 DirectX基础
5.1.1 HEL和HAL
5.1.2 更多的DirectX基础类
5.2 COM:是微软的杰作,还是魔鬼的杰作
5.2.1 COM对象究竟是什么
5.2.2 接口标识符和GUID的详细内容
5.2.3 创建一个类COM对象
5.2.4 COM的简要回顾
5.2.5 可运行的COM程序
5.3 应用DirectX COM对象
5.3.1 COM和函数指针
5.3.2 创建和使用DirectX界面
5.3.3 接口查询
5.4 COM的前景
5.5 小结
第6章 初次邂逅DirectDraw
6.1 DirectDraw的接口
6.1.1 接口的特性
6.1.2 组合使用接口
6.2 创建DirectDraw对象
6.2.1 对DirectDraw进行错误处理
6.2.2 顺便提一下接口
6.3 与Windows协作
6.4 设置模式
6.5 色彩的奥秘
6.6 创建显示表面
6.6.1 创建一个主显示表面
6.6.2 关联调色板
6.6.3 绘制像素
6.6.4 清理资源
6.7 小结
第7章 高级DirectDraw和位图图形
7.1 使用高彩模式
7.1.1 16位高彩模式
7.1.2 获取像素格式
7.1.3 24/32位真彩色模式
7.2 双缓冲
7.3 表面动态
7.4 页面切换
7.5 显存块移动单元(Blitter)
7.5.1 使用Blitter进行内存填充
7.5.2 从一个表面向另一个表面复制位图
7.6 基础裁剪知识
7.6.1 将像素按视口裁剪
7.6.2 位图裁剪技巧
7.6.3 使用IDirectDrawClipper进行DirectDraw裁剪
7.7 使用位图
7.7.1 载入.BMP文件
7.7.2 使用位图
7.7.3 载入8位位图
7.7.4 载入16位位图
7.7.5 载入24位位图
7.7.6 总结位图
7.8 离屏表面
7.8.1 创建离屏表面
7.8.2 在离屏表面上进行Blitting
7.8.3 设置Blitter
7.8.4 色彩键
7.8.5 源色彩键
7.8.6 目标色彩键
7.8.7 使用Blitter(终于!)
7.9 位图的旋转和缩放
7.10 离散采样理论
7.11 色彩效果
7.11.1 256色模式下的色彩动画
7.11.2 256色模式下的色彩旋转
7.11.3 使用RGB模式的技巧
7.12 手动色彩变换及查询表
7.13 新的DirectX色彩和Gamma控制接口
7.14 将GDI和DirectX联用
7.15 DirectDraw的庐山真面目
7.15.1 主DirectDraw对象
7.15.2 关于表面
7.15.3 使用调色板
7.16 在窗口模式下使用DirectDraw
7.17 小结
第8章 矢量光栅化及2D变换
8.1 绘制线条
8.1.1 Bresenham算法
8.1.2 算法的速度优化
8.2 基本2D图形裁剪
8.2.1 利用点斜式计算两条直线的交点
8.2.2 利用一般式计算两条直线的交点
8.2.3 利用矩阵式计算两条直线的交点
8.2.4 裁剪直线
8.2.5 Cohen-Sutherland算法
8.3 线框多边形
8.3.1 多边形数据结构
8.3.2 多边形的绘制及裁剪
8.4 2D平面里的变换
8.4.1 平移
8.4.2 旋转
8.4.3 缩放
8.5 矩阵引论
8.5.1 单位矩阵
8.5.2 矩阵加法
8.5.3 矩阵乘法
8.5.4 使用矩阵进行变换
8.6 平移
8.7 缩放
8.8 旋转
8.9 填充实心多边形
8.9.1 三角形和四边形类型
8.9.2 绘制三角形和四边形
8.9.3 三角形解构详述
8.9.4 四边形光栅化的一般性讨论
8.9.5 多边形的三角化
8.10 多边形碰撞检测
8.10.1 接近度、边界球/圆
8.10.2 边界盒
8.10.3 点包含
8.11 深入定时和同步
8.12 卷轴和摇镜头
8.12.1 页面卷轴引擎
8.12.2 均匀平铺(Tile)显示引擎
8.12.3 稀疏位图平铺显示引擎
8.13 伪3D等轴测引擎
8.13.1 方法1:基于单元,全二维
8.13.2 方法2:基于全屏,具有一些二维或三维的碰撞网络
8.13.3 方法3:采用全三维数学运算,使用一个固定的相机视角
8.14 T3DLIB1函数库
8.14.1 引擎架构
8.14.2 新的游戏编程控制台程序
8.14.3 基本定义
8.14.4 可用的宏
8.14.5 数据类型和结构
8.14.6 全局定义
8.14.7 DirectDraw接口
8.14.8 2D多边形函数
8.14.9 2D基本图元函数
8.14.10 数学和误差函数
8.14.11 位图函数
8.14.12 调色板函数
8.14.13 实用工具函数
8.15 BOB引擎
8.16 小结
第9章 DirectInput输入和力反馈
9.1 输入循环
9.2 DirectInput序曲
9.2.1 DirectInput组件
9.2.2 设置DirectInput的一般步骤
9.2.3 数据采集模式
9.2.4 创建主DirectInput对象
9.2.5 101键盘
9.2.6 读数据过程中的问题:重获取
9.2.7 捕捉鼠标
9.2.8 使用游戏杆
9.2.9 将输入消息化
9.3 力反馈
9.3.1 力反馈的物理原理
9.3.2 设置力反馈
9.3.3 力反馈演示程序
9.4 编写一个广泛适用的输入系统:T3DLIB2.CPP
9.5 小结
第10章 用DirectSound和DirectMusic演奏乐曲
10.1 在PC上对声音编程
10.2 从此有了声音…
10.3 数码声音与MIDI比较——音质好且存储省
10.3.1 数码声音——从“位”开始
10.3.2 合成声音与MIDI
10.3.3 MIDI概述
10.4 发声硬件
10.4.1 波表合成
10.4.2 波导合成
10.5 数码录音:设备和技术
10.5.1 录制声音
10.5.2 处理声音
10.6 DirectSound中的麦克风
10.7 初始化DirectSound
10.7.1 理解协作等级
10.7.2 设定协作等级
10.8 主声音缓冲区与辅助声音缓冲区
10.8.1 使用辅助缓冲区
10.8.2 创建辅助声音缓冲区
10.8.3 把数据写入辅助声音缓冲区
10.9 渲染声音
10.9.1 播放声音
10.9.2 停止播放
10.9.3 控制音量
10.9.4 调整频率
10.9.5 调整声道平衡
10.10 用DirectSound反馈信息
10.11 从磁盘中读取声音数据
10.11.1 .WAV文件格式
10.11.2 读取.WAV文件
10.12 DirectMusic:伟大的试验
10.13 DirectMusic的体系结构
10.14 初始化DirectMusic
10.14.1 初始化COM
10.14.2 创建一个演奏对象
10.14.3 给演奏对象增加端口
10.15 加载一个MIDI段
10.15.1 创建一个加载程序
10.15.2 加载MIDI文件
10.16 操作MIDI段
10.16.1 播放一个MIDI段
10.16.2 停止一个MIDI段
10.16.3 检查MIDI段的状态
10.16.4 释放一个MIDI段
10.16.5 关闭DirectMusic
10.16.6 一些DirectMusic的实例
10.17 T3DLIB3声音和乐曲库
10.17.1 头文件
10.17.2 类型
10.17.3 全局变量
10.17.4 DirectSound API封装
10.17.5 DirectMusic API封装
10.18 小结
第三部分 核心游戏编程
第11章 算法、数据结构、 内存管理和多线程
11.1 数据结构
11.1.1 静态结构和数组
11.1.2 链表
11.2 算法分析
11.3 递归
11.4 树结构
11.4.1 建立二分查找树(BST)
11.4.2 搜索BST
11.5 优化理论
11.5.1 运用你的头脑
11.5.2 数学技巧
11.5.3 定点运算
11.5.4 循环体展开
11.5.5 查找表
11.5.6 汇编语言
11.6 制作演示
11.6.1 预先记录的演示
11.6.2 由人工智能控制的演示
11.7 保存游戏的手段
11.8 实现多人游戏
11.8.1 轮流
11.8.2 分屏
11.9 多线程编程技术
11.9.1 多线程编程的术语
11.9.2 为何要在游戏中使用线程
11.9.3 取得一个线程
11.9.4 线程间的消息传递
11.9.5 等待合适时机
11.9.6 多线程和DirectX
11.9.7 高级多线程编程
10.10 小结
第12章 人工智能
12.1 人工智能初步
12.2 确定性AI算法
12.2.1 随机运动
12.2.2 跟踪算法
12.2.3 反跟踪:闪避算法
12.3 模式以及基本控制脚本的编写
12.3.1 基本模式
12.3.2 具备条件逻辑处理的模式
12.4 行为状态系统建模
12.4.1 基本状态机
12.4.2 加入更多表现个性的行为
12.5 用软件对记忆和学习进行建模
12.6 计划树和决策树
12.6.1 计划编程
12.6.2 实现真正的计划生成器
12.7 寻路
12.7.1 试探法(Trial and Error)
12.7.2 轮廓跟踪
12.7.3 碰撞规避跟踪
12.7.4 路点寻路
12.7.5 一个赛车例子
12.7.6 可靠的寻路
12.8 高级AI脚本
12.8.1 设计脚本语言
12.8.2 使用C/C++编译器
12.9 人工神经网络
12.10 遗传算法
12.11 模糊逻辑
12.11.1 普通集合论
12.11.2 模糊集合理论
12.11.3 模糊语言变量及其规则
12.11.4 模糊流形与成员关系
12.11.5 模糊关联矩阵
12.11.6 用模糊化的输入处理FAM
12.11.7 暖融融
12.12 为游戏创造真正的AI
12.13 小结
第13章 基本物理建模
13.1 基本物理学定律
13.1.1 质量(m)
13.1.2 时间(t)
13.1.3 位置(s)
13.1.4 速率(v)
13.1.5 加速度(a)
13.1.6 力(F)
13.1.7 多维空间中的力
13.1.8 动量(P)
13.2 线性动量的物理性质:守恒与传递
13.3 模拟万有引力效果
13.3.1 模拟重力井
13.3.2 模拟炮弹弹道
13.4 讨厌的摩擦力
13.4.1 摩擦基本概念
13.4.2 斜面上的摩擦力(高级)
13.5 基本的特殊碰撞反应
13.5.1 简单的x,y反弹物理
13.5.2 计算任意方向上的平面碰撞反应
13.5.3 矢量反射示例
13.5.4 线段的交点
13.6 实际2D物体间的精确碰撞响应(高级)
13.7 解决n-t坐标系统
13.8 简单运动学
13.8.1 求解正向运动学问题
13.8.2 解决反向运动学问题
13.9 粒子系统
13.9.1 每颗粒子都需要的东西
13.9.2 设计粒子引擎
13.9.3 粒子引擎软件
13.9.4 产生初始条件
13.9.5 整合微粒系统
13.10 创建游戏的物理模型
13.10.1 物理建模的数据结构
13.10.2 基于帧的模拟与基于时间的模拟
13.11 小结
第14章 文字时代
14.1 什么是文字游戏
14.2 文字游戏如何工作
14.3 从外部世界获得输入
14.4 语言分析和解析
14.4.1 词法分析
14.4.2 句法分析
14.4.3 语义分析
14.5 组成游戏世界
14.5.1 表示场景
14.5.2 放置物体
14.5.3 让事情发生
14.5.4 自由移动
14.5.5 物品系统
14.6 实现视觉、听觉和嗅觉
14.6.1 听觉
14.6.2 嗅觉
14.6.3 视觉
14.7 实时响应
14.8 错误处理
14.9 造访Shadow Land
14.10 Shadow Land中使用的语言
14.11 编译和运行Shadow Land
14.12 小结
第15章 综合运用
15.1 Outpost的设计初稿
15.1.1 游戏背景
15.1.2 设计游戏玩法
15.2 用于编写游戏的工具
15.3 游戏场景:在太空中卷动
15.4 玩家控制的飞船:鬼怪号
15.5 小行星带
15.6 敌人
15.6.1 边哨(Outpost)
15.6.2 捕食者太空雷
15.6.3 战舰
15.7 “宝物”
15.8 HUD
15.9 粒子系统
15.10 玩游戏
15.11 编译Outpost
15.12 结束语
第四部分 附录
附录A 光盘内容简介
附录B 安装DirectX和使用C/C++编译器
附录C 数学和三角学回顾
附录D C++入门
附录E 游戏编程资源
附录F ASCII表

本目录推荐