鱼C论坛

 找回密码
 立即注册
查看: 9703|回复: 10

[技术交流] 【原创翻译】【连载】Game Engine Architecture(游戏引擎架构)更新至第4篇

[复制链接]
发表于 2014-8-17 10:11:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 梦幻小子 于 2014-8-17 16:25 编辑

本书简介:Game Engine Architecture游戏引擎架构》同时涵盖游戏引擎软件开发的理论及实践,并对多方面的题目进行探讨。本书讨论到的概念及技巧实际应用于现实中的游戏工作室,如艺电及顽皮狗。虽然书中采用的例子通常依据一些专门的技术,但是讨论范围远超于某个引擎或API。文中的参考及引用也非常有用,可让读者继续深入游戏开发过程的任何特定方向。

说明:因本书编程部分是由C++实现的,所以将本翻译连载发到本板块,而且楼主也特别喜欢这个板块,请版主不要转移到别的板块~谢谢。因为文字太多,不可能都发在同一楼,而要每出新的一篇发另外一楼,所以大家也可以点击上方的“只看该作者”方便阅读。(PS:楼主不是外语专业的,仅作个人学习记录,翻译得不好请轻拍)

下面,我们首先来欣赏几张本书的精彩图片,引起童鞋们对本书的兴趣:

                               
登录/注册后可看大图



                               
登录/注册后可看大图



                               
登录/注册后可看大图



                               
登录/注册后可看大图



目录:
前言 【已完成】
序言 【已完成】
致谢 【已完成】
第一部分 基础
第1章 导论【已完成】
1.1 典型游戏团队的结构
1.2 游戏是什么
1.3 游戏引擎是什么
1.4 不同游戏类型中的引擎差异
1.5 游戏引擎概观
1.6 运行时引擎架构
1.7 工具及资产管道
第2章 专业工具
2.1 版本控制
2.2 微软Visual Studio
2.3 剖析工具
2.4 内存泄漏和损坏检测
2.5 其他工具
第3章 游戏软件工程基础
3.1 重温C++及最佳实践
3.2 C/C++的数据、代码及内存
3.3 捕捉及处理错误
第4章 游戏所需的三维数学
4.1 在二维中解决三维问题
4.2 点和矢量
4.3 矩阵
4.4 四元数
4.5 比较各种旋转表达方式
4.6 其他数学对象
4.7 硬件加速的SIMD运算
4.8 产生随机数
第二部分 低阶引擎系统
第5章 游戏支持系统
5.1 子系统的启动和终止
5.2 内存管理
5.3 容器
5.4 字符串
5.5 引擎配置
第6章 资源及文件系统
6.1 文件系统
6.2 资源管理器
第7章 游戏循环及实时模拟
7.1 渲染循环
7.2 游戏循环
7.3 游戏循环的架构风格
7.4 抽象时间线
7.5 测量及处理时间
7.6 多处理器的游戏循环
7.7 网络多人游戏循环
第8章 人体学接口设备(HID)
8.1 各种人体学接口设备
8.2 人体学接口设备的接口技术
8.3 输入类型
8.4 输出类型
8.5 游戏引擎的人体学接口设备系统
8.6 人体学接口设备使用实践
第9章 调试及开发工具
9.1 日志及跟踪
9.2 调试用的绘图功能
9.3 游戏内置菜单
9.4 游戏内置主控台
9.5 调试用摄像机和游戏暂停
9.6 作弊
9.7 屏幕截图及录像
9.8 游戏内置性能剖析
9.9 游戏内置的内存统计和泄漏检测
第三部分 图形及动画
第10章 渲染引擎
10.1 采用深度缓冲的三角形光栅化基础
10.2 渲染管道
10.3 高级光照及全局光照
10.4 视觉效果和覆盖层
10.5 延伸阅读
第11章 动画系统
11.1 角色动画的类型
11.2 骨骼
11.3 姿势
11.4 动画片段
11.5 蒙皮及生成矩阵调色板
11.6 动画混合
11.7 后期处理
11.8 压缩技术
11.9 动画系统架构
11.10 动画管道
11.11 动作状态机
11.12 动画控制器
第12章 碰撞及刚体动力学
12.1 你想在游戏中加入物理吗
12.2 碰撞/物理中间件
12.3 碰撞检测系统
12.4 刚体动力学
12.5 整合物理引擎至游戏
12.6 展望:高级物理功能
第四部分 游戏性
第13章 游戏性系统简介
13.1 剖析游戏世界
13.2 实现动态元素:游戏对象
13.3 数据驱动游戏引擎
13.4 游戏世界编辑器
第14章 运行时游戏性基础系统
14.1 游戏性基础系统的组件
14.2 各种运行时对象模型架构
14.3 世界组块的数据格式
14.4 游戏世界的加载和串流
14.5 对象引用与世界查询
14.6 实时更新游戏对象
14.7 事件与消息泵
14.8 脚本
14.9 高层次的游戏流程
第五部分 总结
第15章 还有更多内容吗
15.1 一些未谈及的引擎系统
15.2 游戏性系统
参考文献
中文索引
英文索引




