目录 1
第1章 计算机游戏简介 1
1.1 什么是游戏 1
1.2 计算机游戏的发展简史 3
1.3 计算机游戏的分类 5
1.4 计算机游戏的开发过程 10
1.5 中国游戏业的展望 12
参考文献 13
第2章 游戏程序设计概览 15
2.1 游戏的基本流程和体系结构 15
2.2 游戏开发的基本理念及方法 18
2.3 游戏引擎简介 19
2.3.1 游戏引擎技术概述 20
2.3.2 游戏引擎的发展简史 21
2.4 游戏的调试与测试 23
2.5 游戏开发的准则和“忠告” 25
2.6 游戏编程人员的基本素质要求 27
2.7 小结 28
参考文献 29
第3章 二维游戏的基本编程技术 31
3.1 二维游戏的基本流程和架构 31
3.2 图像文件的解析 31
3.3 地图的创建与显示 34
3.3.2 滚屏地图 35
3.3.1 固定地图 35
3.3.3 多层次地图 36
3.3.4 菱形地图 37
3.4 颜色的混合与半透明效果 39
3.4.1 基本原理和步骤 39
3.4.2 Alpha融合技术 41
3.5 精灵动画 42
3.6 二维游戏世界的模拟 46
3.6.1 碰撞检测 46
3.6.2 物体遮挡关系 48
3.6.3 物体运动模拟 48
3.7 一个简单的二维潜艇游戏循环实例 48
参考文献 51
3.8 小结 51
第4章 三维图形学基础 53
4.1 向量、矩阵及四元数运算 53
4.1.1 向量运算 53
4.1.2 矩阵运算 54
4.1.3 四元数及其运算 60
4.2 常用的立体几何算法 62
4.2.1 常用几何体的表达与生成 63
4.2.2 常用几何体之间的距离与求交 64
4.2.3 常用几何体的属性计算 65
4.3 三维场景的表达模型 68
4.3.1 三角网格模型 69
4.3.2 三类常用参数曲面 71
4.4 真实感图形生成 76
4.4.1 坐标系 76
4.4.2 图形绘制流程 78
4.4.3 颜色理论 84
4.4.4 光照明计算 88
4.5 游戏画面的刷新与反走样 96
4.5.1 画面刷新和计时函数 96
4.5.2 反走样处理 97
4.6 小结 98
参考文献 98
第5章 三维游戏场景的组织和绘制 99
5.1 三维场景的组织与管理 99
5.1.1 基于场景图的表达和管理 100
5.1.2 基于绘制状态的场景管理 104
5.1.3 基于景物包围体的场景组织 106
5.1.4 优化场景绘制的几何剖分技术 108
5.1.5 景物包围体与场景剖分技术比较 113
5.2 游戏场景的几何优化 114
5.2.1 层次细节(LOD)技术 115
5.2.2 渐进网格和连续多分辨率绘制技术 117
5.3 三维场景的快速可见性判断与消隐 117
5.3.1 可见性判断算法分类 118
5.3.2 基于入口(Portal)技术的可见性判断 119
5.3.3 遮挡面剔除技术 121
5.4 地形场景的绘制与漫游 124
5.3.4 潜在可见集(PVS)方法 124
5.5 三维游戏场景中的碰撞检测 127
5.5.1 碰撞检测的基本原理 128
5.5.2 基于空间剖分结构的碰撞检测算法 128
5.5.3 层次包围体树法 129
5.5.4 基于图像空间的碰撞检测算法 131
5.6 小结 131
参考文献 132
第6章 游戏中的高级图形技术 133
6.1 纹理映射 133
6.1.1 纹理映射的基本原理 134
6.1.2 凹凸纹理映射 140
6.1.3 位移映射 145
6.1.4 环境纹理映射 147
6.1.5 基于光照映射的快速绘制 149
6.1.6 高级纹理映射技术总结 151
6.2 混合式图像和几何绘制 152
6.2.1 光晕 153
6.2.2 精灵图元的绘制 154
6.2.3 Billboard技术 155
6.2.4 Impostor技术 158
6.3 过程式建模技术 160
6.3.1 粒子系统 160
6.3.2 L-系统与植被的模拟 163
6.3.3 爆炸与火焰 165
6.3.4 云的过程式纹理生成 166
6.4 场景光影特效模拟 166
6.4.1 阴影 166
6.4.2 雾 175
6.4.3 运动模糊和域深 178
6.5 小结 178
参考文献 179
第7章 三维动画的基本编程技术 181
7.1 三维动画技术概述 181
7.2 关键帧动画技术 183
7.2.1 关键帧的指定 183
7.2.2 中间帧的插值技术 186
7.3 基于动作捕捉的动画技术 192
7.3.1 动作捕捉系统简介 193
7.3.2 动作捕捉数据的文件格式及其解析 196
7.3.3 动作捕捉数据的编辑与重用 210
7.4 脚本驱动的动画技术 212
7.5 小结 215
参考文献 216
第8章 游戏中的音频编程 217
8.1 声音基础 217
8.1.1 声音的生成 217
8.1.2 声音的编码存储 218
8.2 DirectX Audio编程 219
8.1.3 声音的合成 219
8.2.1 DirectX Audio概念 220
8.2.2 DirectSound的工作原理 220
8.2.3 DirectSound编程初步 223
8.2.4 DirectMusic播放MIDI背景音乐 230
8.3 三维音效生成 233
8.3.1 听觉理论 233
8.3.2 环境模拟 234
8.3.3 DirectSound的三维音效编程 235
8.4 常见的声音引擎简介 240
8.5 小结 241
参考文献 241
第9章 游戏中的人机界面技术 243
9.1 游戏的可玩性与人机界面 244
9.2 用户界面设计基础 245
9.2.1 用户界面的色彩设计 245
9.2.2 用户界面的形式 247
9.2.3 游戏软件的界面设计 250
9.2.4 用户界面开发设计原则 251
9.2.5 用户界面的软件开发过程 251
9.3 DirectInput编程 252
9.3.1 Windows系统下的键盘操作 252
9.3.2 DirectInput键盘编程 254
9.3.3 DirectInput鼠标编程 256
9.3.4 DirectInput游戏操纵杆编程 258
9.4 小结 260
参考文献 261
第10章 游戏中的人工智能 263
10.1 游戏AI简介 263
10.2 常见的游戏AI技术 265
10.2.1 有限状态机 265
10.2.2 脚本语言方法 267
10.2.3 模糊逻辑 267
10.2.4 多智能体技术与人工生命 268
10.2.5 决策树 269
10.2.6 人工神经元网络 270
10.2.7 遗传算法 271
10.2.8 群体行为的模拟 273
10.2.9 常见游戏AI的技术特点分析与比较 274
10.3 跟踪与追逐行为的模拟 275
10.4 有限状态机和模糊有限状态机的实现 279
10.4.1 有限状态机的实现 279
10.4.2 模糊有限状态机的实现 289
10.5 A*算法和路径寻找技术 296
10.5.1 搜索技术及A*算法 296
10.5.2 路径寻找技术 307
10.6 游戏AI的设计和实现原则 312
10.7 小结 316
参考文献 317
11.1 网络游戏的基本架构 319
第11章 网络游戏的基本编程技术 319
11.2 Winsock编程基础 322
11.2.1 TCP/UDP简介 322
11.2.2 Socket和Winsocket简介 322
11.2.3 Winsock编程结构 324
11.2.4 Winsock地址处理 325
11.2.5 Winsock函数介绍 326
1 1.2.6 Winsock综合示例 333
11.3 网络游戏通信协议 336
11.3.1 游戏通信协议简介 336
11.3.2 游戏通信协议结构 336
11.4 小型网络游戏设计与实现 337
11.3.3 协议打包/解包 337
11.5 大型多人网络游戏设计策略 339
11.5.1 基于推测的数据传输 340
11.5.2 消息等级化 340
11.5.3 游戏空间剖分 341
11.5.4 消息发送策略 341
11.5.5 集群化服务器 342
11.6 网络传输的优化 343
11.6.1 采用UDP协议 343
11.6.2 采用多播技术 343
11.6.3 使用I/O Completion Port 344
11.7 小结 345
参考文献 345