本书介绍了在Windows环境下进行游戏编程所需用到的各方面知识。全书正文共分为三个部分、十四章。第一部分为Windows编程基础,包括概述、Windows编程、GDI、控件等知识,第二部分为DirectX和2D基础,接触了用DirectX进行各种控制及二维平面中变换的知识,第三部分编程核心则重点介绍了相关的数学、物理原理及如何进行综合运用,另外第四部分附录提供了光盘简介、C/C++编译器、数学回顾、C++基础、游戏编程资源及ASCII表,为学习提供了方便。\r\n 本书适合有一定数学基础和C语言编程经验的读者阅读。 \r\n\r\n
序\r\n简介\r\n\r\n第一部分 Windows编程基础\r\n\r\n第一章 无尽之旅\r\n\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\r\n第二章 Windows编程摸型\r\n\r\nWindows的历史\r\n多任务和多线程\r\n按照Microsoft方式编程:匈牙利符号表示法\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\r\n第三章 高级Windows编程\r\n\r\n使用资源\r\n使用菜单编程\r\n图形设备接口GDI介绍\r\n处理重要事件\r\n将消息传递给自己\r\n总结\r\n\r\n第四章 Windows GDI、控件和突发奇想\r\n\r\n高级GDI图形\r\n点、线、平面多边形和圆\r\n关于文本和字体\r\n定时的重要性\r\n使用控件\r\n获取信息\r\nT3D游戏控制程序\r\n总结\r\n\r\n第二部分 DirectX和2D基础\r\n\r\n第五章 DirectX基础和令人生畏的COM\r\n\r\nDirectX基础\r\nCOM:这是Microsoft的工作,还是魔鬼的?\r\n应用DirectX COM对象\r\nCOM的前景\r\n总结\r\n\r\n第六章 首次接触:DirectDraw\r\n\r\nDirectDraw界面\r\n创建DirectDraw对象\r\n和Windows协同工作\r\n进入事件模式\r\n巧妙的色彩\r\n创建一个显示画面\r\n总结\r\n\r\n第七章 高级DirectDraw和位图图形\r\n\r\n真彩色模式下工作\r\n双缓冲\r\n动态画面\r\n页面变换\r\n应用图形变换器\r\n剪切基础\r\n采用位图\r\n备用画面\r\n位图的旋转和缩放\r\n离散采样理论\r\n色彩效果\r\n人工色彩变换或者查询表\r\n新的DirectX色彩和Gamma控制接口\r\nGDI和DirectX混合使用\r\n获取DirectDraw的真相\r\n在画面上冲浪\r\n使用调色板\r\n在窗口模式下应用DirectDraw\r\n总结\r\n\r\n第八章 矢量光栅化及2D变换\r\n\r\n绘制线条\r\n线框多边形\r\n2D平面的变换\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\r\n第九章 用DirectInput和力反馈进行输入\r\n\r\n输入循环回顾\r\nDirectInput序曲\r\n力反馈详述\r\n编写通用的输入系统:T3DLIB2.CPP\r\n总结\r\n\r\n第十章 用DirectSound和DirectMusic演奏乐曲\r\n\r\nPC上的声音编程\r\n声音产生的原因\r\n数字与MIDH——发声大,填充少\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\nDirectSound API封装\r\n总结\r\n\r\n第三部分 编程核心\r\n\r\n第十一章 算法、数据结构、内存管理及多线程\r\n\r\n数据结构\r\n算法分析\r\n递归\r\n树结构\r\n优化理论\r\n制作演示程序\r\n保存游戏的策略\r\n实现多人游戏\r\n多线程编程技术\r\n总结\r\n\r\n第十二章 人工智能在游戏中的运用\r\n\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\r\n第十三章 基本物理建模\r\n\r\n物理学基本定律\r\n线性动量的物理性质:守恒和传递\r\n万有引力效果模型\r\n摩擦力\r\n基本的特殊碰撞反应\r\n2D物体间的碰撞响应(高级)\r\n解决n-t坐标系统\r\n简单运动学\r\n微粒系统\r\n游戏关键:创建游戏的物理模型\r\n总结\r\n\r\n第十四章 综合运用\r\n\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第四部分 附录\r\n\r\n附录A CD上的内容\r\n\r\n附录B 安装DirectX和使用C/C++编译器\r\n\r\n使用C/C++编译器\r\n\r\n附录C 三角函数和矢量\r\n\r\n三角\r\n矢量\r\n\r\n附录D C++基础\r\n\r\nC++是什么\r\n关于C++应当了解的内容\r\n新类型、关键词以及协议\r\n内存管理\r\n输入/输出流\r\n类\r\n作用域操作符\r\n函数和操作符重载\r\n小结\r\n\r\n附录E 游戏编程资源\r\n\r\n游戏编程网站\r\n下载站点\r\n2D/3D引擎\r\n游戏编程书籍\r\nMicrosoft DirectX多媒体展示\r\n世界性新闻组网络系统\r\n抓住产业:蓝调新闻\r\n游戏开发杂志\r\n游戏网站开发人员\r\nXtreme Games LLC\r\n\r\n附录F ASCII表\r\n
我记得第一次和计算机结缘是在1993年,那时使用Apple IIe计算机编写Logo语言(感谢Woz!)。那次经历对我而言是那样的令人迷醉,并且深深地印在我的脑海中。计算机可以做我所有想做的事,并且经过无数次循环都不疲劳。我的大量的工作都得益于那次经历,andre Lamothe设计的电影“War Games”。
我购买的Andre Lamothe的第一本书是在1994年:《Sams Teach Yourself Game Programming 21 Days》。在此之前我从来都不认为人们可以将编写视频游戏作为一个职业。就是那时,我看到了喜爱编程和沉迷于视频游戏的结合点。以前有谁能够认同花大量的时间玩 Galaga游戏在现在来说是研究呢? Andre的撰写和教授风格鼓舞了我,给了我巨大的信心——我也能够编写视频游戏的程序。我还记得我曾在电话中向他请教,那是基于他的气体模型演示程序的物理作业的简单的程序(我至今还不能相信他会和任何一个打电话给他的人交流,并将他的电话号码给任何人)。我的程序无论如何都不运行,他立即检查了我的程序,并且在几秒钟后说:“Rich,你应当在每一行的后面添上分号!”就是这样简单,我完成了我的第一个游戏程序。
几年后我有幸作为一个工具程序员和Andre先生一起制作了一个视频游戏Rex Blade。对我来讲那是一次很好的学习机会。我们在一起极其努力地工作(Andre先生是一个苛刻的上司),但是充满了乐趣(看电影、射击、滑雪等等),最后完成了一个3D交互式视频游戏三部曲。在不可思议的短短6个月的时间中,我们就完成了 Rex Blade游戏从开始设想到上架的全过程(Rex进行了有趣的事后检验)。编写Rex使我懂得了如何制作一个真正的视频游戏,和Andre先生共事使我了解了什么是真正的夜以继日地工作,我说的是真正的昼夜不停地工作。而以前当我听说他一周工作100个小时的时候,还以为他在说谎。
很少有软件工程领域对硬件、软件和程序员本身的限制像游戏编程一样多。将数学、物理、人工智能、图像、声音、音乐、GUI和数据结构等等内容完美地结合在一起是非常复杂的。这就是《Windows游戏编程大师技巧》在目前和将来的视频游戏编程艺术中得以成为一种重要工具的关键所在。
本书将使你在游戏编程的技术上提高一个档次。仅仅是人工智能部分内容就能使你深感有趣,而演示程序更让人留连忘返。另外还可以学习到模糊逻辑、神经网络和遗传算法以及如何将上述内容应用到视频游戏中的内容。通过本书还可以学习到DirectX的所有主要组件,包括DirectDraw、DirectInput(以及力反馈内容)、DirectSound以及DirectMusic的最新、最重要的技术。
本书还介绍了物理建模方面的内容。最后,有余力的人还可以学习一些完全的碰撞反应、动量传递、正向运动以及如何实时模拟等内容。我们不难想像,能够学习的生物、能够在类似实际的情况下发生碰撞的物体,以及能够记住在最后一次是如何被你击败的敌人等这些内容,都将是未来制作大型游戏的基础。
我不得不举手赞成Andre先生撰写这本书。他也一直说,如果他不做,那谁来做呢?的确是这样的:将一个人的20多年的艰苦工作,秘密和技巧奉献给每一个人是一件多么崇高的事情啊!
随着技术不断跳跃式地发展,我认为已经到了一个技术活跃的重要时刻了,特别是对于一个游戏程序员来说更是这样。每几个月就要推出一种新型的CPU、视频卡和其他的硬件设备,将技术向前推进。(Voodoo III每秒钟运行70亿次的速度几乎难以置信。)这种伟大的技术伴随着价格也同样昂贵。随之而来的就是期待我们制作的游戏能够使用该技术,这将减少未来视频游戏的障碍。这一切似乎在不远的将来就可以实现。惟一的限制因素就是我们的知识和想像力。
令我激动的是,下一代游戏程序员将得到本书的鼓舞和指导。我认为Andre先生也希望在对世纪有人继续他的工作,继续散布这项瑰丽的艺术,因为Andre先生也需要休息。