第1章 计算机游戏简介 1
1.1 什么是游戏 1
1.2 计算机游戏的发展简史 4
1.3 计算机游戏的分类 6
1.4 计算机游戏的开发过程 10
1.5 中国游戏业的展望 12
习题1 13
参考文献 13
第2章 游戏程序设计概览 14
2.1 游戏的基本流程和体系结构 14
2.2 游戏开发的基本理念及方法 17
2.3 游戏引擎简介 18
2.4 游戏的调试与测试 20
2.5 游戏开发的准则和“忠告” 22
2.6 游戏编程人员的基本素质要求 24
2.7 小结 25
习题2 25
参考文献 26
第3章 二维游戏的基本编程技术 27
3.1 二维游戏的基本流程和架构 27
3.2 图像文件的解析 27
3.3 地图的创建与显示 30
3.3.1 固定地图 30
3.3.2 滚屏地图 31
3.3.3 多层次地图 32
3.3.4 菱形地图 32
3.4 颜色的混合与半透明效果 34
3.4.1 基本原理和步骤 34
3.4.2 Alpha融合技术 36
3.5 精灵动画 37
3.6 二维游戏世界的模拟 40
3.6.1 碰撞检测 40
3.6.2 物体遮挡关系 42
3.6.3 物体运动模拟 42
3.7 一个简单的二维潜艇游戏循环实例 43
3.8 小结 45
习题3 45
参考文献 45
第4章 三维图形学基础 46
4.1 向量、矩阵及四元数运算 46
4.1.1 向量运算 46
4.1.2 矩阵运算 47
4.1.3 四元数及其运算 51
4.2 常用的立体几何算法 53
4.2.1 常用几何体的表达与生成 53
4.2.2 常用几何体之间的距离与求交 54
4.2.3 常用几何体的属性计算 55
4.3 三维场景的表达模型 57
4.3.1 三角网格模型 59
4.3.2 三类常用参数曲面 60
4.4 真实感图形生成 64
4.4.1 坐标系 64
4.4.2 图形绘制流程 65
4.4.3 颜色理论 71
4.4.4 光照明计算 74
4.5 游戏画面的刷新与反走样 80
4.5.1 画面刷新和计时函数 80
4.5.2 反走样处理 81
4.6 小结 81
习题4 82
参考文献 82
第5章 三维游戏场景的组织和绘制 83
5.1 三维场景的组织与管理 83
5.1.1 基于场景图的表达和管理 84
5.1.2 基于绘制状态的场景管理 88
5.1.3 基于景物包围体的场景组织 89
5.1.4 优化场景绘制的几何剖分技术 91
5.1.5 景物包围体与场景剖分技术比较 96
5.2 游戏场景的几何优化 96
5.2.1 层次细节(LOD)技术 97
5.2.2 渐进网格和连续多分辨率绘制技术 99
5.3 三维场景的快速可见性判断与消隐 99
5.3.1 可见性判断算法分类 100
5.3.2 基于入口技术的可见性判断 101
5.3.3 遮挡面剔除技术 103
5.3.4 潜在可见集(PVS)方法 105
5.4 地形场景的绘制与漫游 106
5.5 三维游戏场景中的碰撞检测 108
5.5.1 碰撞检测的基本原理 109
5.5.2 基于空间剖分结构的碰撞检测算法 109
5.5.3 层次包围体树法 110
5.5.4 基于图像空间的碰撞检测算法 112
5.6 小结 112
习题5 112
参考文献 113
第6章 游戏中的高级图形技术 114
6.1 纹理映射 114
6.1.1 纹理映射的基本原理 115
6.1.2 凹凸纹理映射 120
6.1.3 位移映射 124
6.1.4 环境纹理映射 126
6.1.5 基于光照映射的快速绘制 128
6.1.6 高级纹理映射技术总结 130
6.2 混合式图像和几何绘制 131
6.2.1 光晕 132
6.2.2 精灵图元的绘制 133
6.2.3 Billboard技术 133
6.2.4 Impostor技术 136
6.3 过程式建模技术 137
6.3.1 粒子系统 138
6.3.2 L系统与植被的模拟 140
6.3.3 爆炸与火焰 142
6.3.4 云的过程式纹理生成 143
6.4 场景光影特效模拟 143
6.4.1 阴影 143
6.4.2 雾 151
6.4.3 运动模糊和域深 153
6.5 小结 154
习题6 154
参考文献 154
第7章 三维动画的基本编程技术 156
7.1 三维动画技术概述 156
7.2 关键帧动画技术 158
7.2.1 关键帧的指定 158
7.2.2 中间帧的插值技术 160
7.3 基于动作捕捉的动画技术 166
7.3.1 动作捕捉系统简介 167
7.3.2 动作捕捉数据的文件格式及其解析 169
7.3.3 动作捕捉数据的编辑与重用 182
7.4 脚本驱动的动画技术 184
7.5 小结 187
习题7 188
参考文献 188
第8章 游戏中的音频编程 189
8.1 声音基础 189
8.1.1 声音的生成 189
8.1.2 声间的编码存储 190
8.1.3 声音的合成 191
8.2 DirectX Audio编程 192
8.2.1 DirectX Audio概念 192
8.2.2 DirectSound的工作原理 192
8.2.3 DirectSound编程初步 195
8.2.4 DirectMusic播放MIDI背景音乐 201
8.3 三维音效生成 204
8.3.1 听觉理论 204
8.3.2 环境模拟 204
8.3.3 DirectSound的三维音效编程 206
8.4 常见的声音引擎简介 210
8.5 小结 211
习题8 211
参考文献 212
第9章 游戏中的人机界面技术 213
9.1 游戏的可玩性与人机界面 214
9.2 用户界面设计基础 215
9.2.1 用户界面的色彩设计 215
9.2.2 用户界面的形式 217
9.2.3 游戏软件的界面设计 221
9.2.4 用户界面开发设计原则 221
9.2.5 用户界面的软件开发过程 222
9.3 DirectInput编程 223
9.3.1 Windows系统下的键盘操作 223
9.3.2 DirectInput键盘编程 224
9.3.3 DirectInput鼠标编程 227
9.3.4 DirectInput游戏操纵杆编程 228
9.4 Wii手柄的运动传感数据获取编程 230
9.4.1 Wiimote编程接口API说明 230
9.4.2 基于Wiimote获取运动传感数据的示例代码 232
9.5 小结 233
习题9 234
参考文献 234
第10章 游戏中的人工智能 235
10.1 游戏AI简介 235
10.2 常见的游戏AI技术 237
10.2.1 有限状态机 237
10.2.2 脚本语言 239
10.2.3 模糊逻辑 240
10.2.4 多智能体技术与人工生命 240
10.2.5 决策树 241
10.2.6 人工神经元网络 242
10.2.7 遗传算法 243
10.2.8 群体行为的模拟 245
10.2.9 常见游戏AI的技术特点分析与比较 246
10.3 跟踪与追逐行为的模拟 246
10.4 有限状态机和模糊有限状态机的实现 250
10.4.1 有限状态机的实现 250
10.4.2 模糊有限状态机的实现 259
10.5 A*算法和路径寻找技术 264
10.5.1 搜索技术及A*算法 264
10.5.2 路径寻找技术 273
10.6 游戏AI的设计和实现原则 278
10.7 小结 282
习题10 283
参考文献 284
第11章 网络游戏的基本编程技术 285
11.1 网络游戏的基本架构 285
11.2 Winsock编程基础 287
11.2.1 TCP/UDP简介 287
11.2.2 Socket和Winsocket简介 288
11.2.3 Winsock编程结构 289
11.2.4 Winsock地址处理 291
11.2.5 Winsock函数介绍 292
11.2.6 Winsock综合示例 297
11.3 网络游戏通信协议 300
11.3.1 游戏通信协议简介 301
11.3.2 游戏通信协议结构 301
11.3.3 协议打包/解包 301
11.4 小型网络游戏设计与实现 302
11.5 大型多人网络游戏设计策略 304
11.5.1 基于推测的数据传输 304
11.5.2 消息等级化 305
11.5.3 游戏空间剖分 305
11.5.4 消息发送策略 306
11.5.5 集群化服务器 306
11.6 网络传输的优化 307
11.6.1 采用UDP协议 307
11.6.2 采用多播技术 308
11.6.3 使用I/O Completion Port 308
11.7 小结 309
习题11 309
参考文献 309
附录A OGRE使用说明 310
附录B 游戏开发的团队项目说明 324