本书主要介绍市面—亡大多数计算机与视频游戏编程的基本核心算法与技术,以及游戏编程理论和许多PC与控制台上的AAA级产品的实现细节,使之成为游戏编程导论课程教材。书中大多数相关方法都有全面解释、框图和必要的代码样本,使读者可以了解幕后工作原理、工作方法和工作本质。
全书由三部分组成。其中第一部分主要介绍游戏编程的基本概念;第二部分详细介绍游戏编程中的各种技术和算法;第三部分是附录,介绍游戏编程中相关技术和知识以及其他相关读物。
第一部分游戏编程
第1章游戏编程时间表
1.1第一阶段:“星球大战”之前
1.2第二阶段:从“星球大战”到Atari
1.3第三阶段:游戏控制台与个人计算机
1.3.1游戏控制台与游戏开发人员
1.3.2个人计算机
1.4第四阶段:调整与汇总
1.5第五阶段:游戏引擎的出现
1.6第六阶段:手指式革命
1.7。第七阶段:移动现象
1.8第八阶段:多方游戏
1.9结束语
第2章游戏体系结构
2.1实时软件
2.2游戏逻辑段
2.2,1玩家更新
2.2.2世界更新
2.3显示段
2.3.1世界绘制
2.3.2NPC绘制
2.3.3玩家
2.3.4问题:网络游戏
2.4编程过程
关卡
2.5结束语
第3章数据结构与算法
3.1类型、结构和类
3.2数据结构
3.2.1静态数组
3.2.2链表
3.2.3向链表
3.2.4队列
3.2.5堆栈
3.2.6双头队列
3.2.7表
3.2.8树
3.2.9优先队列
3.2.10图
3.3标准模板库
3.3.1容器
3.3.2迭代器
3.4结束语
第4章设计模式
4.1设计模式定义
4.2一些重要编程模式
4.2.1单体模式
4.2.2策略模式
4.2.332厂模式
4.2.4空间索引
4.2.5复合模式
4.2.6轻量级模式
4.3用性模式
4.3.1屏蔽模式
4.3.2状态模式
4.3.3自动方式取消
4.3.4磁化
4.3.5焦点模式
4.3.6进程模式
4.4结束语
第5章用户输入
5.1键盘
5.2鼠标;
5.3游戏杆
5.4硬件抽象
5.5力量反馈
5.6结束语
第6章基本人工智能技术
6.1情境
6.2人工智能系统结构
6.2.1感知世界
6.2.2记忆
6.2.3分析/推理核心
6.2.4动作/输出系统
6.3特定技术
6.3.1有限状态机
6.3.2规则系统
6.3.3规划与解题
6.3.4生物灵感人工智能
6.4结束语
第7章面向动作的人工智能
7.1动作游戏
7.2动作设计人工智能
7.3对象跟踪
7.3.1眼睛接触:二维半平面测试
7.3.2三维版本:半球
7.4追赶
7.4.1二维追赶:固定速度
7.4.2预测性追赶
7.5逃避
7.6巡逻
7.7隐藏与遮盖
7.8射击
7.8.1无限速度瞄准
7.8.2实际瞄准
7.8.3机关枪
7.9综合起来
7.9.1并行自动化
7.9.2AI同步
7.10结束语
7.10.1平台游戏
7.10.2射击游戏
7.10.3格斗游戏
7.10.4赛车游戏
第8章战术性人工智能
8.1战术性思维
8.1.1路径寻找
8.1.2团队活动
8.2军事分析:影响图
8.2.1数据结构
8.2.2一些重要测试
8.3表示战术
8.4结束语
第9章脚本
9.1建立脚本语言
9.1.1简单分析语言
9.1.2分析结构化语言
9.2嵌入语言
9.2.1学Lua
9.2.2Java脚本
9.3基于套接的脚本
9.4结束语
第10章网络编程
10.1Intemet的实际工作
10.2从编程人员角度看套接
10.3客户机
10.3.1简单TCP客户机
10.3.2简单UDP客户机
10.4简单TCP服务器
10.5多客户机服务器二
10.5.1并发的面向连接服务器
10.5.2迭代的面向连接服务器
10.6UDP服务器
10.7防止套接受阻
10.8设计客户机/服务器游戏
10.9大量用户的多方游戏
10.9.1数据外推
10.9.2层次消息
10.9.3空间分割
10.9.4只发送状态改变
10.9.5使用服务器群集
10.9.6动态服务器与勇士综合症
10.10结束语
第二部分引擎编程
第1l章二维游戏编程
11.1旧式硬件
11.2维游戏的数据结构
11.3贴图矩阵
地砖表
11.4维游戏算法
11.4.1屏幕游戏
11.4.25~向与四向卷轴
11.4.3多方引擎
11.4.4视差卷轴
11.4.5各向异性引擎
11.4.6.翻页卷轴
11.5特殊效果
11.5.1调色板效果
11.5.2点刻效果
11.5.3灰贴
11.5.4火
11.6结束语
第12章三维管道概述
12.1简介
12.2基本数据类型
12.2;1顶点
12.2.2索引图元
12.2.3颜色
12.2.4纹理贴图
12.3几何格式
12.4一般性图形管道
12.4.1剪取
12.4.2挑选
12.4.3闭合测试
12.4.4确定分辨率
12.4.5变换与灯光
12.4.6光栅化
12.5结束语
第13章室内绘制
13.1一般分析
13.2基于闭合的算法
13.3叉空间划分算法
13:3.1构造
13.3.2视图相关排序
13.3.3层次式剪取
13.3.4闭合探测
13.3.5绘制
13:4门户绘制
13.5层次式闭合图
13.6混合方法
13.6.1门户/八叉树混合
13.6.2四叉树/BSP混合
13.7硬件辅助闭合测试
13.8结束语
第14章户外算法
14.1概述
14.2户外绘制的数据结构
14.2,1高度域
14.2.2四叉树
14.2.3--叉三角形树
14.3几何贴图
14.4ROAM
14.4.1第一遍:构造变差树
14:4.2第二遍:网格重构
14.4.3优化
14.5块LOD
14.6以GPU为中心的方法
14.7户外视景图
14.8结束语
第15章角色动画
15.1分析
15.2显式与隐式方法
15.3式动画技术
15.3.1帧动画
15.3.2关键帧动画
15.3.3标记插值
15.4隐式动画概述
15.4.1向动力学
15.4.2框架动画的数学
15.4.3硬件辅助框架动画
15.5道具处理
15.6关于机车
15.7四肢分解
15.8面部动画
15.9逆向动力学
15.9.1分析逆向动力学
15.9.2循环坐标派生
15.10混合正向与逆向动力学
15.11结束语
第16章制片术
16.1第一人称视角射击游戏
16.2处理惯性
16.3飞行模拟器与四元数
16.4第三人称视角镜头
16.5制片镜头:镜头样式
16.6制片镜头:位置算法
16.6.1选择镜头目标
16.6.2选择相关信息
16.6.3选择视图角度
16.7基于agent的方法
16.8结束语
第17章色档
17.1实际照明
17.11简单绘制方程
17.1.2按顶点与按像素照明
17.2灯光贴图
17.2.1扩散贴图
17.2.2镜面贴图
17.2.3’使用灯光图的全局照明
17.2.4实现光贴图:DirectX
17.2.5用DirectX实现灯光贴图
17.2.6生成灯光贴图
17.3BRDF
17.3.1平均向量:
17.3.2阴影
17.4非照片真实绘制
17.4.1铅笔绘制
17.4.2外形线绘制
17.4.3划线外形
17.4.4单帧色档
’17.4.5油画绘制
17.5结束语
第18章纹理贴图
18.1纹理类型
18.1.1纹理贴图
18.1.2XYZ贴图
18.1.3圆柱贴图
18.1.4球形贴图
18.1.5三角形纹理贴图
18.2平铺与贴花
18.3过滤
18.4Mip贴图
18.5纹理优化
18.5.1纹理压缩
18.5.2纹理缓存与分页
18.6多遍方法
18.7多纹理
18.8纹理运算与组合
18.9细节纹理
18.10环境贴图
18.11鼓包贴图
18.11.1浮雕鼓包贴图
18.11.2Dot3鼓包贴图
18.12上光贴图
18.13结束语
第19章微粒系统
19.1微粒系统剖析
19.2微粒数据结束
19.2.1一般性微粒系统
19.2.2派生微粒
19.2.3微粒行为
19.2.4微粒消除
19.2.5绘制微粒
19.3关于体系结构
19.4加速技术
19.4.1避免内存分配与释放
19.4.2空间索引
19.4.3LOD微粒系统
19,4.4基于色档的微粒系统
19.5结束语
第20章有机构绘制
20.1自然与细节
20.2树
20.2.1告示牌
20.2.2基于图像方法
20.2.3平行IBR方法
20.2.4正交IBR方法
20.3草
20.3.1分层草
20.3.2统计分布算法
20.4云
20.4.1天框与园顶
20.4.2招贴板云
20.4.3容积云
20.5海洋
20.5.1逼真海洋几何
20.5.2海洋外观
20.5.3焦散性
20.6结束语
第21章过程性技术
21.1过程性列表
21.2Renderman
21.3实时色档语言
21.3.1当前语言
21.3.2Cg
21.3.3HLSL
21.3.4GL2色档语言
21.4色档程序类型
21.4.1色档程序集合
21.4.2几何效果
21.4.3灯光
21.5纹理贴图
21.6微粒系统
21.7动画
21.8特殊效果
21.9’结束语
第22章几何算法
22.1点包括测试
22.1.1球上的点
22.1.2AABB中的点
22.1.3凸多边形的点
22.1.4多边形的点
—(凹与凸):约当法
22.1.5曲线定理
22.1.6凸实体的点
22.1.7实体的点(约当曲线定理)
22.2光束相交测试
22.2.1光束平面
22.2.2光三角形
22.2.3光AABB测试
22.2.4光球测试
22.2.5光凸形外壳
22.2.6光一般实体(三维DDA)
22.3运动测试
22.4点与三角形集合碰撞<基于BSP)
22.5网格与网格(清扫与修剪方法)
22.6计算凸形外壳
22.6.1二维方案
22.6.2三维方案
22.7三角形简化
22.7.1顶点重合
22.7.2边重合
22.7.3递进网格
22.7.4非保守式三角形简化
22.8结束语
第三部分附录
附录A性能调整
附录BOpenGL
附录CDirect3D
附录D数学知识
附录E更多读物