前言          

        The very first video game was builtentirely out of hardware, but rapidadvancements in microprocessors havechanged all that. These days, video gamesare played on versatile PCs andspecialized video game consoles that use software to make it possible to offer a tremendous variety of gaming experiences.It’s been 50 years since thosefi rst primitive games, but the industry is stillconsidered by many to beimmature. It may be young, but when you take a closerlook, you will fi nd thatthings have been developing rapidly. Video games arenow a multibillion-dollarindustry covering a wide range of demographics.

    世界上第一个电子游戏是完全建立在硬件上的,但是微处理器的快速发展改变了这一切。现在,电子游戏在通用型的个人电脑和专用的电子游戏机上发展,我们用软件来为玩家提供各种各样丰富的游戏体验。自第一个电子游戏面世以来已经有50年,但这个游戏产业仍然被许多人认为是不成熟的。也许这个产业发展历史很短,但仔细看你会发现电子游戏正发展非常迅速。现在电子游戏产业达数万亿美元,并且覆盖人口广泛。

        Video games come in all shapes andsizes, falling into categories or “genres”covering everything from solitaireto massively multiplayer online role-playinggames, and these games are playedon virtually anything with a microchip in it.These days, you can get games foryour PC, your cell phone, as well as a numberof diff erent specialized gamingconsoles—both handheld and those that connectto your home TV. Thesespecialized home consoles tend to represent the cutt ingedge of gamingtechnology, and the patt ern of these platforms being released incycles hascome to be called console “generations.” The powerhouses of thislatestgeneration are Microsoft ’s Xbox 360 and Sony’s PLAYSTATION 3, buttheever-present PC should never be overlooked, and the extremely popularNintendoWii represents something new this time around.

    现在,电子游戏有各种各样的外观和大小,它的分类覆盖范围从单人卡牌到大型多人在线角色扮演游戏,这些形形色色的游戏几乎出现在所有微芯片上。现在,你可以用你的个人电脑、手机像专用的电子游戏机一样玩游戏,也可以使用手柄和连接到你的家庭电视机。这些专业家用游戏机往往代表了游戏技术的最前沿,而这些发布平台发布周期被称为一代。最新一代的游戏机包括微软的Xbox和索尼的PlauStation3,但始终存在的个人电脑也不应被忽视,还有极受欢迎的任天堂Wii这一次也代表了一些新的东西。

        The recent explosion of downloadableand casual games has added even morecomplexity to the diverse world ofcommercial video games. Even so,big games arestill big business. Theincredible computing power available on today’scomplicated platforms has maderoom for increased complexity in the soft ware.Naturally, all this advancedsoft ware has to be created by someone, and thathas driven up the size of developmentteams—not to mention development costs. Asthe industry matures, we’re alwayslooking for bett er, more efficient ways tobuild our products, and developmentteams have begun compensating for theincreased complexity by taking advantageof things like reusable soft ware andmiddleware.

        近年来的可下载的休闲游戏的爆发使多样化的商业电子游戏的复杂性增加。即便如此,大型游戏仍然是充满商机。如今难以置信的计算机运算能力在复杂的平台上增加了软件的复杂性。当然,这些所有的先进软件都是人创造出来的,而且增加了开发团队的规模——更不用说开发成本。随着产业的成熟,我们总是在寻找更好的、更有效的方法来建立我们的产品,开发团队已经通过可重用的软件和中间件,开始补偿开发的复杂性。

        With so many diff erent styles of gameon such a wide array of platforms, therecannot be any single ideal soft waresolution. However, certain patterns havedeveloped, and there is a vast menu ofpotential solutions out there. Theproblem today is choosing the right solutionto fit the needs of the particularproject. Going deeper, a development teammust consider all the differentaspects of a project and how they fit together.It is rare to fi nd any one software package that perfectly suits every aspectof a new game design.

        有这么多不同的游戏风格在一个广泛的平台,因此不能使用任何单一的软件解决方案。然而,某些模式已经成熟,并且在那里有一个潜藏的巨大的解决方案菜单。现在的问题是要选择合适的解决方案来适应特定项目的需求。再深入一点,开发团队必须考虑所有不同方面的项目以适应特定项目的需求和如何将它们配合在一起。很难找到任何一个软件包可以完美适应新游戏设计的每一个方面。

        Those of us who are now veterans of theindustry found ourselves pioneeringunknown territory. Few programmers of ourgeneration have Computer Sciencedegrees (Matt ’s is in AeronauticalEngineering, and Jason’s is in SystemsDesign Engineering), but these days manycolleges are starting to programs anddegrees in video games. The students anddevelopers of today need a good placeto turn to for solid game-developmentinformation. For pure high-end graphics,there are a lot of sources of verygood information from research to practicaljewels of knowledge. However, thesesources are oft en not directly applicableto production game environments orsuffer from not having actualproduction-quality implementations. For the restof game development, there areso-called beginner books that so gloss over thedetails and act as if theyinvented everything without giving references thatthey are just not useful oroften even accurate. Then there are high-endspecialty books for various nicheslike physics, collision, AI, etc. But thesecan be needlessly obtuse or too highlevel to be understood by all, or thepiecemeal approach just doesn’t all fittogether. Many are even so directlytied to a particular piece of technology asto become rapidly dated as thehardware and soft ware change.

        现在我们有一些行业资深人士发现我们正在开拓未知的领域。一些新一代的程序员拥有计算机科学学位(Matt在航空工程方面和Jason在系统设计工程方面),而今天许多高校开设电子游戏编程学位。现在这些学生和发展商为了坚固游戏发展信息,需要一个好的平台来转变。纯粹的高端图形,这里有很多研究到实际的宝贵信息来源。然而,这些来源往往不能直接应用于开发游戏环境或者没有实际生产质量的实现。至于其他部分的游戏发展,有些所谓初学者的书籍掩盖了细节,也没有任何参考文献。还有一些涉及物理学领域、碰撞或AI智能高端等等的专业书,它们太笨拙或太高层次以至于我们难以完全理解,或者这些零碎的方法不能配合在一起。许多人即使如此直接连接到一个特定的技术至于随着硬件和软件的变化迅速而被淘汰。

        Then there is the Internet, which is anexcellent supplementary tool for knowledge gathering.However, broken links,widely inaccurate data, and variable-to-poor qualityoften make it not useful atall unless you know exactly what you are after.

        然后就是互联网,这是一个很好的知识采集工具。然而,断开的链接、广泛的错误数据、低质量经常让它变得没有用处,除非你知道是什么以后。

        Enter Jason Gregory, himself anindustry veteran with experience at Naughty Dog—oneof the most highly regardedvideo game studios in theworld. While teaching acourse in game programming atUSC, Jason found himself facing a shortage oftextbooks covering thefundamentals of videogame architecture. Luckily for therest of us, he hastaken it upon himself to fill that gap.

        Jason Gregory,是一位在顽皮狗工作室(世界著名的游戏工作室)的拥有丰富经验的业内资深人士。当他在南加州大学教游戏编程的时候,Jason发现自己缺少游戏架构基本原理的教科书。幸运的是,他已经亲自填补了这个缺口。

        What Jason has done is pull togetherproduction-quality knowledge actually usedin shipped game projects and bringtogether the entire game-development picture.His experience has allowed him tobring together not only the ideas andtechniques but also actual code samplesand implementation examples to show youhow the pieces come together toactually make a game. The references andcitations make it a great jumping-offpoint to dig deeper into any particularaspect of the process. The concepts andtechniques are the actual ones we use tocreate games, and while the examplesare often grounded in a technology, theyextend way beyond any particularengine or API.

        Jason实际做的是把游戏项目中实际使用的产品质量的知识和汇集整个游戏发展图片。他的经验使他不仅汇集思想和技术,而且还有实际的代码实例说明如何制作一个游戏。参考和引用使他成为一个伟大的起点,深入挖掘过程中的任何特定的方面。概念和技术是我们用来的开发游戏的,实际的例子往往建立于一种技术之上,它们将扩展超越任何特定的引擎或API的方式。

        This is the kind of book we wanted whenwe were getting started, and we think itwill prove very instructive to peoplejust starting out as well as those withexperience who would like some exposureto the larger context.

        这是一本我们希望获得起步的书,我们认为它对初学者和有经验的人都具有一定指导意义。


