【原创翻译】Game Engine Architecture(游戏引擎架构)序和鸣谢

来源:互联网 发布:mac支持flash的浏览器 编辑:程序博客网 时间:2024/05/29 18:36



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 http://gameenginebook.com.


游戏技术永远在变化更新,因此我们不可能将在本书讨论所有的技术。此外,额外的资源、勘误表、更新、示例代码和项目创意会时常在如下网站显示:http://gameenginebook.com.


鸣谢


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月
0 0
原创粉丝点击