猜你喜欢
游戏引擎架构(第2版)

游戏引擎架构(第2版)

书籍作者:[美] Jason Gregory ISBN:9787121375293
书籍语言:简体中文 连载状态:全集
电子书格式:pdf,txt,epub,mobi,azw3 下载次数:5638
创建日期:2021-02-14 发布日期:2021-02-14
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板
内容简介

《游戏引擎架构》(第 2 版)涵盖游戏引擎软件开发的理论及实践知识,并在第 1 版的基础上对多个主题进行了更新。本书中讨论的概念及技巧被实际应用于现实中的游戏工作室(如艺电及顽皮狗)。虽然书中采用的例子通常依托于一些专门的技术,但是讨论范围远超某个引擎或API。另外,书中提供的参考文献及引用也非常有价值,可让读者继续深入游戏开发的任何特定方向。本书为大学程度的游戏编程课程而编写,但也适合软件工程师、游戏开发业余爱好者,以及游戏产业的从业人员阅读。通过阅读本书,资历较浅的游戏工程师可以巩固他们所学的游戏技术及引擎架构的知识,专注某一领域的程序员也能从本书全面的介绍中获益。《游戏引擎架构》(第2版)不仅可作为知识扫盲的工具,以及延伸学习的跳板,更能让读者扎实地理解游戏引擎中每个工程范畴中的理论与典型实践。本书将助你走过游戏引擎架构那迷人、全方位的难忘之旅。本书讲解商业游戏引擎中各个子系统的理论基础,并论述了实现这些子系统通常所需的数据结构、算法及软件接口。本书聚焦在引擎本身,其中包括底层基础系统、渲染引擎、碰撞系统、物理模拟、角色动画及音频。而在“游戏性基础层”中深入探讨游戏对象模型、世界编辑器、事件系统与脚本系统。书中还涉及一些游戏编程方面的技术,如玩家机制、摄像头和人工智能。《游戏引擎架构》广受欢迎,成为游戏引擎软件开发理论和实践的完整指南。第2版按当今游戏引擎架构发展趋势更新大量内容,进一步完善对典型游戏引擎各主要模块的讲解,重点新内容包括:?更新了各个主题的信息,包括C++编程语言的*新版本C++11、第8代游戏机Xbox One 和PlayStation 4。?新增了音频技术章节,包含AAA游戏音频引擎所涉及的物理、数学和技术等方面的知识。?更新了多核编程、流水线CPU架构、优化、国际化、赝矢量、格拉斯曼代数、对偶四元数、SIMD矢量数学、内存对齐及抗锯齿等章节。

作者简介

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年加入腾讯互动娱乐引擎技术中心担任专家工程师,所研发的技术已用于《斗战神》、《天涯明月刀》、《众神争霸》等项目中。


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

√ 引擎为游戏科技之大成,而通用游戏引擎经常无法通用,需要因项目而改造、整合、扩展及优化,因此必须理解其架构、机制和技术 ,才能分析及解决游戏制作中的问题(本书译者在腾讯游戏即担此重任)。

√ 站在*界级专家的肩上,广泛了解、宏观对比(艺电、顽皮狗)*界游戏名作优选方案与实际采用技术、工具,覆盖手游、端游通用的游戏性系统、场景管理、人工智能、物理模拟、前台技术等知识。

√ 涵盖游戏开发技术方方面面:足够细节以使初学者极易理解;巧妙平衡广度与深度以帮助经验丰富的游戏程序员。架构部分细致描述每个子系统的需求、相关技术及与其他子系统的关系。

√ 游戏音频技术内容首度在书中出现,填补领域空白——大篇幅整章讲述开发AAA游戏音频引擎的物理、数学及技术首度曝光;动画系统 、运行时游戏性基础系统部分依旧出彩。


《游戏引擎架构》广受欢迎,成为游戏引擎软件开发理论和实践的完整指南。第2版按当今游戏引擎架构发展趋势更新大量内容,进一步完善对典型游戏引擎各主要模块的讲解,重点新内容包括:

