本书介绍了在Windows环境下进行游戏编程所需用到的各方面知识,作者是著名的游戏开发大师Andrè LaMothe,他的每一本作品基本上都被视为游戏编程书籍的镇山之作。本书第一版的中文版自面市以来获得了广泛好评,持续热销,多次重印。此次修订在多方面更新了第一版中的内容,并且清除了拼写和技术错误,使用DirectX的最新版本来配合编译本书所带的程序代码,加入了大量新内容,例如关于16 位RGB 高彩模式的更多细节及众多新增的解释,还有一个新章节专门讨论文本解析(text parsing)。总之,这是《Windows游戏编程大师技巧》的一个更加清楚、更加完全的版本。\r\n
序\r\n简介\r\n第1部分 Windows编程基础\r\n第1章 学海无涯\r\n历史一瞥\r\n设计游戏\r\n游戏类型\r\n集思广益\r\n设计文档和情节中联图板\r\n使游戏具有趣味性\r\n游戏的构成\r\n常规游戏编程指导规范\r\n使用工具\r\n从准备到完成——使用编译器\r\n例子:FreakOut\r\n总结\r\n第2章 Windows编程模型\r\nWindows的起源\r\n多任务(Multitasking)和多线程(Multithreading)\r\n按照微软风格编程:匈牙利符号的表示法\r\n世界上最简单的Windows程序\r\n现实中的Windows应用程序\r\nWindows类\r\n注册Windows类\r\n创建窗口\r\n事件句柄\r\n主事件循环\r\n产生一个实时事件循环\r\n打开多个窗口\r\n总结\r\n第3章 高级Windows编程\r\n使用资源\r\n使用菜单\r\nGDI(图形设备接口)简介\r\n处理重要事件\r\n自行发送消息\r\n总结\r\n第4章 Windows GDI、控件和突发奇想\r\n高级GDI绘图\r\n点、线、平面多边形和圆\r\n关于文本和字体\r\n定时高于一切\r\n使用控件\r\n获取信息\r\nT3D游戏控制台程序\r\n总结\r\n第2部分 DirectX和2D基础\r\n第5章 DirectX基础知识和令人生畏的COM\r\nDirectX基础\r\nCOM:是微软,还是魔鬼的杰作?\r\n应用DirectX COM对象\r\nCOM的前景\r\n总结\r\n第6章 初次邂逅DirectDraw\r\nDirectDraw的接口\r\n创建DirectDraw对象\r\n与Windows协作\r\n设置模式\r\n色彩的奥秘\r\n创建显示表面\r\n总结\r\n第7章 高级DirectDraw和位图图形\r\n使用高彩模式\r\n双缓冲\r\n表面动态\r\n页面切换\r\n使用blitter\r\n基础裁剪知识\r\n使用位图\r\n离屏表面\r\n位图的旋转和缩放\r\n离散采样理论\r\n色彩效果\r\n手动色彩变换及查询表\r\nDirectX新的色彩和Gamma控制接口\r\n将GDI和DirectX联用\r\nDirectDraw的庐山真面目\r\n在窗口模式下使用DirectDraw\r\n总结\r\n第8章 矢量光栅化及2D变换\r\n绘制线条\r\n基础2D图形裁剪知识\r\n线框多边形\r\n2D平面里的变换(Transformation)\r\n阵引论\r\n平移\r\n缩放\r\n旋转\r\n填充实心多边形\r\n多边形碰撞检测\r\n深入定时和同步\r\n卷轴和摇镜头\r\n伪3D等轴测引擎\r\nT3DLIB1函数库\r\nBOB引擎\r\n总结\r\n第9章 DirectInput输入和力反馈\r\n输入循环\r\nDirectInput序曲\r\n力反馈\r\n编写一个广泛适用的输入系统:T3DLIB2.CPP\r\n总结\r\n第10章 用DirectSound和DirectMusic演奏乐曲\r\n在PC上对声音编程\r\n从此有了声音\r\n数码声音与MIDI有比较——音质好且存储省\r\n发声硬件\r\n数码录音:设备和技术\r\nDirectSound中的麦克风\r\n初始化DirectSound\r\n主声音缓冲与辅助声音缓冲\r\n播放声音\r\n用DirectSound反馈信息\r\n从磁盘中读取声音数据\r\nDirectMusic:伟大的试验\r\nDirectMusic的体系结构\r\n初始化DirectMusic\r\n加载一个MIDI段\r\n操作MIDI段\r\nT3DLIB3声音和乐曲库\r\n总结\r\n第3部分 核心游戏编程\r\n第11章 算法、数据结构、内存管理和多线程\r\n数据结构\r\n算法分析\r\n递归\r\n树结构\r\n优化理论\r\n制作演示\r\n保存游戏的手段\r\n实现多人游戏\r\n多线程编程技术\r\n总结\r\n第12章 人工智能\r\n人工智能初步\r\n确定性AI算法\r\n模式以及基本控制脚本的编写\r\n建模行为状态系统\r\n用软件对记忆和学习进行建模\r\n计划树和决策树\r\n寻路\r\n高级AI脚本\r\n人工神经网络\r\n遗传算法\r\n模糊逻辑\r\n为游戏创造真正的AI\r\n总结\r\n第13章 基本物理建模\r\n基本物理学定律\r\n线性动量的物理性质:守恒与传递\r\n模拟万有引力效果\r\n讨厌的摩擦力\r\n基本的特殊碰撞反应\r\n实际2D物体间的精确碰撞响应(高级)\r\n解决n-t坐标系统\r\n简单运动学\r\n粒子系统\r\n创建游戏的物理模型\r\n总结\r\n第14章 文字时代\r\n什么是文字游戏\r\n文字游戏如何工作\r\n从外部世界获得输入\r\n语言分析和解析\r\n组成游戏世界\r\n实现听觉、嗅觉和视觉\r\n实时响应\r\n错误处理\r\n造访Shadow Land\r\nShadow Land中使用的语言\r\n编译和运行Shadow Land\r\n总结\r\n第15章 综合运用\r\nOutpost的设计初稿\r\n用于编写游戏的工具\r\n游戏场景:在太空中卷动\r\n玩家控制的飞船:“鬼怪号”\r\n小行星带\r\n敌人\r\n“宝物”\r\nHUD\r\n粒子系统\r\n玩游戏\r\n编译Outpost\r\n运行时用到的文件\r\n结束语\r\n第4部分 附录\r\n附录A 光盘内容简介\r\n附录B 安装DirectX和使用C/C++编译器\r\n使用C/C++编译器\r\n附录C 数学和三角学回顾\r\n三角学\r\n矢量(Vector)\r\n附录D C++入门\r\nC++是什么\r\n最低限度应当了解的C++内容\r\n新的类型、关键字和约定\r\n流式输入输出\r\n类\r\n域操作符\r\n函数和操作符重载\r\n总结\r\n附录E 游戏编程资源\r\n游戏编程站点\r\n下载点\r\n二维/三维引擎\r\n游戏编程书籍\r\n微软公司的DirectX多媒体展示\r\n站在业界浪尖\r\n游戏开发杂志\r\nXtreme Games LLC\r\n附录F ASCII码表 \r\n
记得我爱上计算机是在1983年,那时我在Apple IIe计算机上编写Logo语言程序(感谢Woz!)。那段经历带来的成就感让我非常着迷,并深深印在了我的脑海里。计算机可以做任何我要它做的事。即使是在无数次的循环之后,它仍然不知疲倦,更不会质疑我要它完成的任何一项具体任务的理由。它只是默默地完成工作。这一段经历和一部叫做《War Games》的电影, 以及一个名为Andre LaMothe的作者,对我的职业生涯起到了举足轻重的作用。
在1994年我购买了第一本Andre LaMothe的书, 书名是《Sams Teach Yourself GameProgramming in 21 Days))。我从来没有想过,原来编写视频游戏也能成为一种职业。于是,我发现了在我对编程的热爱和对视频游戏的迷恋之间,存在着这样一种联系。从前谁能想像我花在玩Galaga(小蜜蜂)这个游戏上的那么多时间在现在也可被视为是一种研究呢?Andre的写作风格和教学方式鼓励了我,并且让我相信其实我也能够编写视频游戏。我还记得当时我给他打了电话(直到现在我仍然觉得难以置信,他真的公布了自己的电话号码,并且和我这样的读者谈话),求助我为物理课准备的一个简单程序,那是建立在他的一个气体模型演示程序的基础上的。当时我无论如何都无法使那个程序运行起来。他当即检查了一下我的程序,很快,他对我说:“Rifhard,你可真要命,你必须在每行语句的结尾打上分号!”原来这就是问题所在,于是我的第一个游戏程序很快完成并正常运作了。
几年过后,我有幸和Andre一起制作一个名叫“Rex Blade”的游戏。我担任工具程序员和关卡设计员。这对我来说是一个棒极了的学习经历。我疯狂地工作(因为Andre简直就是个严厉的奴隶监工),同时也乐趣无穷(可以去看电影、玩射击、滑雪,还有很多你意想不到的东西,比如0.51口径的“沙漠之鹰”手枪,很酷吧)。最后我们终于完成了一个3D互动视频游戏三部曲!RexBlade从策划构思到正式销售仅仅只花了短短6个月的时间(当然,Rex可作为一份有意思的开发手记的题材)!开发Rex让我了解了,制作一个真正的视频游戏所需要的步骤:而和Andre的合作让我知道了,什么是昼夜不停地工作——那真是毫不夸张啊。当我一开始听他说,他一个星期通常工作100小时以上的时候,我还以为他是开玩笑呢。 .
在软件工程学里,很少有别的领域能像游戏编程那样对硬件、软件和程序员自己提出那么高的要求。实在是有很多错综复杂的部分必须完美地结合并且在一起运作:数学、物理、人工智能、图形学、音响、音乐、图形用户界面、数据库结构和其他种种。这就是为什么《Windows游戏编程大师技巧》能够在现在和未来,在视频游戏制作这个领域里成为经典的原因。
这本书将带领你到达游戏编程技术的另一个层次。光是人工智能那部分就很让人着迷了——那个演示简直酷极了。你还能从哪里获得如此详尽的介绍,教你把模糊逻辑学、神经网络和遗传法则运用到视频游戏上去呢?本书还将介绍有关DirectX的主要组成成分,包括DirectDraw、DirectInput(包括力反馈作用!)、DirectSound以及最新最棒的DirectMusic技术。
然后是物理建模的部分。最后,一部分学有所成的人,可以去钻研一下完全碰撞反应、动量传递和正向运动学,并进行实时模拟。想像一下,你所创造的东西将会有学习能力:物体将会像在真实世界里那样碰撞运动:而你游戏里的敌人将会记住上次遭遇战里,你是如何打败他们的。
这些都将是未来那些了不起的游戏里的基础部分。
我真的必须感谢Andre创作了这本书。他经常说,如果他不写,谁来写?的确,对他来说,用他20多年的艰苦工作所取得的经验, 以及获得的秘诀和技巧去帮助别人真的是件很棒的事。
生活在这样一个技术日新月异的伟大时代真是让人兴奋,尤其在你是一个游戏程序员的时候。似乎每几个月总会有新的CPU、视频卡或者其他新的硬件上市,把我们原先能想像得到的技术极限不断向前推进(比方说,我们曾经很难想像VoodoolII每秒能运算700亿次!)。诚然,最新最好的技术和产品的价格也是相当的昂贵。但即使这样,在我们运用这些技术于当前开发的游戏的同时,人们对未来视频游戏的期望却变得更高。似乎就在不远的将来,可以局限游戏创作的因素,可能惟有我们的知识和想像力了。
想到下一代的游戏程序员能够从这本书里获取灵感和知识让我感到很激动。Andre应该也希望,21世纪的某天能有人接替他,继续他的工作,教授人们游戏编程这犹如巫术般充满魅力的技能,因为,他真的需要放个长假休息一下了!
Andre LaMothe是世界上最畅销的游戏编程书籍作者,拥有24年以上的编程经验,获得了数学、计算机机科学和电子工程的学位。同时,他还是Xtreme Games LLC、Nurve和XGDC公司的创始人。他最初的作品《Tricks of the Game Programming Gurus》为DOS游戏开发确定了标准。