本书介绍如何设计和构建自己的计算机游戏。书中从零开始,引导读者开发一个“即插即用”的游戏引擎,并基于该引擎,循序渐进地开发7个完整的游戏。全书分为8个部分,共24章,内容包括游戏编程基础知识、如何与玩家交互、使用子画面动画、使用声音和音乐、高级动画、游戏人工智能、增添游戏的趣味性和附加练习。此外,在随书光盘中提供有附录,包括C++语言和windows编程的入门指导、游戏开发工具以及游戏图形创建的介绍。
本书适用于任何对C++语言有基本了解的读者阅读,适宜作为读者进入游戏开发领域的技术入门学习用书。
第1部分 入门
第1章 学习开发游戏的基础知识 3
1.1 认识视频游戏 3
1.1.1 为什么人们如此沉迷于开发视频游戏 4
1.1.2 视频游戏的类型 5
1.2 学习游戏设计的要素 7
1.2.1 提出基本思想 7
1.2.2 整理剧情 8
1.2.3 可视化图形 9
1.2.4 为游戏选择正确的声音 10
1.2.5 使用控制器控制游戏 10
1.2.6 确定游戏模式 11
1.3 面向对象的编程和游戏 12
1.3.1 理解OOP 12
1.3.2 在游戏中应用OOP 13
1.4 研究相关工具 14
1.4.1 编译器和开发环境 15
1.4.2 选择图形工具 15
1.4.3 选择声音和音乐工具 15
1.5 小结 16
1.6 亲身实践 16
第2章 创建游戏引擎 17
2.1 什么是游戏引擎 17
2.2 考虑游戏引擎的作用 18
2.2.1 将游戏分解为事件 18
2.2.2 建立游戏的计时机制 19
2.3 开发游戏引擎 21
2.3.1 游戏事件函数 21
2.3.2 GameEngine类 22
2.4 开发Blizzard示例 33
2.4.1 编写程序代码 33
2.4.2 测试完成的程序 37
2.5 小结 38
2.6 游戏大变身 38
第3章 学习绘制基本图形 39
3.1 图形基础 39
3.1.1 理解图形坐标系统 40
3.1.2 学习颜色的基础知识 40
3.2 查看Windows中的图形 42
3.2.1 使用设备环境 42
3.2.2 使用画笔写 43
3.2.3 使用画刷绘制 44
3.2.4 使用位图绘制图像 44
3.2.5 使用调色板管理颜色 44
3.3 绘制窗口 45
3.3.1 绘制文本 46
3.3.2 绘制图元 47
3.3.3 使用画笔和画刷 49
3.4 开发Crop Circles示例 50
3.4.1 编写程序代码 51
3.4.2 测试完成的程序 54
3.5 小结 54
3.6 亲身实践 55
第4章 绘制图形图像 56
4.1 位图图像的基础知识 56
4.2 深入学习位图 58
4.3 开发位图类 58
4.3.1 位图类的工作原理 59
4.3.2 整合代码 59
4.4 开发Slideshow示例 62
4.4.1 编写程序代码 62
4.4.2 汇集资源 65
4.4.3 测试完成的程序 67
4.5 小结 67
4.6 游戏大变身 68
第2部分 与游戏玩家交互
第5章 使用键盘和鼠标控制游戏 71
5.1 游戏与用户输入 71
5.2 了解用户输入设备 73
5.2.1 接受键盘输入 73
5.2.2 响应鼠标 74
5.2.3 使用游戏杆交互 75
5.3 评估游戏的键盘输入 75
5.4 跟踪鼠标 76
5.5 向游戏引擎添加输入支持 77
5.5.1 添加键盘支持 78
5.5.2 添加鼠标支持 78
5.5.3 修改Bitmap类 79
5.6 开发UFO示例 81
5.6.1 编写程序代码 82
5.6.2 测试完成的程序 85
5.7 小结 86
5.8 亲身实践 86
第6章 示例游戏:Brainiac 87
6.1 游戏的玩法 87
6.2 设计游戏 88
6.3 开发游戏 89
6.4 测试游戏 95
6.5 小结 96
6.6 游戏大变身 97
第7章 使用游戏杆改进输入 98
7.1 了解游戏杆的基础知识 98
7.2 校准游戏杆 99
7.3 追踪游戏杆的移动 101
7.4 向游戏引擎添加游戏杆支持 103
7.4.1 访问Win32多媒体功能 103
7.4.2 开发游戏杆代码 104
7.5 开发UFO 2示例 108
7.5.1 编写程序代码 108
7.5.2 测试完成的程序 110
7.6 小结 111
7.7 亲身实践 112
第8章 示例游戏:Light Cycles 113
8.1 游戏的玩法 114
8.2 设计游戏 114
8.3 开发游戏 116
8.4 测试游戏 127
8.5 小结 128
8.6 游戏大变身 128
第3部分 在游戏中使用子画面
第9章 使用子画面动画移动对象 131
9.1 理解动画的基础知识 131
9.1.1 动画和帧频 132
9.1.2 了解计算机动画 132
9.2 2D动画与3D动画 133
9.3 理解2D动画的类型 134
9.3.1 基于帧的动画 134
9.3.2 基于形状的动画 134
9.4 将子画面动画应用于游戏 138
9.5 设计通用的子画面 139
9.6 创建Sprite类 141
9.6.1 创建和破坏子画面 142
9.6.2 更新子画面 143
9.6.3 绘制子画面 145
9.7 开发Planets示例程序 146
9.7.1 编写程序代码 146
9.7.2 测试完成的程序 150
9.8 小结 151
9.9 亲身实践 152
第10章 管理子画面 153
10.1 了解管理子画面的需求 153
10.2 设计子画面管理器 154
10.3 向游戏引擎添加子画面管理器 155
10.3.1 改进Sprite类 155
10.3.2 增强游戏引擎 157
10.4 使用双重缓存消除闪烁 159
10.5 开发Planets 2示例 161
10.5.1 编写程序代码 161
10.5.2 测试完成的程序 165
10.6 小结 165
10.7 游戏大变身 166
第11章 示例游戏:Henway 167
11.1 游戏的玩法 167
11.2 设计游戏 169
11.3 开发游戏 170
11.4 测试游戏 177
11.5 小结 179
11.6 游戏大变身 179
第4部分 使用声音和音乐
第12章 播放数字声音效果 183
12.1 理解数字声音 183
12.2 了解Windows波形声音 185
12.3 了解声音工具 186
12.3.1 Sony Sound Forge 187
12.3.2 Adobe Audition 187
12.3.3 廉价的声音编辑器 187
12.4 创建和编辑声音 187
12.5 查找声音和音乐 188
12.6 访问波形声音 188
12.7 播放波形声音 189
12.7.1 播放文件中的波形声音 190
12.7.2 播放作为资源的波形声音 190
12.7.3 循环播放波形声音 191
12.7.4 停止播放波形声音 191
12.8 开发Brainiac 2示例程序 192
12.8.1 编写程序代码 192
12.8.2 组合资源 194
12.8.3 测试完成的游戏 195
12.9 小结 196
12.10 亲身实践 196
第13章 播放MIDI音乐 198
13.1 感受MIDI音乐 198
13.2 理解Windows媒体控制接口 200
13.3 使用MCI播放MIDI音乐 201
13.3.1 打开MIDI设备 201
13.3.2 播放MIDI歌曲 202
13.3.3 暂停MIDI歌曲 203
13.3.4 关闭MIDI设备 203
13.4 向游戏引擎添加MIDI音乐支持 203
13.5 开发Henway 2示例程序 205
13.5.1 编写程序代码 205
13.5.2 测试完成的游戏 209
13.6 小结 210
13.7 亲身实践 210
第14章 示例游戏:Battle Office 211
14.1 游戏的玩法 211
14.2 设计游戏 212
14.3 开发游戏 215
14.4 测试游戏 222
14.5 小结 223
14.6 亲身实践 224
第5部分 高级动画
第15章 实现子画面外观动画 227
15.1 再次介绍帧动画 227
15.2 设计动画子画面 228
15.3 向游戏引擎添加动画子画面支持 230
15.3.1 只绘制位图的一部分 230
15.3.2 对Sprite类实现动画 231
15.4 开发Battle Office 2示例程序 233
15.4.1 编写程序代码 233
15.4.2 测试完成的游戏 235
15.5 小结 235
15.6 游戏大变身 236
第16章 创建子画面背景 237
16.1 了解游戏背景的重要性 237
16.2 了解游戏背景的类型 238
16.2.1 纯色背景 238
16.2.2 图像背景 239
16.2.3 动画背景 239
16.2.4 滚动背景 239
16.3 向游戏引擎添加背景支持 240
16.3.1 创建基本的背景类 240
16.3.2 创建动画背景类 242
16.4 开发Roids示例 245
16.4.1 编写程序代码 245
16.4.2 测试完成的游戏 248
16.5 小结 248
16.6 亲身实践 249
第17章 示例游戏:Meteor Defense 250
17.1 游戏的玩法 250
17.2 设计游戏 251
17.3 增强游戏引擎中的子画面 254
17.4 开发游戏 256
17.5 测试游戏 264
17.6 小结 265
17.7 游戏大变身 265
第6部分 让游戏拥有大脑
第18章 教游戏思考 269
18.1 理解人工智能 269
18.2 了解游戏AI的类型 271
18.2.1 漫游AI 272
18.2.2 行为AI 274
18.2.3 策略AI 275
18.3 开发AI策略 276
18.4 开发Roids 2示例程序 276
18.4.1 编写程序代码 277
18.4.2 测试完成的程序 280
18.5 小结 281
18.6 亲身实践 281
第19章 示例游戏:Space Out 282
19.1 游戏的玩法 282
19.2 设计游戏 283
19.3 向游戏引擎中添加另一个子画面特性 286
19.4 开发游戏 287
19.5 测试游戏 297
19.6 小结 298
第7部分 增添游戏的趣味性
第20章 使用闪屏增添游戏的活力 303
20.1 闪屏的重要性 303
20.2 了解闪屏 304
20.3 创建Space Out 2游戏 305
20.3.1 编写游戏代码 305
20.3.2 测试完成的游戏 309
20.4 小结 309
20.5 亲身实践 309
第21章 使用演示模式展示游戏 311
21.1 什么是演示模式 311
21.2 演示模式的细节 312
21.3 开发Space Out 3游戏 313
21.3.1 编写游戏代码 313
21.3.2 测试完成的游戏 318
21.4 小结 319
21.5 游戏大变身 320
第22章 记录高分 321
22.1 记录得分的重要性 321
22.2 确定高分数据模型 322
22.3 存储和检索高分数据 323
22.4 开发Space Out 4游戏 325
22.4.1 编写游戏代码 325
22.4.2 测试完成的游戏 330
22.5 小结 331
22.6 亲身实践 332
第8部分 附加练习
第23章 使用滚动背景更改远景 335
23.1 什么是滚动背景 335
23.1.1 横向滚动的背景 336
23.1.2 纵向滚动的背景 336
23.1.3 视差滚动背景 337
23.2 理解滚动背景的工作原理 337
23.3 向游戏引擎添加滚动背景支持 338
23.3.1 创建背景图层类 339
23.3.2 创建滚动背景类 344
23.4 开发Wanderer示例 346
23.4.1 编写程序代码 346
23.4.2 测试完成的程序 354
23.5 小结 355
23.6 游戏大变身 355
第24章 示例游戏:Stunt Jumper 357
24.1 游戏的玩法 357
24.2 设计游戏 359
24.3 开发游戏 361
24.4 测试游戏 374
24.5 小结 376
24.6 游戏大变身 376
24.7 亲身实践 377
配套光盘上的附录
附录A 选择游戏开发工具 CD:381
A.1 Microsoft Visual C++ CD:382
A.2 Borland C++ Builder CD:383
A.3 Bloodshed Dev-C++ CD:383
A.4 DJGPP CD:383
附录B C++编程入门 CD:384
B.1 C++语言基础 CD:384
B.2 C++开发周期 CD:385
B.3 创建一个简单的C++程序 CD:385
B.4 使用注释说明代码 CD:387
B.5 使用空白分割代码 CD:387
B.6 将代码组织到函数中 CD:387
B.7 使用表达式操作数据 CD:388
B.8 增强程序示例 CD:389
B.9 变量和常量 CD:390
B.9.1 变量的类型 CD:391
B.9.2 区分大小写 CD:392
B.9.3 关键字 CD:392
B.9.4 字符串和数组 CD:392
B.10 if语句 CD:393
B.11 关系运算符 CD:393
B.12 函数 CD:395
B.13 全局变量 CD:396
B.14 模块 CD:397
B.15 执行多次操作 CD:397
B.16 至少执行一次操作 CD:398
B.17 执行0次或多次操作 CD:398
B.18 for循环 CD:399
B.19 switch语句 CD:399
B.20 加1和减1 CD:400
B.21 学习类的基础知识 CD:401
B.21.1 类与实例 CD:401
B.21.2 理解方法 CD:402
B.21.3 初始化和清理对象 CD:402
B.21.4 析构函数 CD:403
B.22 进一步学习 CD:403
附录C Windows游戏编程入门 CD:404
C.1 Windows编程基础 CD:404
C.1.1 事件驱动编程 CD:405
C.1.2 使用消息通信 CD:405
C.1.3 理解设备独立性 CD:406
C.1.4 将程序信息存储为资源 CD:406
C.1.5 处理陌生的数据类型 CD:406
C.1.6 非传统的编码约定 CD:407
C.2 深入了解Windows程序 CD:408
C.2.1 入门 CD:408
C.2.2 窗口类 CD:408
C.2.3 创建窗口 CD:409
C.2.4 处理消息 CD:410
C.2.5 窗口过程 CD:411
C.2.6 使用资源 CD:412
C.3 开发Skeleton示例 CD:413
C.3.1 编写程序代码 CD:414
C.3.2 组合资源 CD:416
C.3.3 测试完成的程序 CD:417
附录D 创建游戏图形 CD:418
D.1 评估游戏图形 CD:418
D.1.1 确定游戏屏幕大小 CD:418
D.1.2 考虑目标观众的影响 CD:419
D.1.3 确定游戏环境和情绪 CD:419
D.1.4 坚持一种图形风格 CD:420
D.2 了解图形工具 CD:420
D.2.1 Image Alchemy CD:420
D.2.2 Paint Shop Pro CD:421
D.2.3 Graphic Workshop CD:421
D.3 创建和编辑图形 CD:421
D.3.1 艺术线条图形 CD:421
D.3.2 3D渲染图形 CD:422
D.3.3 扫描的照片和视频捕捉的图形 CD:422
D.3.4 背景图形和纹理 CD:423
D.3.5 动画图形 CD:423
D.4 查找图形 CD:423
《种文化》内容简介:本书从产业兴旺、生态宜居、乡风文明、治理有效、生活富裕等角度,遴选了上百幅来自全国各画乡的农民画新作,
Python开发从入门到精通系列Python语言从入门到精通 本书特色 Python语言从入门到精通循序渐进地讲解了使用Python语言的核心知识,并通过具体实...
数据库系统工程师教程(第2版)—全国计算机技术与软件专业技术资格(水平)考试指定用书 本书特色 《数据库系统工程师教程(第2版)》作为中级职称的软考指定教材,具...
《多核计算与程序设计》主要介绍适应于多核(或多处理器)计算机系统的算法和程序,共分为五个部分进行讲解。第1部分介绍多核编程
《一切随缘》内容简介:日本上市仅仅三个月,便创下百万本的销售奇迹 至今累计销售超过150万本! 2019年日本各大书店畅销总榜第一名
《我们为什么要做企业家》内容简介:世界上生意人常有,真正的企业家属于“稀有动物”,但唯有企业家才能对企业和社会起到强大的引
《旗袍设计、制作与剪裁实例教程》内容简介:旗袍是中国传统服饰中优雅、知性的典范。本书是旗袍设计、制作、剪裁入门实例教程,所
信息系统监理师考试蓝色题库-全国计算机技术与软件专业技术资格(水平)考试用书 本书特色 《信息系统监理师考试蓝色题库》根据*新的信息系统监理师考试大纲,对200...
《城市交通出行行为分析及多方式交通协同组织理论与方法》内容简介:本书从基于活动的视角,研究了城市多方式交通网络中交通出行者
《神经网络模糊推理智能信息融合及其工程应用》由鄂加强、左红艳、罗周全著。神经网络和模糊推理之间的相似性和互补性是其进行融
《新妈妈的育儿经》内容简介:本书共分九章,内容从优孕优生、饮食营养、生活照顾、疾病预防与护理、智力开拓、行为培养、心理健康
《数字迷城:信息爆炸改变你的生活》从经济、政治和社会的角度分析和阐释了互联网技术发展及“信息大爆炸”给人类社会带来的各种机
《平衡掌控者》内容简介:本书由真正从事游戏行业工作的一线人员所著,书中的全部案例来自真实的游戏设计案例。全书共7章,第1章介
TheworkofdigitaldesignguruJohnMaedaasaneducatoranddirectoroftheAestheticsandComp...
黄石和付志勇编写的《游戏策划与管理》是一本针对游戏策划及项目管理的基础教材,体系严谨,案例丰富。适合大专院校学生及广大游
《我们为什么上瘾》内容简介:科普作家萨拉维茨生于一个美国犹太中产家庭,她在20世纪80年代就读于哥伦比亚大学时,不幸对药物成瘾
《新文科背景下的外语教学研究》内容简介:本书共收集34篇论文,涵盖语言学、文学、外语教学等各个学科领域,结合新文科建设,围绕
《电子工程师必备:关键技能速成宝典》内容简介:本书以培养实际动手操作技能为出发点,从基础知识讲起,系统地介绍了电子工程师必
Tmall商家成长部(peixun.tmall.com)诞生于天猫旗下,肩负整个天猫电商成长与发展的重任,担负着中国电子商务转型与升级的使命。
《基督教史》内容简介:本书是一部基督教世界通史,以时间为经,以地区和国别为纬,全面系统地介绍了基督教产生、发展和流传的历史