?更新了各个主题的信息,包括C++编程语言的*新版本C++11、第8代游戏机Xbox One 和PlayStation 4。

?新增了音频技术章节,包含AAA游戏音频引擎所涉及的物理、数学和技术等方面的知识。

?更新了多核编程、流水线CPU架构、优化、国际化、赝矢量、格拉斯曼代数、对偶四元数、SIMD矢量数学、内存对齐及抗锯齿等章节。

?深入介绍了顽皮狗*新热作《*后生还者》的制作过程。


本书讲解商业游戏引擎中各个子系统的理论基础,并论述了实现这些子系统通常所需的数据结构、算法及软件接口。本书聚焦在引擎本身,其中包括底层基础系统、渲染引擎、碰撞系统、物理模拟、角色动画及音频。而在“游戏性基础层”中深入探讨游戏对象模型、*界编辑器、事件系统与脚本系统。书中还涉及一些游戏编程方面的技术,如玩家机制、摄像头和人工智能。


《游戏引擎架构》(第2版)不仅可作为知识扫盲的工具,以及延伸学习的跳板,更能让读者扎实地理解游戏引擎中每个工程范畴中的理论与典型实践。本书将助你走过游戏引擎架构那迷人、全方位的难忘之旅。


前言

推荐序 1

最初拿到 Game Engine Architecture 一书的英文版 , 是电子工业出版社博文视点公司的编辑侠少邮寄给我的打印版。他建议我接下翻译此书的重任。当时我正在杭州带领一个团队开发 3D 游戏引擎 , 我和我的同事都对这本书的内容颇有兴趣 , 两大本打印的英文书稿立刻在同事间传开。可惜那段时间个人精力实在有限 , 精读近千页的英文读物后再将其翻译成中文对个人的业余时间来说是一个极大的挑战 , 不能担此翻译任务颇为遗憾。

不久以后听说 Milo Yip ( 叶劲峰 ) 已开始着手翻译 , 甚为欣喜。翻译此巨著 , 他一定是比我更合适的人选。我和 Milo 虽未曾谋面 , 但神交已久 , 在网络上读过一些他的成长经历 , 和我颇为相似 , 心有戚戚。他对游戏 3D 实时渲染技术研究精深为我所不及 , 我们曾通过 Google Talk 讨论过许多技术问题 , 他都有独到的见解。 Milo 是香港人 , 英文技术术语在香港的中文译法和内地有许多不同 , 但此书由内地出版社出版 , 考虑到面对的读者主要是内地程序员 , Milo 希望能更符合内地程序员的用词习惯 , 所以在翻译开始时就通过 Google Docs 创建了协作页面 , 邀请大家共同探讨书中技术术语的中文译法。从中我们可以一窥他作为译者的慎重。

三年之后 , 有幸在出版之前就拿到了完整的译本。这是一本用 LATEX 精心排版的 1000 多页的电子书 , 我只花了一周时间 , 几乎是一口气读完。流畅的阅读享受 , 绝对不仅仅是因为原著精彩的内容 , 精美的版面和翔实的译注也加分不少。

在阅读本书的过程中 , 我不止一次地与作者产生共鸣。例如在第 5 章的内存管理系统的介绍中 , 作者介绍的几种游戏特有的内存管理方法我都曾在项目中用过 , 而这是第一次有书籍专门将这些方法详尽地记录下来 ; 又如第 11 章动画系统的介绍 , 我同样也有在 3D 引擎开发过程中改进原有动画片段混合方法的经历。虽然书中介绍的每个技术点都可能在某篇论文、某本书的某个章节、某篇网络博客上见过 , 但之前却无一本书可以把这些内容放在一起相互参