评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +3 收起 理由
Angel丶L + 5 + 5 + 3 热爱鱼C^_^

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-17 10:12:21 | 显示全部楼层
本帖最后由 梦幻小子 于 2014-8-17 16:23 编辑


        Welcome to Game Engine Architecture. This book aims to present a complete discussion of the major components that make up a typical commercial game engine. Game programming is an immense topic, so we have a lot of ground to cover. Nevertheless, I trust you’ll find that the depth of our discussions is sufficient to give you a solid understanding of both the theory and the common practices employed within each of the engineering disciplines we’ll cover. That said, this book is really just the beginning of a fascinating and potentially life-long journey. A wealth of information is available on all aspects of game technology, and this text serves both as a foundation laying device and as a jumping-off point for further learning.


        
欢迎阅读《游戏引擎架构》这本书。本书的目的是呈现关于构成一个典型的商业游戏引擎的完整讨论。游戏编程是一个庞杂的话题,我们有很多的知识面需要覆盖。不过,我相信无论在工程学科上的理论还是实践,你会发现我们讨论的深度足以给你一个坚实的理解。可以说,这本书真的是一场令人着迷、未知人生旅途的开始。丰富的信息对游戏技术的方方面面是很有帮助的,本文作为一个基础铺垫,以便读者的进一步学习。



        
Our focus in this book will be on game engine technologies and architecture. This means we’ll cover both the theory underlying the various subsystems that comprise a commercial game engine and also the data structures, algorithms, and soft ware interfaces that are typically used to implement them. The line between the game engine and the game is rather blurry. We’ll focus primarily on the engine itself, including a host of low-level foundation systems, the rendering engine, the collision system, the physics simulation, character animation, and an in-depth discussion of what I call the game play foundation layer. This layer includes the game’s object model, world editor, event system, and scripting system. We’ll also touch on some aspects of game play programming, including player mechanics, cameras, and AI. However, by necessity, the scope of these discussions will be limited mainly to the ways in which game play systems interface with the engine.


        
我们在这本书的焦点集中在游戏引擎技术和架构。这意味着我们将覆盖以多方面的子系统为基础的理论基础,这包括商业游戏引擎、数据结构、算法和软件的接口,以及它们的典型实现。我们首先把焦点放在引擎本身,包括许多低级别的基础系统、渲染引擎、碰撞检测系统、物理模拟和角色动画,并深入讨论我所说的游戏基础层。该层包括了游戏的物体模型、世界编辑器、事件系统和脚本系统。我们也会涉及游戏编程的一些方面,包括播放器力学、摄像机和AI人工智能。然而,必不可少的是,这些讨论的范围将被局限于在游戏系统的接口和游戏引擎的方法。


        
This book is intended to be used as a course text for a two- or three-course college-level series in intermediate game programming. Of course, it can also be used by amateur soft ware engineers, hobbyists, self-taught game programmers, and existing members of the game industry alike. Junior engineers can use this text to solidify their understanding of game mathematics, engine architecture, and game technology. And some senior engineers who have devoted their careers to one particular specialty may benefit from the bigger picture presented in these pages, as well.


        
本书是作为二、三级的大学课程的教材,以过渡游戏编程。当然,它对于业余的软件工程师、爱好者,或自学成才的游戏程序员,和游戏行业人员同样受益匪浅。年轻的工程师可以使用该书来巩固他们对游戏数学、游戏引擎和游戏技术的了解。还有一些在致力于自己的特定专业的职业生涯的高级工程师可能也会从本书出现的更广阔的图景中获益。


        
To get the most out of this book, you should have a working knowledge of basic object-oriented programming concepts and at least some experience programming in C++. Although a host of new and exciting languages are beginning to take hold within the game industry, industrial-strength 3D game engines are still written primarily in C or C++, and any serious game programmer needs to know C++. We’ll review the basic tenets of object-oriented programming in Chapter 3, and you will no doubt pick up a few new C++ tricks as you read this book, but a solid foundation in the C++ language is best obtained from [39], [31], and [32]. If your C++ is a bit rusty, I recommend you refer to these or similar books to refresh your knowledge as you read this text. If you have no prior C++ experience, you may want to consider reading at least the first few chapters of [39], or working through a few C++ tutorials online, before diving into this book.


        
为了你尽可能从本书收益,你应该有一些基本的面向对象概念的应用知识,和一些C++编程经历。虽然很多新奇有趣的计算机语言开始在游戏产业中扎根,但是商业用途的3D游戏引擎仍然是C或C++写的,并且任何严格的游戏程序员应该了解C++。我们将在第三章复习面向对象程序设计的基本原理,并且当你阅读这本书的时候,你也会获得一些新的C++编程技巧,但是最好拥有坚实的C++基础来阅读【39】、【31】和【32】。如果你的C++基础有点生疏,我建议你通过参考类似的这些书籍来更新你的的知识。如果你没有事先的C++编程经验,你可能要考虑阅读至少【39】的前几章,或者在看本书之前在网上学习一下C++课程。


        
The best way to learn computer programming of any kind is to actually write some code. As you read through this book, I strongly encourage you to select a few topic areas that are of particular interest to you and come up with some projects for yourself in those areas. For example, if you find character animation interesting, you could start by installing Ogre3D and exploring its skinned animation demo. Then you could try to implement some of the animation blending techniques described in this book, using Ogre. Next you might decide to implement a simple joy pad-controlled animated character that can run around on a flat plane. Once you have something relatively simple working, expand upon it! Then move on to another area of game technology. Rinse and repeat. It doesn’t particularly matter what the projects are, as long as you’re practicing the art of game programming, not just reading about it.


        
学习任何一种计算机编程,最好的学习方式就是写一些代码。当你阅读这本书的时候,我强烈你选择一些自己特别有兴趣的领域并且你想在这些领域中有一些自己的项目。例如,如果你发现有趣的角色动画,你可以先安装Ogre3D并探索其蒙皮动画演示。然后你可以尝试使用Ogre实施本书中所描述的一些动画融合技术。下一步你可能实现一个可以在平面上运动的简单的键盘控制动画人物。一旦你有了一些相对简单的工作,可以开始尝试拓展它。然后转移到游戏技术的另一些领域。你应该提升技巧并重复练习。你的项目是什么并不重要,重要的是练习游戏编程技巧,而不只是看书。


        
Game technology is a living, breathing thing that can never be entirely captured within the pages of a book. As such, additional resources, errata, updates, sample code, and project ideas will be posted from time to time on this book’s website at XXXXXXXXX.COM

        游戏技术永远在变化更新,因此我们不可能将在本书讨论所有的技术。此外,额外的资源、勘误表、更新、示例代码和项目创意会时常在如下网站显示:XXXXXXXXX.COM
