我的github

推荐序1

最初拿到《GameEngineArchitecture》一书的英文版,是编辑侠少邮寄给我的打印版。他建议我接下翻译此书的合同。当时我正在杭州带领一个团队开发3D游戏引擎,我和我的同事都对这本书的内容颇有兴趣,两大本打印的英文书立刻在同事间传开。可惜那段时间个人精力顾及不来,把近千页的英文读物精读而后翻译成中文对个人的业余时间是个极大的挑战,不能担此翻译任务颇为遗憾。

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

在阅读本书的过程中,我不只一次地获得共鸣。例如在第5章的内存管理系统的介绍中, 作者介绍的几种游戏特有的内存管理方法我都曾在项目中用过,而这是第一次有书籍专门将这些方法详尽记录;又如第11章动画系统的介绍,我们也同样在3D引擎开发过程中改进原有动画片段混合方法的经历。虽然书中介绍的每个技术点,都可能可以在某篇论文,某本其他的书的章节,某篇网络blog上见过,但之前却无一本书可以把这些东西放在一起相互参照。对于从事游戏引擎开发的程序员来说,了解各种引擎在处理每个具体问题时的方案是相当重要的。而每种方案又各有利弊,即使不做引擎开发工作而是在某一特定游戏引擎上做游 戏开发,从中也可以理解引擎的局限性以及可能的改进方法。尤其是第14章介绍的对游戏性相关系统的设计,各个开发人员几乎都是凭经验设计,很少见有书籍对这些做总结。对于基于渲染引擎做开发的游戏程序员,这是必须面对的工作,这一章会有很大的借鉴意义。

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

译者序

这本英文原著作者是《神秘海域》和《最后生还者》的首席程序员。难得他能在繁重的游戏开发工作之外,还在大学教授游戏开发课程以至编写出本书。

译者认为,本书涵括游戏开发技术的方方面面,同时适合入门及经验丰富的游戏程序员。书名中的架构二字,并不单是给出一个系统结构图,而是描述每个子系统的需求、相关技术及与其他子系统的关系。对译者本人而言,本书的第11章(动画系统)及第14章(运行时游戏性基础系统)是本书特別精彩之处,含有许多少见于其他书籍的内容。而第10章(渲染引擎)由于是游戏引擎中的一个极大的部分,有限的篇幅可能未能覆盖广度及深度,推荐读者参考[1],人工智能方面也需参考其他专著。

原作者序

这本书的素材源自我在南加州大学的信息技术课程(Information Technology Programme)中所开发的课堂“ITP-485: 游戏引擎编程(Programming Game Engines)”的笔记,这门课到现在已经讲授了差不多3年。感谢Anthony Borquez博士,正是当时身为资讯技术计划总监的他,聘请我开发ITP-485这门课程。我也要多谢现在的课程总监AshishSoni继续支持及鼓励我去发展ITP-485。

目录

【第一部分 基础】

第1章 导论

第2章 专业工具

第3章 游戏软件工程基础

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

【第二部分 低阶引擎系统】

第5章 游戏支持系统

第6章 资源及文件系统

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

第8章 人体学接口设备(HID)

第9章 调试及开发工具

【第三部分 图形及动画】

第10章 渲染引擎

第11章 动画系统

第12章 碰撞及刚体动力学

【第四部分 游戏性】

第13章 游戏性系统简介

第14章 运行时游戏性基础系统

【第五部分 总结】

第15章 还有更多内容吗

第1章 导论

现在无处不在的三维游戏世界,都由游戏引擎驱动。游戏引擎,例如Id Software公司的Quake引擎及Doom引擎、Epic Games公司的虚幻引擎、Valve公司的Source引擎等等,都已经变成具有完整功能的可复用的游戏开发套件。厂商可以取得这些游戏引擎的授权,用这些引擎来制作几乎任何能想象到的游戏。(甚至不需要开发一行代码,只需要设计数据和关卡资源包MOD就可以开发一款新的游戏。)

虽然各个游戏引擎的结构和实现细节千差万别,但无论是可公开授权使用的引擎,还是私有的内部引擎,都显现出一些粗粒度模式。几乎所有的游戏引擎都含有一组常见的核心组件,例如渲染引擎、碰撞及物理引擎、动画系统、音频系统、游戏世界对象模型、人工智能系统等。而这些组件内也开始显现一些半标准的设计方案。