照。对于从事游戏引擎开发的程序员来说 , 了解各种引擎在处理每个具体问题时的方案是相当重要的。而每种方案又各有利弊 , 即使不做引擎开发工作而是在某一特定游戏引擎上做游戏开发 , 也可以从中理解引擎的局限性以及可能的改进方法。尤其是第 14 章介绍的对游戏性相关系统的设计 , 每个开发人员几乎都是凭经验设计 , 很少有书籍对这些知识点进行总结。对于基于渲染引擎做开发的游戏程序员 , 这是必须面对的工作 , 这一章有很大的借鉴意义。

本书作者是业内资深的游戏引擎开发者 , 他所参与研发的《神秘海域》和《最后生还者》游戏都是我个人的最爱。在玩游戏的过程中 , 出于游戏程序员的天性 , 自然会不断地猜想各个技术点是如何实现的 , 背后需要怎样的工具支持。这些能在书中一一得到印证是一件让人特别开心的事情。另外 , 作者反复强调代码实践的重要性 , 在书中遍布着 C++ 代码。我不认为这些代码有直接取来使用的价值 , 但它们极大地帮助了读者理解书中的技术点。书中列出的顽皮狗工作室用 lisp 方言编写游戏配置脚本的范例也给了我很大的启发 , 有了这些具体的代码示例以及作者本身一线工程师的背景 , 让我确信书中那些与主机游戏开发相关等我所没有接触过的内容都绝非泛泛之谈。

国内游戏开发社区的壮大 , 主要随最近十年的 MMO 风潮而生。而就在大型网络游戏于国内有些偏离电子游戏的游戏性趋势时 , 我们有幸迎来了为移动设备开发游戏的大潮。游戏开发的重心重新回到游戏性本身。我们更需要借鉴单机游戏是如何为玩家带来更纯粹的游戏体验的 , 我相信书中记录的各种技术点会变得对广大读者更有帮助。

云风 (@ 简悦云风 )


推荐序 2

在我认识的许多游戏业开发同仁中 , 只有少数香港同胞 , Milo Yip ( 叶劲峰 ) 却正是这样一位让我印象非常深刻的、优秀的香港游戏开发者。我俩认识是在 Milo 加入腾讯互动娱乐研发部引擎技术中心后 , 至今也只是两年多的时间。其间 , 他谦逊务实的为人 , 对待技术问题的严谨求真态度 , 对算法设计和性能优化的娴熟技术 , 都为人所称道。 Milo 一丝不苟的工作风格 , 甚至表现在对待技术文档排版这类事情上 (Milo 常执着地用 LATEX 将技术文档排版到完美 ), 我想这一定是他在香港读大学、硕士及在香港理工大学的多媒体创新中心从事研究员 , 一贯沿袭至今的好作风。

我很高兴腾讯游戏有实力吸引到这样优秀的技术专家 , 即使 Milo 已从上海迁回香港家中 ,依然选择到深圳腾讯互动娱乐总部工作。从此 , Milo 工作日每天早晚过关 , 来往香港和深圳两地 , 虽有舟车劳顿 , 但是兼顾了对家庭的照顾和在游戏引擎方面的专业研究 , 希望这样的状况是令他满意的。

认识 Milo 时 , 我便知道他在进行 Jason Gregory 所著的 Game Engine Architecture 一书的翻译工作。因为自己从前也有业余翻译游戏开发相关书籍的经历 , 所以我能理解其中的辛苦和责任重大 , 对 Milo 也更多了一分钦佩。我以为 , 本书以及本书的中文读者最大的幸运便是 , 遇到 Milo 这位对游戏有着如同对家对国般强烈责任感 , 犹如“游戏科学工作者”般的专业译者 !

现在 (2013 年年末 ) 无疑是游戏史上对独立游戏制作者最友好的年代 , 开发设备方便获得 ( 相对过去仅由主机厂商授权才能获得专利开发设备 , 现在有一台智能手机和一台个人电脑就可以开发游戏 ) 、技术工具友好、调试过程简单方便 , 且互联网上有丰富的教程和开源代码可供参考 , 还有网上社区便于交流。很多游戏爱好者能够很快地制作出可运行的游戏原型 , 其中一些还能发布到应用商店。