【因本论坛禁止发外链,所以我没有把网站放出来,想知道该书的网站可以自己查阅原版英文书】
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 10:23:38 | 显示全部楼层
本帖最后由 梦幻小子 于 2014-8-17 16:22 编辑

鸣谢

       No book is created in a vacuum, and this one is certainly no exception. This book would not have been possible without the help of my family, friends, and colleagues in the game industry, and I’d like to extend warm thanks to everyone who helped me to bring this project to fruition.

       没有一本书是凭空创作出来的,这一本书也不例外。这本书没有朋友、家人、在游戏行业的同人帮助是不可能完成的,我想感谢每一个帮助我完成这本书的人。

        Of course, the ones most impacted by a project like this one are invariably the author’s family. So I’d like to start by offering a special thank-you to my wife Trina, who has been a pillar of strength during this difficult time, taking care of our two boys Evan (age 5) and Quinn (age 3) day after day (and night after night!) while I holed myself up to get yet another chapter under my belt, forgoing her own plans to accommodate my schedule, doing my chores as well as her own (more often than I’d like to admit), and always giving me kind words of encouragement when I needed them the most. I’d also like to thank my eldest son Evan for being patient as he endured the absence of his favorite video game playing partner, and his younger brother Quinn for always welcoming me home after a long day’s work with huge hugs and endless smiles.

        当然,最难得的总是作者的家庭。所以我首先想感谢我的妻子Trina总是在艰难的时刻提供帮助,我闭关创作的时候,她放弃自己的计划来适应我的日程安排(甚至付出更多的代价),含辛茹苦地照顾我们的两个孩子Evan(5岁)和Quinn(3岁),并经常在我需要最需要他们的时候给我鼓励。我还要感谢我的大儿子Evan,他耐心忍受了他最喜欢的电子游戏的伙伴缺失,还有他的弟弟Quinn在我工作了漫长的一天后给予我温暖的拥抱和微笑。

        I would also like to extend special thanks to my editors, Matt Whiting and Jeff Lander. Their insightful, targeted, and timely feedback was always right on the money, and their vast experience in the game industry has helped to give me confidence that the information presented in these pages is as accurate and up-to-date as humanly possible. Matt and Jeff were both a pleasure to work with, and I am honored to have had the opportunity to collaborate with such consummate professionals on this project. I’d like to thank Jeff in particular for putting me in touch with Alice Peters and helping me to get this project off the ground in the first place.

        我也要特别感谢我的编辑,Matt Whiting和Jeff Lander。他们富有洞察力和针对性,及时给我正确的反馈,并且他们在游戏行业的丰富经验有助于给我信心,使我相信本书的内容是尽可能准确和最新的。Matt和Jeff都工作得非常愉快,我们也很荣幸有机会在本项目中和如此精湛的专业人员合作。我想感谢Jeff帮助我和Alice Peter联系,从而让这个项目开始进行。

        A number of my colleagues at Naughty Dog also contributed to this book, either by providing feedback or by helping me with the structure and topic content of one of the chapters. I’d like to thank Marshall Robin and Carlos Gonzalez-Ochoa for their guidance and tutelage as I wrote the rendering chapter, and Pål-Kristian Engstad for his excellent and insightful feedback on the text and content of that chapter. I’d also like to thank Christian Gyrling for his feedback on various sections of the book, including the chapter on animation (which is one of his many specialties). My thanks also go to the entire Naughty Dog engineering team for creating all of the incredible game engine systems that I highlight in this book. Special thanks go to Keith Schaeffer of Electronic Arts for providing me with much of the raw content regarding the impact of physics on a game, found in Section 12.1. I’d also like to thank Paul Keet of Electronic Arts and Steve Ranck, the lead engineer on the Hydro Thunder project at Midway San Diego, for their mentorship and guidance over the years. While they did not contribute to the book directly, their influences are echoed on virtually every page in one way or another.

       我的一些在顽皮狗工作室的同事也促成了这本书的完成,无论是提供反馈或者帮助我完成本书的结构和章节的主题内容。我想感谢Marshall Robin和Carlos Gonzalez-Ochoa对我写渲染这一章时的指导,还有Pål-Kristian Engstad对本书提出卓越和独特的反馈。我还想感谢基督教徒Gyrling在不同章节的反馈,包括动画这一章(这是他读的许多专业中的其中一个),我还要感谢顽皮狗的工程团队创建的令人难以置信的游戏引擎系统,我在本书特别地展示出它们。特别感谢EA电艺公司的Keith Schaeffer提供的关于物理学对游戏影响的原始内容,我在12.1章节中有提到它们。我也想感谢EA电艺公司的Paul Keet和Steve Ranck(雷霆快艇的首席工程师)这几年的指导。虽然他们没有直接参与本书的完成,但是潜在地帮助到了本书的每一章节。

        This book arose out of the notes I developed for a course called ITP-485: Programming Game Engines, which I have been teaching under the auspices of the Information Technology Program at the University of Southern California for approximately three years now. I would like to thank Dr. Anthony Borquez, the director of the ITP department at the time, for hiring me to develop the ITP-485 course curriculum in the first place. I’d also like to extend warm thanks to Ashish Soni, the current ITP director, for his continued support and encouragement as ITP-485 continues to evolve.

        这本书起源于一个我命名为ITP-485的游戏编程引擎的课程项目,这是我在南加州大学的近3年的信息技术项目赞助的教学计划。我要感谢当时ITP部门主任的Anthony Borquez博士首先招用我去发展ITP-485课程。我也想感谢现在的ITP主任Ashish Soni的随ITP-485发展过程中的持续支持和鼓励。

        My extended family and friends also deserve thanks, in part for their unwavering encouragement, and in part for entertaining my wife and our two boys on so many occasions while I was working. I’d like to thank my sister- and brother-in-law, Tracy Lee and Doug Provins, my cousin-in-law Matt Glenn, and all of our incredible friends, including: Kim and Drew Clark, Sherilyn and Jim Kritzer, Anne and Michael Scherer, and Kim and Mike Warner. My father Kenneth Gregory wrote a book on investing in the stock market when I was a teenager, and in doing so he inspired me to write a book. For this and so much more, I am eternally grateful to him. I’d also like to thank my mother Erica Gregory, in part for her insistence that I embark on this project, and in part for spending countless hours with me when I was a child, beating the art of writing into my cranium—I owe my writing skills (not to mention my work ethic… and my rather twisted sense of humor…) entirely to her!

        我的大家庭和朋友也应该得到给感谢,因为他们坚定不移的鼓励,和在我工作的时候招待我的妻子和两个孩子。我也要感谢我的姐姐Tracy Lee和姐夫Doug Provins,我的堂姐Matt Glenn,和所有令人难以置信的朋友,他们包括:Kim,Drew,Sherilyn,Jim Kritzer,Anne,Michael Scherer, Kim 和Mike Warner。我的父亲Kenneth Gregory在我年少的时候写了一本证券市场投资的书,并且激发了我自己写一本书,我永远感激他。我也要感谢我的母亲Erica Gregory,一部分原因是她的坚持使我开始着手了这个项目,另一部分原因是在我孩童时代她为我倾注无数心血,培养了我的写作艺术和拥有了自己的写作技巧(更不用说职业道德和特殊的幽默感),这全要归功于我的母亲。

        Last but certainly not least, I’d like to thank Alice Peters and Kevin Jackson-Mead, as well as the entire AK Peters staff, for their Herculean efforts in publishing this book. Alice and Kevin have both been a pleasure to work with, and I truly appreciate both their willingness to bend over backwards to get this book out the door under very tight time constraints, and their infinite patience with me as a new author.

        最后要说的(但并非是不重要的),我要感谢Alice Peters和Kevin Jackson-Mead,以及整个出版社成员,他们为出版这本书所做的努力。Alice and Kevin都在愉快地工作,并且我很欣赏他们在愿意竭尽所能地在很短暂的时间内拼命完成这本书的出版,和给予了我这一个新作家的无限耐心。
