第1章 Windows游戏编程 1
1.1 电子、电脑游戏的历史 1
1.1.1 从头谈起 1
1.1.2 图形硬件的革命 3
1.1.3 著名的游戏开发公司 5
1.1.4 著名的游戏设计大师 6
1.2 游戏软件开发工具 8
1.3 Windows编程 9
1.3.1 Windows消息机制 9
1.3.2 图形设备接口(GDI) 12
1.3.3 定时器(Timer) 27
1.3.4 回调机制 29
1.3.5 多线程 30
1.3.6 动态链接库(DLL) 33
1.3.7 COM(Common Object Model) 35
1.3.8 声音 36
1.4 MFC与游戏设计 42
第2章 游戏架构设计 43
2.1 游戏分类和常用术语 43
2.2 游戏策划 47
2.3 游戏模型 49
2.3.1 游戏的情感模型 50
2.3.2 游戏的行为系统模型 51
2.4 RPG游戏的设计 52
2.5 美工与动画设计 56
2.6 音乐与音效设计 57
2.7 游戏引擎 58
第3章 2D游戏开发 60
3.1 DirectDraw游戏开发基础 60
3.1.1 DirectDraw图形编程概述 61
3.1.2 DirectDraw的架构 62
3.1.3 DirectDraw的开发原理与方法 63
3.2 DirectInput游戏开发基础 81
3.2.1 DirectInput键盘 81
3.2.2 DirectInput鼠标 84
3.3 等角贴片(Isometric Tiles) 87
3.4 一个精确的2D碰撞检测算法 93
3.5 一个简单的精灵碰撞检测游戏 94
3.6 实例——冒险屠宰场游戏 107
3.6.1 系统框架设计 108
3.6.2 程序框架设计 109
3.7 实例——入侵者游戏 119
3.7.1 奖子的设计 120
3.7.2 子弹(Bullet)的设计 126
3.7.3 卷屏(Scroll)的设计 126
3.8 实例——赛车游戏的2D编程 139
3.8.1 cMain游戏库 140
3.8.2 游戏类和元素 149
3.8.3 游戏的流程 160
第4章 网络游戏开发 179
4.1 TCP/IP 179
4.1.1 ISO的OSI模型 179
4.1.2 TCP/IP结构 180
4.2 SOCKET编程 182
4.2.1 WINSOCK的基本特点 182
4.2.2 WINSOCK基本的API 183
4.2.3 WINSOCK异步模式 187
4.2.4 WINSOCK网络程序实例——聊天室 188
4.2.5 CAsyncSocket类 198
4.2.6 CSocket类 200
4.2.7 CSocket类网络应用实例——聊天室 201
4.3 小型网络游戏实例——网络五子棋 206
4.3.1 主程序结构和流程 206
4.3.2 实例演示 206
4.3.3 实例设计 207
4.3.4 代码详细分析 207
4.4 CSocket线程安全性 222
4.5 服务器同步 223
4.6 航位推测法 224
4.7 用DirectPlay开发网络游戏 226
4.7.1 DirectPlay的特点 227
4.7.2 DirectPlay的开发过程和方法 229
4.7.3 DirectPlay大厅的开发 236
4.8 实例——网络台球游戏的网络编程 238
4.8.1 刚体运动与碰撞 239
4.8.2 网络部分的代码实现 245
4.9 实例——赛车游戏的网络编程 249
4.9.1 cMultiplayer类的声明 249
4.9.2 cMultiplayer类的实现 252
4.10 实例——对战坦克大战 274
4.10.1 对战坦克大战的服务器程序 274
4.10.2 对战坦克大战的客户端程序 279
第5章 3D游戏开发 286
5.1 2D与3D 286
5.2 Direct3D 287
5.2.1 绘制三角形 287
5.2.2 旋转立方体 292
5.2.3 深度缓冲 296
5.2.4 纹理 297
5.2.5 灯光与材质 301
5.2.6 索引缓冲 306
5.2.7 有纹理的圆柱体、锥体和球体 314
5.2.8 载入模型 322
5.3 OpenGL 3D游戏开发基础 324
5.3.1 OpenGL工作流程 325
5.3.2 OpenGL开发基础 326
5.3.3 OpenGL辅助库使用方法 329
5.3.4 OpenGL建模 333
5.3.5 OpenGL变换 336
5.3.6 OpenGL光照 344
5.3.7 OpenGL图像和位图 356
5.3.8 OpenGL纹理映射 359
5.4 实例——网络台球游戏的3D编程 366
5.4.1 在MFC中使用OpenGL 367
5.4.2 处理调色板 368
5.4.3 CBilliardsPlayView视图类 370
5.5 实例——Donuts4(面包圈大战游戏) 397
5.5.1 Donuts4的游戏任务 402
5.5.2 Donuts4的基本构成 403
5.5.3 Donuts4的初始化 404
5.5.4 Donuts4的运行过程 426
第6章 游戏设计和图形图像常用算法 445
6.1 启发式搜索和A*算法 445
6.2 在A*路径搜索中使用堆 451
6.3 迷宫算法 453
6.4 24点算法 466
6.5 五子棋走棋算法 481
6.6 象棋走棋算法 484
6.7 运动模糊算法(Motion Blur) 489
6.8 瀑布粒子系统 493
6.9 基于粒子引擎的简单点精灵 494
6.10 水波效果算法 498
6.11 火焰效果算法 502
6.12 像素混合技术 503
6.13 镜头眩光特效 504
6.14 图像合成技术 508
6.15 图像淡入淡出渲染 513
6.16 云的实现 516
6.17 图形学中的3D数学 520
6.17.1 向量 521
6.17.2 线和平面 522
6.17.3 齐次坐标 523
6.17.4 矩阵 523参考文献 526
展开