但是不全面掌握各方面知识 , 尤其是游戏引擎架构知识 , 往往只能停留在勉强修改、凑合重用别人提供的资源的应用程度上 , 难以做到极限的性能改进 , 更妄谈革命式的架构创新。这样的程度是很难从成千上万的游戏中脱颖而出的。我们所认可的真正的游戏大作必定是在某方面大幅超越用户期待的产品。为了打造这样的产品 , 游戏内容创作者 ( 策划、美工等 ) 需要“戴着镣铐跳舞” ( 在当前的条件下争取更多的创作自由度 ), 而引擎架构合理的游戏可以经得

起 —— 也值得进行 —— 反复优化 , 最终可以提供更多的自由度 , 这是大作出现的技术前提。

书的作者、译者、出版社的编辑 , 加上读者 , 大家是因书而结缘的有缘人。因 Milo 这本《游戏引擎架构》译著而在线上线下相识的读者们 , 你们是不是因“了解游戏引擎架构 , 从而制作 / 优化好游戏”这样的理想而结了缘呢 ?

亲爱的读者 , 愿你的游戏作品有一天因谜题巧妙绝伦、趣味超凡、虚拟世界气势磅礴、视觉效果逼真精美等专业因素取得业界褒奖 , 并得到玩家真诚的赞美。希望届时曾读过 Milo 这本《游戏引擎架构》译著的你 , 也可以回馈社会 , 回馈游戏开发的学习社区 , 帮助新人。希望你也可以建立微信公众号、博客等 , 或翻译游戏开发书籍 , 造福外语不好的读者 , 所以如果你的外语 ( 英语、日语、韩语对于游戏行业来说比较重要 ) 水平仍须精进 , 现在也可以同步加油了 !

沙鹰 ([email protected])


第 1 版前言

欢迎来到《游戏引擎架构》的世界。本书旨在全面探讨典型商业游戏引擎的主要组件。游戏编程是一个庞大的主题 , 有许多内容需要讨论。不过相信你会发现 , 我们讨论的深度将足以使你充分理解本书所涵盖的工程理论及常用实践的方方面面。话虽如此 , 令人着迷的漫长游戏编程之旅其实才刚刚启程。与此相关的每项技术都包含丰富内容 , 本书将为你打下基础 , 并引领你进入更广阔的学习空间。

本书的焦点在于游戏引擎的技术及架构。我们会探讨商业游戏引擎中各个子系统的相关理论 , 以及实现这些理论所需要的典型数据结构、算法和软件接口。游戏引擎与游戏的界限颇为模糊。我们将把注意力集中在引擎本身 , 包括多个低阶基础系统 (low-level foundation sys-tem) 、渲染引擎 (rendering engine) 、碰撞系统 (collision system) 、物理模拟 (physics simulation) 、人物动画 (character animation), 以及一个我称之为游戏性基础层 (gameplay foundation layer)的深入讨论。此层包括游戏对象模型 (game object model) 、世界编辑器 (world editor) 、事件系统 (event system) 及脚本系统 (scripting system) 。我们也将会接触游戏性编程 (gameplay programming) 的多个方面 , 包括玩家机制 (player mechanics) 、摄像机 (camera) 及人工智能 (artificial intelligence, AI) 。然而 , 这类讨论会被限制在游戏性系统和引擎接口范围内。

本书可以作为大学中级游戏程序设计中两到三门课程的教材。当然 , 本书也适合软件工程师、业余爱好者 , 以及游戏行业的从业人员阅读。通过阅读本书 , 资历较浅的游戏程序员可以巩固他们所学的游戏数学、引擎架构及游戏科技方面的知识 , 专注某一领域的资深程序员也能从本书更为全面的介绍中获益。