Jason Gregory
2009年4月

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-17 10:24:54 | 显示全部楼层
目测会火。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 10:25:57 | 显示全部楼层

谢谢支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-17 14:32:27 | 显示全部楼层
提取密码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 16:15:27 | 显示全部楼层

已经取消帖子密码了,现在可以免费公开阅读了,谢谢支持
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-8-17 16:17:18 | 显示全部楼层
本帖最后由 梦幻小子 于 2014-8-17 16:21 编辑

第一章导论

  When I got my first game console in 1979—away-cool Intellivision system by Mattel—theterm “game engine” did not exist. Back then, video and arcade games wereconsidered by most adults to be nothing more than toys, and the soft ware that made them tick was highly specialized to both thegame in question and the hardware on which it ran. Today, games are amulti-billion-dollar mainstream industry rivaling Hollywood in size and popularity. And thesoft ware that drives these now-ubiquitous three-dimensional worlds—gameengines like id Soft ware’s Quake and Doom engines, Epic Games’ Unreal Engine 3 and Valve’s Source engine—havebecome fully featured reusable soft ware development kit s that can be licensedand used to build almost any game imaginable.

  我在1979年得到我的一部Mattel游戏机——一个很酷的游戏系统Intellivision,当时所谓的“游戏引擎”概念是不存在的。后来,电子游戏和街机游戏被大人们认为只不过是玩具,这使得软件和硬件都是为某个游戏专门定制的。今天游戏产业已达到几十亿美元总值,与好莱坞的规模和知名度可以相当。现时无处不在的三维游戏时间,都是由游戏引擎驱动发展,像id公司的雷神之锤和Doom游戏引擎,Epic Games的虚幻3游戏引擎还有和Valve的起源游戏引擎,已成为全功能可重用的软件开发包,在被授权后可以开发出几乎任何游戏。

  While game enginesvary widely in the details of their architecture and implementation,recognizable coarse-grained patterns are emerging across both publicly licensedgame engines and their proprietary in-house counterparts. Virtually all gameengines contain a familiar set of core components, including the renderingengine, the collision and physics engine, the animation system, the audiosystem, the game world object model, the artificial intelligence system, and soon. Within each of these components, a relatively small number of semi-standarddesign alternatives are also beginning to emerge.

  虽然不同的游戏引擎在体系结构和实现细节上有很大的区别,但无论是公开授权使用的游戏引擎还是私有的公司内部引擎,都呈现出一些粗粒度模式。几乎所有游戏引擎都包含了一些熟悉的核心组件,包括渲染引擎、碰撞和物理引擎、动画系统、音频系统、游戏世界中的对象模型、人工智能系统等等。在这些组件中的每一个,一个相对小型的半标准设计模式也开始出现。

  There are a great many books that coverindividual game engine subsystems, such as three-dimensional graphics, inexhaustive detail. Other books cobble together valuable tips and tricks acrossa wide variety of game technology areas. However, I have been unable to find abook that provides its reader with a reasonably complete picture of the entiregamut of components that make up a modern game engine. The goal of this book,then, is to take the reader on a guided hands-on tour of the vast and complexlandscape of game engine architecture.

  有相当多的书涵盖个人游戏引擎子系统,像三维图形,它们有详尽的细节。也有一些书籍把有价值的提示和技巧通过各种各样的游戏技术领域东拼西凑起来。然而我们一直无法找到一本书为作者提供一个关于现代游戏引擎的完整图景,本书的目的就是把作者引入亲身体验的庞大而复杂的游戏引擎图景。

  In this book you will learn