坊间有许多讲述各游戏引擎子系统的书籍,比如说,在三维图形方面就有描述非常详尽的著作。另有一些,将多个游戏技术领域的窍门技巧,集结成书。但笔者尚未找到一本著作,能让读者全盘了解组成现代游戏引擎的各组件。本书的目标,就是引导读者走进这庞大、复杂的游戏引擎架构世界。

从本书中,读者能学习到以下内容:

-如何架构工业级生产用游戏引擎。

-现实中的游戏开发团队怎样组织及运作。

-有哪些主要子系统及设计模式不断出现在几乎所有游戏引擎中。

-每个主要子系统的典型需求。

-有哪些子系统与游戏类型或具体游戏无关,有哪些子系统是为某游戏类型或具体游戏而设计的。

-引擎和游戏的边界位于何处。

在书中我们会先学习一些流行游戏引擎的内部运作,例如雷神之锤及虚幻。也会讨论一些知名的中间件(middleware)包,例如Havok乌利库、OGRE渲染引擎及Rad Game Tools公司的Granny三维动画几何管理工具箱。

在正式开始之前,我们会从游戏引擎的背景出发,回顾大规模软件工程中的一些技巧及工具,包括:

-逻辑软件架构和物理软件架构的区别。

-配置管理(configuration management)、版本控制(revision control)及生成系统(build system)。

-最常用的C/C++开发环境——微软Visual Studio——的窍门及技巧。

本书假设读者对C++有充分理解,并明白一些基本的软件工程原理。同时,也假设读者懂得一些线性代数、三维矢量、矩阵、三角学。读者最好能了解一些实时及事件驱动编程的基本概念。但无须顾虑,本书会扼要重温这些内容,也会提供适当的参考资料供读者学习。

1.1 典型游戏团队的结构

在开始钻研游戏引擎之前,先简单介绍一下典型游戏团队的人员配置。游戏工作室(game studio)通常由5个基本专业领域的人员构成,包括软件工程师(engineer)、艺术家(artist)、游戏设计师(game designer)、制作人(producer)及其它管理/支持人员(市场、策划、法律、信息科技/技术支持、行政等)。每个专业领域可细分为多个分支,以下逐一介绍。

1.1.1 工程师

工程师设计并实现软件,使游戏及工具得以运行。有时候,工程师分为两类:运行时程序员(runtime programmer)和工具程序员(tool programmer)。运行时程序员制作引擎和游戏本身;工具程序员制作离线工具,供整个团队使用,以提高团队的工作效率。运行时/工具两方面的工程师都各有专长。有些工程师在职业生涯里专注单一的引擎系统,诸如渲染、人工智能、音效或碰撞/物理;有些工程师专注于游戏性(gameplay)和脚本编程(scripting);也有一些工程师喜欢系统层面的开发,而不太关心游戏实际上怎么玩;还有些工程师是通才(generalist),博学多才,能应付开发中不同的问题。

资深工程师有时候会被赋予技术领导的角色。比如,首席工程师(lead engineer)通常仍会设计及编写代码,但同时协助管理团队的时间表,并决定项目的整体技术方向。从人力资源的角度来说,首席工程师有时候也会直接管理下属。

有些公司设有一位或多位技术总监(technical director,TD),负责从较高层面监督一个或多个项目,确保团队能注意到潜在的技术难点、业界走势、新技术等。某些工作室可能还有一个和工程相关的最高职位,这就是首席技术官(Chief technical officer, CTO)。CTO类似整个工作室的技术总监,并履行公司的重要行政职务。

1.1.2 艺术家

游戏界有云:“内容为王(content is king)”。艺术家肩负着制作游戏中所有视听内容的重任,而这些内容的品质能够决定游戏成败。下面来了解一下艺术家的不同分工。

-概念艺术家(concept artist)。通过素描或绘画,让团队了解游戏的预设最终全貌。概念艺术家的工作始于游戏开发的概念阶段,一般会在项目的整个生命周期里继续担任美术指导。游戏成品的屏幕截图通常会不可思议地贴近概念艺术图(concept art)。

-三维建模师(3D modeler)。

posted on 2023-04-28 09:52  XiaoNiuFeiTian  阅读(177)  评论(0编辑  收藏  举报