为了更好地学习本书的内容 , 你需要掌握基本的面向对象编程概念并至少拥有一些 C++编程经验。尽管游戏行业已经开始尝试使用一些新的、令人兴奋的编程语言 , 然而工业级的 3D 游戏引擎


目录

第 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 其他工具


游戏引擎架构(第2版)的书评

这两年,我阅读了大量关于游戏开发相关的博客,文章及书籍,从理论到实践;也不断通过各种互联网工具查阅实际开发中的一些技术细节和思路;经常与同行进行不同程度的交流和探讨。我体会到,对于某个领域,最重要的是要理解该领域的系统性的知识和原理,要明白它用来解决什么问...

2014-06-19 18:17:52

游戏引擎方面的书籍历来都埋没在大堆的书中,不为人重视。 大家长期来重点关注的,都是渲染领域。 近年来这些现象有所改善,Game Programming Gems作为综合的Gems类书籍,有不少篇幅涉及了这一领域,近年来更有Engine Gems系列的书涉及这一领域。 然而Gems类的书籍,毕竟没...

2014-03-12 11:18:28

非常好的一本书,以前接触过英文版。当时自己的英文水平还不是很好,读起来有点吃力,当时就期待能有中文版,这次见到中文版面世,顿感相见恨晚。 通过译者 叶劲峰 的微博知道这本书的出版,而知道他的微博还是靠他在博客园的博客(http://www.cnblogs.com/miloyip)。 一本...

2014-01-30 23:23:19

因为前几年工作当中接触过一些计算机图形方面的基础内容,所以平时闲暇之余对于游戏开发也就有些好奇。年前听说Milo Yip翻译的新书《游戏引擎架构》要上市了,所以就有心想买来一读,满足一下好奇心。除此之外,出于敬仰译者在对待技术方面的严谨态度,除了拜读以外,也希望能...

2014-02-27 05:09:34

这是我读过翻译水平最高的著作,没有之一。说句实在话这书要是给某个高校老师拉几个研究生几个月就能翻完,但以译者如此深厚的功底,却译了足足三年半!可见他对待这件事有多么认真! 但我常想,Milo Yip能有这么高的水平,也许正是因为他的严谨和认真吧。作为计算机和软件专...

2014-02-28 15:57:46

很实用的一本书,我觉得作者真的很有分享的精神,应该是讲游戏引擎最好的一本书了。老外也很喜欢投人所好,很多书书皮弄得漂漂亮亮的,实际没什么内容,这本书真的不一样,实实在在都是干货,很多内容得看好几遍。

2014-02-25 22:09:39

这本书算是游戏引擎方面最好的一本书了.非常清楚和详细讲解了游戏引擎的架构,而且包含大量丰富的细节.仔细读的话很有收获. 亮点: 1.讲解现代游戏引擎架构,非常新的实例.包括作者自己公司的引擎和商业引擎例如Unreal的实例. 2.清楚的讲解实现细节.代码少而思想多.往往一段话就...

2010-01-18 01:53:46

和那些吧绝大部分篇幅放到如何实现一个渲染器的书不一样,这本书是真正从构架的高度来俯瞰整个现代游戏引擎的全景的。目前为止只此一本,下这个血本买了原版也值了。

2010-06-04 01:40:00

首先肯定下翻译,不往大了说,仅在游戏编程领域绝对是翻译的最好的一本。 但是很遗憾本书对于我这种有经验的开发人员来说水分多了点。太多的篇幅去讲语言和数学基础,太多的过时的优化技术。实际上这个世代的机器已经不用太注意CPU和内存方面的优化。开发人员应该更多的关注怎...

2016-06-23 23:51:25

是冲着翻译及推荐买的,但看完之后有点失望。 这本书的翻译是毋庸置疑的——认真负责,这个无需多说,下面针对的是本书的内容。 对我而言,这本书比较有价值的部分只有第一章,其余章节都很一般了,偶尔有一些有价值的东西,但改变不了我对整本书的评价。 第一章是游戏的...

2014-03-25 10:23:52

标签
游戏