1 how real industrial-strength production gameengines are architected;
2 how game development teams are organized and workin the real
world;
3 which major subsystems and design patterns appearagain and again in
virtually every game engine;
4the typical requirements for each major subsystem;
5which subsystems are genre- or game-agnostic, andwhich ones are typically
designed explicitly for a specific genre or game;
6 where the engine normally ends and the gamebegins.

       在这本书中,你将学习到:
真正的工业级游戏引擎是如何被构建的;
真实世界中的开发团体是如何组织和工作的;
每一个主要子系统的真正需要;
哪些子系统是通用型的,哪些子系统是专门为特定的游戏种类设计的;
游戏引擎正常结束和游戏开始的位置;

  We’ll also get afirst-hand glimpse into the inner workings of some popular game engines, suchas Quake and Unreal, and some well-known middleware packages, such as the HavokPhysics library, the OGRE rendering engine, and Rad Game Tools’ Granny 3Danimation and geometry management toolkit.

  我们也会亲自窥探一些流行游戏引擎的内部运作,像雷神之锤和虚幻引擎,还有一些知名的中间件软件包,比如Havok物理引擎、OGRE的渲染引擎、和RAD公司的Granny三维动画工具和几何管理工具包。

  Before we get started, we’ll review sometechniques and tools for large scale software engineering in a game enginecontext, including
