游戏引擎架构
2014-1
电子工业出版社
[美] Jason Gregory (杰森.格雷戈瑞)
叶劲峰
无
《游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎或API。文中的参考及引用也非常有用,可让读者继续深入游戏开发过程的任何特定方向。
《游戏引擎架构》为一个大学程度的游戏编程课程而编写,但也适合软件工程师、业余爱好者、自学游戏程序员,以及游戏产业的从业人员。通过阅读《游戏引擎架构》,资历较浅的游戏工程师可以巩固他们所学的游戏技术及引擎架构的知识,专注某一领域的资深程序员也能从本书更为全面的介绍中获益。
內容包括:
- 游戏开发中的大规模C++软件架构
- 游戏编程所需的数学
- 供调试、源代码控制及性能剖析的游戏开发工具
- 引擎基础系统、渲染、碰撞、物理、角色动画、游戏世界对象模型等引擎子系统
- 多平台游戏引擎
- 多处理器环境下的游戏编程
- 工作管道及游戏资产数据库
作者介绍: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年加入腾讯互动娱乐引擎技术中心担任专家工程师,所研发的技术已用于《斗战神》、《天涯明月刀》、《众神争霸》等项目中。
推荐序1 iii
推荐序2 v
译序 vii
序言 xvii
前言 xix
致谢 xxi
第一部分 基础 1
第1章 导论 3
1.1 典型游戏团队的结构 4
1.2 游戏是什么 7
1.3 游戏引擎是什么 10
1.4 不同游戏类型中的引擎差异 11
1.5 游戏引擎概观 22
1.6 运行时引擎架构 27
1.7 工具及资产管道 46
第2章 专业工具 53
2.1 版本控制 53
2.2 微软Visual Studio 61
2.3 剖析工具 78
2.4 内存泄漏和损坏检测 79
2.5 其他工具 80
第3章 游戏软件工程基础 83
3.1 重温C++及最佳实践 83
3.2 C/C++的数据、代码及内存 90
3.3 捕捉及处理错误 118
第4章 游戏所需的三维数学 125
4.1 在二维中解决三维问题 125
4.2 点和矢量 125
4.3 矩阵 139
4.4 四元数 156
4.5 比较各种旋转表达方式 164
4.6 其他数学对象 168
4.7 硬件加速的SIMD运算 173
4.8 产生随机数 180
第二部分 低阶引擎系统 183
第5章 游戏支持系统 185
5.1 子系统的启动和终止 185
5.2 内存管理 193
5.3 容器 208
5.4 字符串 225
5.5 引擎配置 234
第6章 资源及文件系统 241
6.1 文件系统 241
6.2 资源管理器 251
第7章 游戏循环及实时模拟 277
7.1 渲染循环 277
7.2 游戏循环 278
7.3 游戏循环的架构风格 280
7.4 抽象时间线 283
7.5 测量及处理时间 285
7.6 多处理器的游戏循环 296
7.7 网络多人游戏循环 304
第8章 人体学接口设备(HID) 309
8.1 各种人体学接口设备 309
8.2 人体学接口设备的接口技术 311
8.3 输入类型 312
8.4 输出类型 316
8.5 游戏引擎的人体学接口设备系统 318
8.6 人体学接口设备使用实践 332
第9章 调试及开发工具 333
9.1 日志及跟踪 333
9.2 调试用的绘图功能 337
9.3 游戏内置菜单 344
9.4 游戏内置主控台 347
9.5 调试用摄像机和游戏暂停 348
9.6 作弊 348
9.7 屏幕截图及录像 349
9.8 游戏内置性能剖析 349
9.9 游戏内置的内存统计和泄漏检测 356
第三部分 图形及动画 359
第10章 渲染引擎 361
10.1 采用深度缓冲的三角形光栅化基础 361
10.2 渲染管道 404
10.3 高级光照及全局光照 426
10.4 视觉效果和覆盖层 438
10.5 延伸阅读 446
第11章 动画系统 447
11.1 角色动画的类型 447
11.2 骨骼 452
11.3 姿势 454
11.4 动画片段 459
11.5 蒙皮及生成矩阵调色板 471
11.6 动画混合 476
11.7 后期处理 493
11.8 压缩技术 496
11.9 动画系统架构 501
11.10 动画管道 502
11.11 动作状态机 515
11.12 动画控制器 535
第12章 碰撞及刚体动力学 537
12.1 你想在游戏中加入物理吗 537
12.2 碰撞/物理中间件 542
12.3 碰撞检测系统 544
12.4 刚体动力学 569
12.5 整合物理引擎至游戏 601
12.6 展望:高级物理功能 616
第四部分 游戏性 617
第13章 游戏性系统简介 619
13.1 剖析游戏世界 619
13.2 实现动态元素:游戏对象 623
13.3 数据驱动游戏引擎 626
13.4 游戏世界编辑器 627
第14章 运行时游戏性基础系统 637
14.1 游戏性基础系统的组件 637
14.2 各种运行时对象模型架构 640
14.3 世界组块的数据格式 657
14.4 游戏世界的加载和串流 663
14.5 对象引用与世界查询 670
14.6 实时更新游戏对象 676
14.7 事件与消息泵 690
14.8 脚本 707
14.9 高层次的游戏流程 726
第五部分 总结 727
第15章 还有更多内容吗 729
15.1 一些未谈及的引擎系统 729
15.2 游戏性系统 730
参考文献 733
中文索引 737
英文索引 755
无