游戏引擎架构(第2版)

0
(0)

游戏引擎架构(第2版)

作者:【美】JasonGregory

出版社:电子工业出版社

译者:叶劲峰

出版年:2019-11

页数:972

定价:219

装帧:平装

ISBN:9787121375293

内容简介
······

《游戏引擎架构(第2版)》涵盖游戏引擎软件开发的理论及实践知识,并在第1版的基础上对多个主题进行了更新。本书中讨论的概念及技巧被实际应用于现实中的游戏工作室(如艺电及顽皮狗)。虽然书中采用的例子通常依托于一些专门的技术,但是讨论范围远超某个引擎或API。另外,书中提供的参考文献及引用也非常有价值,可让读者继续深入游戏开发的任何特定方向。

《游戏引擎架构(第2版)》为大学程度的游戏编程课程而编写,但也适合软件工程师、游戏开发业余爱好者,以及游戏产业的从业人员阅读。通过阅读本书,资历较浅的游戏工程师可以巩固他们所学的游戏技术及引擎架构的知识,专注某一领域的程序员也能从本书全面的介绍中获益。

作者简介
······

Jason Gregory,在1994年开始任职专业软件工程师,自1999年3月开始在游戏产业中任职软件工程师。在圣迭哥Midway Home Entertainment公司开始游戏编程的他,为《疯狂飞行员(Freaky Flyers)》及《Crank the Weasel》开发PlayStation 2/Xbox上的动画系统。在2003年,他转到洛杉矶艺电,为《荣誉勋章:血战太平洋(Medal of Honor: Pacific Assault)》开发游戏引擎及游戏性技术,并在《荣誉勋章:空降神兵(Medal of Honor: Airborne)》中担任首席工程师。他现时是顽皮狗公司的通才程序员,为《神秘海域:德雷克船长的宝藏(Uncharted: Drake's Fortune)》及《神秘海域:纵横四海(Uncharted: Among Thieves)》开发引擎及游戏性软件。他也在南加州大学教授游戏技术的课程。

译者简介

叶劲峰(Milo Yip),从小自习编程,并爱好计算机图形学。上中学时兼职开发策略RPG《王子传奇》,该游戏在1995年于台湾发行。其后他获取了香港大学认知科学学士、香港中文大学系统工程及工程管理哲学硕士。毕业后在香港理工大学设计学院从事游戏引擎及相关技术的研发,职至项目主任。除发表学术文章外,也曾合著《DirectX9游戏编程实务》。2008年往上海育碧担任引擎工程师开发《美食从天而降(Cloudy with a Chance of Meatballs)》Xbox360/PS3/Wii/PC,2009年起于麻辣马开发《爱丽丝:疯狂回归(Alice: Madness Returns)》Xbox360/PS3/PC,2011年加入腾讯互动娱乐引擎技术中心担任专家工程师,所研发的技术已用于《斗战神》、《天涯明月刀》、《众神争霸》等项目中。

目录
······

第2 版序言• • • • • • • • • • • • • • • • xxxiii

第1 版序言• • • • • • • • • • • • • • • • xxxv

第2 版前言• • • • • • • • • • • • • • • • xxxvii

第1 版前言• • • • • • • • • • • • • • • • xxxviii

致谢 • • • • • • • • • • • • • • • • • xl

第I 部分 基 础

第1 章 导论• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 3

1.1 典型游戏团队的结构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 4

1.1.1 工程师 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 5

1.1.2 艺术家 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 5

1.1.3 游戏设计师 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 6

1.1.4 制作人 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 7

1.1.5 其他工作人员• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 7

1.1.6 发行商及工作室• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 7

1.2 游戏是什么 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 8

1.2.1 电子游戏作为软实时模拟• • • • • • • • • • • • • • • • • • • • • • • • • • • • • 8

1.3 游戏引擎是什么• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 10

1.4 不同游戏类型的引擎差异• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 11

1.4.1 第一人称射击游戏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 12

1.4.2 平台及其他第三人称游戏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • 13

1.4.3 格斗游戏 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 15

1.4.4 竞速游戏 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 17

1.4.5 实时策略游戏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 18

1.4.6 大型多人在线游戏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 20

1.4.7 玩家创作内容†• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 21

1.4.8 其他游戏类型• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 23

1.5 游戏引擎概览 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 24

1.5.1 雷神之锤引擎家族• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 24

1.5.2 虚幻引擎 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 25

1.5.3 Source 引擎• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 26

1.5.4 DICE 的寒霜引擎† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 26

1.5.5 CryEngine† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 26

1.5.6 索尼的PhyreEngine† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 27

1.5.7 微软的XNA Game Studio• • • • • • • • • • • • • • • • • • • • • • • • • • • • 27

1.5.8 Unity† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 27

1.5.9 供非程序员使用的二维游戏引擎† • • • • • • • • • • • • • • • • • • • • • • • • • 28

1.5.10 其他商业引擎 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 29

1.5.11 专有内部引擎 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 29

1.5.12 开源引擎• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 29

1.6 运行时引擎架构• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 30

1.6.1 目标硬件 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 32

1.6.2 设备驱动程序• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 32

1.6.3 操作系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 32

1.6.4 第三方软件开发包和中间件• • • • • • • • • • • • • • • • • • • • • • • • • • • • 33

1.6.5 平台独立层 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 36

1.6.6 核心系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 36

1.6.7 资源管理器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 37

1.6.8 渲染引擎 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 37

1.6.9 剖析和调试工具• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 41

1.6.10 碰撞和物理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 42

1.6.11 动画• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 43

1.6.12 人体学接口设备 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 44

1.6.13 音频• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 45

1.6.14 在线多人/网络游戏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 46

1.6.15 游戏性基础系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 47

1.6.16 个别游戏专用子系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 50

1.7 工具及资产管道• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 50

1.7.1 数字内容创作工具• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 50

1.7.2 资产调节管道• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 52

1.7.3 世界编辑器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 54

1.7.4 资源数据库† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 55

1.7.5 一些构建工具的方法• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 55

第2 章 专业工具• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 58

2.1 版本控制• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 58

2.1.1 为何使用版本控制• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 58

2.1.2 常见的版本控制系统• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 59

2.1.3 Subversion 和TortoiseSVN 概览• • • • • • • • • • • • • • • • • • • • • • • • • 60

2.1.4 在Google 上设置代码版本库• • • • • • • • • • • • • • • • • • • • • • • • • • • 61

2.1.5 安装TortoiseSVN• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 61

2.1.6 文件版本、更新和提交• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 63

2.1.7 多人签出、分支及合并• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 64

2.1.8 删除 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 66

2.2 微软Visual Studio• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 66

2.2.1 源文件、头文件及翻译单元• • • • • • • • • • • • • • • • • • • • • • • • • • • • 67

2.2.2 程序库、可执行文件及动态链接库• • • • • • • • • • • • • • • • • • • • • • • • • 67

2.2.3 项目及解决方案• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 68

2.2.4 生成配置 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 69

2.2.5 调试代码 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 75

2.3 剖析工具• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 81

2.3.1 剖析器列表 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 83

2.4 内存泄漏和损坏检测 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 83

2.5 其他工具• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 84

第3 章 游戏软件工程基础 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 85

3.1 重温C++ 及最佳实践 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 85

3.1.1 扼要重温面向对象编程• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 85

3.1.2 编码标准: 为什么及需要多少• • • • • • • • • • • • • • • • • • • • • • • • • • • 91

3.1.3 C++11† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 92

3.2 C/C++ 的数据、代码及内存• • • • • • • • • • • • • • • • • • • • • • • • • • • • 99

3.2.1 数值表达形式• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 99

3.2.2 声明、定义及链接规范• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 109

3.2.3 C/C++ 内存布局• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 115

3.2.4 成员变量 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 119

3.2.5 对象的内存布局• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 121

3.2.6 kilobyte 及kibibyte • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 129

3.3 捕捉及处理错误• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 129

3.3.1 错误类型 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 129

3.3.2 错误处理 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 130

3.3.3 实现错误检测及处理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 132

3.4 流水线、缓存及优化• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 136

3.4.1 并行范式转移• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 136

3.4.2 内存缓存 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 137

3.4.3 指令流水线及超纯量CPU • • • • • • • • • • • • • • • • • • • • • • • • • • • • 142

第4 章 游戏所需的三维数学• • • • • • • • • • • • • • • • • • • • • • • • • • • • • 146

4.1 在二维中解决三维问题 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 146

4.2 点和矢量• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 146

4.2.1 点和笛卡儿坐标• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 147

4.2.2 左手坐标系与右手坐标系的比较 • • • • • • • • • • • • • • • • • • • • • • • • • 148

4.2.3 矢量 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 149

4.2.4 矢量运算 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 150

4.2.5 点和矢量的线性插值• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 160

4.3 矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 160

4.3.1 矩阵乘法 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 161

4.3.2 以矩阵表示点和矢量• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 162

4.3.3 单位矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 163

4.3.4 逆矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 163

4.3.5 转置矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 163

4.3.6 齐次坐标 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 164

4.3.7 基础变换矩阵• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 165

4.3.8 4 × 3 矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 168

4.3.9 坐标空间 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 168

4.3.10 基的变更• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 171

4.3.11 变换法矢量• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 175

4.3.12 在内存中存储矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 175

4.4 四元数• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 177

4.4.1 把单位四元数视为三维旋转• • • • • • • • • • • • • • • • • • • • • • • • • • • • 178

4.4.2 四元数运算 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 178

4.4.3 以四元数旋转矢量• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 180

4.4.4 等价的四元数和矩阵• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 181

4.4.5 旋转性的线性插值• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 183

4.5 比较各种旋转表达方式 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 185

4.5.1 欧拉角 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 185

4.5.2 3 × 3 矩阵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 186

4.5.3 轴角 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 186

4.5.4 四元数 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 187

4.5.5 SQT 变换• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 187

4.5.6 对偶四元数 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 188

4.5.7 旋转和自由度• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 188

4.6 其他数学对象 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 189

4.6.1 直线、光线及线段 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 189

4.6.2 球体 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 190

4.6.3 平面 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 190

4.6.4 轴对齐包围盒• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 192

4.6.5 定向包围盒 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 193

4.6.6 平截头体 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 193

4.6.7 凸多面体区域• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 194

4.7 硬件加速的SIMD 运算• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 194

4.7.1 SSE 寄存器• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 195

4.7.2 __m128 数据类型• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 196

4.7.3 用SSE 内部函数编码 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 197

4.7.4 用SSE 实现矢量与矩阵的相乘• • • • • • • • • • • • • • • • • • • • • • • • • • 199

4.8 产生随机数 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 203

4.8.1 线性同余产生器• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 204

4.8.2 梅森旋转 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 204

4.8.3 所有伪随机数产生器之母及Xorshift • • • • • • • • • • • • • • • • • • • • • • • 205

第II 部分 底层引擎系统

第5 章 游戏支持系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 209

5.1 子系统的启动和终止 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 209

5.1.1 C++ 的静态初始化次序(是不可用的) • • • • • • • • • • • • • • • • • • • • • • 209

5.1.2 行之有效的简单方法• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 212

5.1.3 一些实际引擎的例子• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 214

5.2 内存管理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 218

5.2.1 优化动态内存分配• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 218

5.2.2 内存碎片 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 227

5.3 容器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 231

5.3.1 容器操作 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 232

5.3.2 迭代器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 233

5.3.3 算法复杂度 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 234

5.3.4 建立自定义的容器类• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 236

5.4 字符串• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 248

5.4.1 字符串的使用问题• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 248

5.4.2 字符串类 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 249

5.4.3 唯一标识符 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 249

5.4.4 本地化 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 253

5.5 引擎配置• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 263

5.5.1 读/写选项• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 263

5.5.2 个别用户选项• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 264

5.5.3 真实引擎中的配置管理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 265

第6 章 资源及文件系统• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 270

6.1 文件系统• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 270

6.1.1 文件名和路径• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 271

6.1.2 基本文件I/O • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 274

6.1.3 异步文件I/O • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 277

6.2 资源管理器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 281

6.2.1 离线资源管理及工具链• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 281

6.2.2 运行时资源管理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 289

第7 章 游戏循环及实时模拟• • • • • • • • • • • • • • • • • • • • • • • • • • • • • 305

7.1 渲染循环• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 305

7.2 游戏循环• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 306

7.2.1 简单例子:《乓》• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 306

7.3 游戏循环的架构风格 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 308

7.3.1 视窗消息泵 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 308

7.3.2 回调驱动框架• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 309

7.3.3 基于事件的更新• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 311

7.4 抽象时间线 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 311

7.4.1 真实时间 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 311

7.4.2 游戏时间 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 311

7.4.3 局部及全局时间线• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 312

7.5 测量及处理时间• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 313

7.5.1 帧率及时间增量• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 313

7.5.2 从帧率到速率• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 314

7.5.3 使用高分辨率计时器测量实时时间 • • • • • • • • • • • • • • • • • • • • • • • • 317

7.5.4 时间单位和时钟变量• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 318

7.5.5 应对断点 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 321

7.5.6 一个简单的时钟类• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 322

7.6 多处理器的游戏循环 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 325

7.6.1 多处理器游戏机的架构• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 326

7.6.2 SIMD• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 331

7.6.3 分叉及汇合 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 331

7.6.4 每个子系统运行于独立线程• • • • • • • • • • • • • • • • • • • • • • • • • • • • 333

7.6.5 作业模型 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 334

7.6.6 异步程序设计• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 334

7.7 网络多人游戏循环• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 337

7.7.1 主从式模型 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 337

7.7.2 点对点模型 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 339

7.7.3 案例分析:《雷神之锤II》• • • • • • • • • • • • • • • • • • • • • • • • • • • • • 339

第8 章 人体学接口设备• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 342

8.1 各种人体学接口设备 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 342

8.2 人体学接口设备的接口技术• • • • • • • • • • • • • • • • • • • • • • • • • • • • • 344

8.2.1 轮询 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 344

8.2.2 中断 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 344

8.2.3 无线设备 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 345

8.3 输入类型• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 345

8.3.1 数字式按钮 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 345

8.3.2 模拟式轴及按钮• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 347

8.3.3 相对性轴 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 348

8.3.4 加速计 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 348

8.3.5 以Wii 遥控器或DualShock 做三维定向 • • • • • • • • • • • • • • • • • • • • • 349

8.3.6 摄像机 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 350

8.4 输出类型• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 352

8.4.1 震动反馈 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 352

8.4.2 力反馈 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 353

8.4.3 音频 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 353

8.4.4 其他输入/输出 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 353

8.5 游戏引擎的人体学接口设备系统 • • • • • • • • • • • • • • • • • • • • • • • • • • 353

8.5.1 典型需求 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 354

8.5.2 死区 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 354

8.5.3 模拟信号过滤• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 355

8.5.4 输入事件检测• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 357

8.5.5 为多位玩家管理多个HID • • • • • • • • • • • • • • • • • • • • • • • • • • • • 364

8.5.6 跨平台的HID 系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 364

8.5.7 输入的重新映射• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 366

8.5.8 上下文相关控制• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 367

8.5.9 禁用输入 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 368

8.6 人体学接口设备使用实践• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 368

第9 章 调试及开发工具• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 370

9.1 日志及跟踪 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 370

9.1.1 使用OutputDebugString() 做格式化输出• • • • • • • • • • • • • • • • • • • • • 371

9.1.2 冗长级别 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 372

9.1.3 频道 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 373

9.1.4 把输出同时抄写至日志文件• • • • • • • • • • • • • • • • • • • • • • • • • • • • 374

9.1.5 崩溃报告 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 374

9.2 调试用的绘图功能• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 375

9.2.1 调试绘图API • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 378

9.3 游戏内置菜单 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 382

9.4 游戏内置主控台• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 385

9.5 调试用摄像机和游戏暂停• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 386

9.6 作弊 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 386

9.7 屏幕截图及录像• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 387

9.8 游戏内置性能剖析• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 387

9.8.1 层阶式剖析 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 389

9.8.2 导出至Excel • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 394

9.9 游戏内置的内存统计和泄漏检测 • • • • • • • • • • • • • • • • • • • • • • • • • • 394

第III 部分 图形、运动与声音

第10 章 渲染引擎 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 401

10.1 采用深度缓冲的三角形光栅化基础 • • • • • • • • • • • • • • • • • • • • • • • • 401

10.1.1 场景描述• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 403

10.1.2 描述表面的视觉性质 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 410

10.1.3 光照基础• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 423

10.1.4 虚拟摄像机• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 432

10.2 渲染管道• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 442

10.2.1 渲染管道概览 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 443

10.2.2 工具阶段• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 444

10.2.3 资产调节阶段 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 446

10.2.4 GPU 简史• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 447

10.2.5 GPU 管道• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 448

10.2.6 可编程着色器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 452

10.2.7 抗锯齿† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 456

10.2.8 应用程序阶段 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 459

10.3 高级光照及全局光照• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 468

10.3.1 基于图像的光照 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 468

10.3.2 高动态范围光照 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 472

10.3.3 全局光照• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 473

10.3.4 延迟渲染• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 479

10.3.5 基于物理着色† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 480

10.4 视觉效果和覆盖层• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 481

10.4.1 粒子效果• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 481

10.4.2 贴花• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 482

10.4.3 环境效果• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 483

10.4.4 覆盖层• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 486

10.4.5 伽马校正• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 487

10.4.6 全屏后期处理效果 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 488

10.5 延伸阅读• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 489

第11 章 动画系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 490

11.1 角色动画的类型 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 490

11.1.1 赛璐璐动画• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 490

11.1.2 刚性层阶式动画 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 491

11.1.3 每顶点动画及变形目标 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 492

11.1.4 蒙皮动画• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 493

11.1.5 把动画方法视为数据压缩技术• • • • • • • • • • • • • • • • • • • • • • • • • • 494

11.2 骨骼• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 495

11.2.1 骨骼层阶结构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 496

11.2.2 在内存中表示骨骼 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 497

11.3 姿势• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 498

11.3.1 绑定姿势• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 498

11.3.2 局部姿势• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 499

11.3.3 全局姿势• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 501

11.4 动画片段• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 502

11.4.1 局部时间线• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 503

11.4.2 全局时间线• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 506

11.4.3 比较局部和全局时钟 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 508

11.4.4 简单的动画数据格式 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 511

11.4.5 连续的通道函数 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 512

11.4.6 元通道• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 513

11.5 蒙皮及生成矩阵调色板• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 514

11.5.1 每顶点的蒙皮信息 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 515

11.5.2 蒙皮涉及的数学知识 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 515

11.6 动画混合• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 519

11.6.1 线性插值混合 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 519

11.6.2 线性插值混合的应用 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 521

11.6.3 复杂的线性插值混合 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 526

11.6.4 骨骼分部混合 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 529

11.6.5 加法混合• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 531

11.6.6 加法混合的应用 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 533

11.7 后期处理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 536

11.7.1 程序式动画• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 536

11.7.2 逆运动学• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 537

11.7.3 布娃娃• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 538

11.8 压缩技术• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 538

11.8.1 通道省略• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 539

11.8.2 量化• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 539

11.8.3 采样频率及键省略 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 543

11.8.4 基于曲线的压缩 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 543

11.8.5 选择性载入及串流 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 544

11.9 动画系统架构• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 544

11.10 动画管道 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 545

11.10.1 数据结构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 546

11.10.2 扁平的加权平均混合表示法 • • • • • • • • • • • • • • • • • • • • • • • • • • 549

11.10.3 混合树 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 552

11.10.4 淡入/淡出架构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 555

11.10.5 动画管道的优化• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 557

11.11 动作状态机 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 559

11.11.1 动画状态 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 559

11.11.2 过渡 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 565

11.11.3 状态层 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 568

11.11.4 控制参数 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 570

11.11.5 约束 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 571

11.12 动画控制器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 579

第12 章 碰撞及刚体动力学• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 580

12.1 你想在游戏中加入物理吗 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 580

12.1.1 物理系统可以做的事情 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 581

12.1.2 物理好玩吗• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 582

12.1.3 物理对游戏的影响 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 583

12.2 碰撞/物理中间件• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 585

12.2.1 I-Collide、SWIFT、V-Collide 及RAPID • • • • • • • • • • • • • • • • • • • • 585

12.2.2 ODE • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 585

12.2.3 Bullet • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 586

12.2.4 TrueAxis • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 586

12.2.5 PhysX• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 586

12.2.6 Havok • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 587

12.2.7 PAL• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 587

12.2.8 DMM • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 587

12.3 碰撞检测系统• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 588

12.3.1 可碰撞的实体 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 588

12.3.2 碰撞/物理世界• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 589

12.3.3 关于形状的概念 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 590

12.3.4 碰撞原型• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 592

12.3.5 碰撞测试及解析几何 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 596

12.3.6 性能优化• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 604

12.3.7 碰撞查询• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 606

12.3.8 碰撞过滤• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 610

12.4 刚体动力学• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 611

12.4.1 基础• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 613

12.4.2 线性动力学• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 614

12.4.3 运动方程求解 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 616

12.4.4 数值积分• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 618

12.4.5 二维旋转动力学 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 622

12.4.6 三维旋转动力学 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 625

12.4.7 碰撞响应• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 629

12.4.8 约束• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 636

12.4.9 控制刚体的运动 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 640

12.4.10 碰撞/物理步 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 641

12.5 将物理引擎整合至游戏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 643

12.5.1 连接游戏对象和刚体 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 643

12.5.2 更新模拟• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 646

12.5.3 游戏中碰撞及物理的应用例子• • • • • • • • • • • • • • • • • • • • • • • • • • 649

12.6 展望: 高级物理功能 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 656

第13 章 音频† • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 658

13.1 声音的物理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 658

13.1.1 声波的属性• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 659

13.1.2 感知响度及分贝 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 660

13.1.3 声波的传播• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 663

13.1.4 位置的感知• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 668

13.2 声音中的数学知识• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 668

13.2.1 信号• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 669

13.2.2 处理信号• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 670

13.2.3 线性时不变系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 671

13.2.4 LTI 系统的脉冲响应 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 672

13.2.5 频域与傅里叶变换 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 677

13.3 声音技术• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 685

13.3.1 模拟音频技术 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 685

13.3.2 数字音频技术 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 690

13.4 三维音频渲染• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 696

13.4.1 三维声音渲染概览 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 697

13.4.2 为音频世界建模 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 698

13.4.3 基于距离的衰减 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 698

13.4.4 偏移• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 700

13.4.5 传播、混响及声学• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 705

13.4.6 多普勒频移• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 712

13.5 音频引擎架构• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 712

13.5.1 音频处理管道 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 714

13.5.2 概念及术语• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 714

13.5.3 音总线• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 715

13.5.4 主控混音器• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 718

13.5.5 主控输出总线 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 719

13.5.6 实现总线• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 720

13.5.7 资产管理• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 722

13.5.8 对游戏混音• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 724

13.5.9 音频引擎调查 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 727

13.6 游戏专用的音频功能• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 730

13.6.1 支持切割屏• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 731

13.6.2 角色对话• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 732

13.6.3 音乐• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 744

第IV 部分 游 戏 性

第14 章 游戏性系统简介• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 747

14.1 剖析游戏世界• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 748

14.1.1 世界元素• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 748

14.1.2 世界组块• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 750

14.1.3 高级游戏流程 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 751

14.2 实现动态元素: 游戏对象• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 752

14.2.1 游戏对象模型 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 753

14.2.2 工具方的设计和运行时的设计• • • • • • • • • • • • • • • • • • • • • • • • • • 754

14.3 数据驱动游戏引擎• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 754

14.4 游戏世界编辑器 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 755

14.4.1 游戏世界编辑器的典型功能• • • • • • • • • • • • • • • • • • • • • • • • • • • 758

4.4.2 集成的资产管理工具 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 763

第15 章 运行时游戏性基础系统• • • • • • • • • • • • • • • • • • • • • • • • • • • 766

15.1 游戏性基础系统的组件• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 766

15.2 各种运行时对象模型架构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 768

15.2.1 以对象为中心的各种架构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • 769

15.2.2 以属性为中心的各种架构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • 781

15.3 世界组块的数据格式• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 785

15.3.1 二进制对象映像 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 786

15.3.2 序列化游戏对象描述 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 786

15.3.3 生成器及类型架构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 788

15.4 游戏世界的加载和串流• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 792

15.4.1 简单的关卡加载 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 792

15.4.2 向无缝加载进发: 阻隔室 • • • • • • • • • • • • • • • • • • • • • • • • • • • • 792

5.4.3 游戏世界的串流 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 794

15.4.4 对象生成的内存管理 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 796

15.4.5 游戏存档• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 798

15.5 对象引用与世界查询• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 799

15.5.1 指针• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 799

15.5.2 智能指针• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 800

15.5.3 句柄• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 802

15.5.4 游戏对象查询 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 804

15.6 实时更新游戏对象• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 806

15.6.1 一个简单(但不可行) 的方式• • • • • • • • • • • • • • • • • • • • • • • • • • • 807

15.6.2 性能限制及批次式更新 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 809

15.6.3 对象及子系统的相互依赖 • • • • • • • • • • • • • • • • • • • • • • • • • • • • 811

15.6.4 为并行设计• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 819

15.7 事件与消息泵• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 821

15.7.1 静态类型的函数绑定带来的问题• • • • • • • • • • • • • • • • • • • • • • • • • 821

15.7.2 把事件封装成对象 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 822

15.7.3 事件类型• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 823

15.7.4 事件参数• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 824

15.7.5 事件处理器• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 826

15.7.6 取出事件参数 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 827

15.7.7 职责链• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 827

15.7.8 登记对事件的关注 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 829

15.7.9 要排队还是不要排队 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 830

15.7.10 即时传递事件带来的问题• • • • • • • • • • • • • • • • • • • • • • • • • • • • 835

15.7.11 数据驱动事件/消息传递系统• • • • • • • • • • • • • • • • • • • • • • • • • • 836

15.8 脚本• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 839

15.8.1 运行时与数据定义的对比 • • • • • • • • • • • • • • • • • • • • • • • • • • • • 839

15.8.2 编程语言特性 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 839

15.8.3 一些常见的游戏脚本语言 • • • • • • • • • • • • • • • • • • • • • • • • • • • • 841

15.8.4 脚本所需的架构 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 846

15.8.5 运行时游戏脚本语言的功能• • • • • • • • • • • • • • • • • • • • • • • • • • • 847

15.9 高层次的游戏流程• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 858

第V 部分 总 结

第16 章 还有更多内容吗• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 863

16.1 一些未谈及的引擎系统• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 863

16.1.1 影片播放器• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 863

16.1.2 多人网络• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 864

16.2 游戏性系统• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 864

16.2.1 玩家机制• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 864

16.2.2 摄像机• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 864

16.2.3 人工智能• • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 865

16.2.4 其他游戏性系统 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 866

参考文献 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 867

中文索引 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 871

英文索引 • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • • 900

评论 ······

很不错的阅读体验

粗略地读了一遍,翻译和内容都太好了,做游戏需要学习的知识实在是太多了

其实我不知道这本书的定位,阅读过第一版,当时就很失望。关于引擎的各个方面都有涉及,问题就是定位不清。需要写引擎的,或者能够写引擎的,这本书就是科普读物。刚游戏开发入门的,这本书又偏理论,什么都涉及,什么都不深入,远不如自己下个unity或者UE4玩玩更能理解什么是游戏引擎,游戏引擎应该做些什么东西。总之,就是书籍的读者定位就是个谜。

泛泛而谈,适合入门。

点击星号评分!

平均分 0 / 5. 投票数: 0

还没有投票!请为他投一票。

推荐阅读

评论 抢沙发

评论前必须登录!

 

登录

找回密码

注册