1the difference between logical and physical softwarearchitecture;
2configuration management, revision control, andbuild systems;
3some tips and tricks for dealing with one of thecommon development environments for C and C++, Microsoft Visual Studio.

       在我们开始之前,我们将回顾对于在游戏引擎方面的一些大型软件工程的技术和工具,包括:
逻辑和物理软件架构的区别;
配置管理、版本控制和建立系统;
一些关于搭建CC++共同开发环境的提示和技巧——微软的VisualStudio

  In this book I assume that you have a solidunderstanding of C++ (the language of choice among most modern game developers)and that you understand basic soft ware engineering principles. I also assumeyou have some exposure to linear algebra, three-dimensional vector and matrixmath, and trigonometry (although we’ll review the core concepts in Chapter 4).Ideally you should have some prior exposure to the basic concepts of real-timeand event-driven programming. But never fear—I will review these topicsbriefly, and I’ll also point you in the right direction if you feel you need tohone your skills further before we embark.

  在本书中,我假定你有一个对C++(大多数现代游戏开发商都会选择的语言)的坚实理解和你了解基本的软件工程原理。我也假定你有一些对线性代数的理解、三维矢量和矩阵数学,还有三角学(虽然我们会在4章中回顾这些核心概念)。理想情况下应该是你也应该有一些基本概念和事件驱动编程。但没有必要恐惧——如果在我们着手之前你觉得你需要进一步磨练你的技巧,我们将回顾这些主题,也会告诉你正确的方向。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-8-23 10:25:09 | 显示全部楼层
感谢楼主无私分享!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-3-2 14:25:06 | 显示全部楼层
这本书有中文版的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-5-12 22:39:11 | 显示全部楼层
谢谢分享!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 23:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表