ipod 发表于 2007-8-18 13:42:00

<strong>骨骼动画附加的好处<br/></strong>  骨骼动画的另一个优点是能够根据影响顶点的一些骨架来分别“估价” 每个顶点。例如,双臂的骨架运动,肩,脖子而且甚至躯干都能在肩中影响网格。当你移动躯干的时候,网格就活像一个角色一样移动。总的效果是3D角色能够实现的动画更加流畅和可信,且需要更少的内存。每个人都赢了。 <br/><br/>  当然这里的缺点是,如果你想要使有机的东西运动且很好,比如说头发,或者披肩,为了让它看起来自然,你最后不得不在里面放置数量惊人的骨架,这会抬高一些处理时间。 <br/><br/>  基于骨骼的系统能带给你的一些其他事情是‘忽略’特定层次骨架的能力 -- 说,"我不关心动画想要对这块骨架所做的事情,我想要让它指向世界中的一个特定点"。这很棒。你能让模型着眼于世界中的事件,或者使他们的脚在他们站着的地面保持水平。这一切非常微妙,但它可以帮助带给场景附加的真实感。<br/><br/>  在骨骼系统,你甚至可以指定"我需要把这个特别的动画用於模型的腿,而一个不同的携枪或射击动画在模型躯干上播放,且那家伙(角色)叫喊的不同动画效果在模型的头部播放"。非常妙。Ghoul2 ( 在Soldier of Fortune II: Double Helix and Jedi Knight I: Outcast中使用了Raven的动画系统 ) 拥有所有这些好东西,且特别被设计为允许程序员使用所有这些忽略能力。这对动画的节省像你一样难以相信。像你一样的动画上的这次救援不相信. Raven有一个角色行走的动画和一个站立开火的动画,并在它同时行走和开火形下把这两个动画合并,而不是需要一个动画表示角色行走并开火。

ipod 发表于 2007-8-18 13:43:00

<strong>不能看见它? 别烦扰…<br/></strong>  回想一下我们在第一部分讨论的BSP (二叉空间分割) 树,你也可能听说过潜在可视集合(PVS)这个术语正被四处谈论。两者都有相同的目标,不去探究涉及到的繁杂的数学,它是一种把世界分解为你能从世界任何给定位置看见的墙壁的最小子集的方式。在实现时,它们仅仅返回你能看见的那些,而不是那些隐藏在可能被遮挡的墙壁后面的。你能想象出这给软件渲染器带来的好处,渲染的每个像素(可能是这样的情形)极为重要。它们也按从后到前的顺序返回那些墙壁,在渲染时这是很方便的,因为你能够在渲染次序中确定一个对象的实际位置。 <br/><br/>  大体而言,BSP 树最近正不受欢迎,由于它们的一些古怪,而且因为我们从当今3D显示卡获得的像素吞吐量,再加上Z缓冲像素测试,BSP 常常成了一个多余的过程。它们在计算出你在世界的确切位置和正在你周围的几何物体方面是便利的,但常常有比BSP树更好而且更直观的方式来存储这些信息。 <br/><br/>  潜在可视集像它听上去一样非常好。它是这么一个方法,在任何给定时间,给定你在世界的位置,它决定世界的哪些表面,哪些对象实际上可以看得见。这时常用来在渲染之前剔除对象,也剔除它们来减少AI和动画处理。毕竟,如果你实际上不能看见它们,为什么还要费脑筋处理呢。多半这真的是不重要的,如果一个非玩家角色(NPC)正在播放动画,或者甚至在运行它的AI思考。<br/><br/><br/><b>游戏物理学</b><br/>  既然我们已经在内存中得到了世界的结构,我们必须防止我们的角色从里面掉落出去,并处理地板,斜坡,墙壁,门,以及移动平台。加之,我们必须正确地处理地心引力,速度变化,惯性,和放置在世界里面的其它对象的碰撞。这被看作是游戏物理学。而且在我们进一步深入讨论之前,我想现在就在这里消除一个神话。任何时候你在世界中看见物理,或者任何人在一个复杂的游戏环境中宣称“真实的物理”,很好,它是BS。超过80%的建造一个有效率游戏物理系统的精力花在简化用来处理世界中对象的真实方程式上面。甚至那时,你时常忽略什么是‘真实的’,并创造一些‘有趣的’东西,毕竟,这是目标所在。<br/><br/>  经常地游戏者将会忽视真实世界的牛顿物理学,并扮演他们自己的,更有趣的真实版本。例如,在QuakeII里面,你能够立即从0加速到35MPH,并快速停下来。没有摩擦力,而且斜坡不提供真实斜坡提供的相同类型的重力问题。身体没有它们应该的作用在所有关节上的地心引力 -- 你看不见身体像真实生活中那样倒在桌子上面或者边缘 -- 而且地心引力它本身甚至可能是可变的。 面对现实吧,在真正的世界中,空间中的飞船不像二战飞行战斗员在它们的表面操作那样实行。在空中,全部是力和反作用力,力在重量点周围作用,等等。不像 X-Wing中的Luke Skywalker那样啸叫。尽管那样做更加有趣! <br/><br/>  作为游戏开发者来说,无论我们做什么,我们需要能够检测墙壁,检测地板,在世界中处理和其他对象的碰撞。这些是现代游戏引擎的必备

ipod 发表于 2007-8-18 13:43:00

<strong>效果系统<br/></strong>  如今绝大多数的游戏引擎建造有某种效果产生器,这允许我们表现出有洞察力的游戏者期盼的所有可爱的吸引眼球的东西。然而,效果系统幕后所进行的东西能够急剧影响

ipod 发表于 2007-8-18 13:43:00

<font color="#ff0000">第6部分: 声音系统,音频APIs<br/><br/><br/></font><b>声音系统</b><br/>  由于人们玩的游戏在种类和技术上的进步,声音和音乐近几年来在游戏中正逐渐变得重要起来(声音是一个实际游戏的可玩特点,比如在Thief和其它同类游戏中的听觉提示)。现在四声道环绕系统在游戏玩家的宝库中是负担得起的和平常的事。给定空间的声音,噪音的障碍和闭塞,和动态的音乐,如今许多游戏使用这些提高玩家情绪上的反应,更多的关注投入到这个领域就不足为奇了。<br/><br/>  现在在PC竞技场中,游戏玩家实际上只有一种声音卡可以选择 -- PC声卡制造商创新公司(Creative Labs)的Sound Blaster Live! 从旧的时间个人计算机声音卡片制造业者有创造力的中心. 多年来创新公司已经为DirectX提供了他们的EAX声音扩展,并且他们是发起新的OpenAL(开放音频库Open Audio Library)的创立者。就如同OpenGL是一个图形API一样,OpenAL,像它起来听一样,是一个声音系统的API。OpenAL 被设计为支持大多数通常声卡的许多特征,而且在一个特定的硬件特征不可得时提供一个软件替代。<br/><br/>  为了更好的定义 OpenAL,我向创新公司的Garin Hiebert询问了其定义: <br/><br/>  "这里借用我们的 " OpenAL 规格和叁考" 的一个定义: <br/><br/>  OpenAL 是对音频硬件的一个软件接口,给程序员提供一个产生高质量多通道输出的能力。OpenAL 是在模拟的三维环境里产生声音的一种重要方法。它想要跨平台并容易使用,在风格和规范上与OpenGL相似。任何已经熟悉OpenGL的程序员将发现OpenAL非常熟悉。 <br/><br/>  OpenAL API能容易地被扩展适应插件技术.创新公司已经把EAX支持加入到这套API了,程序员可以用来给他们的声音环境增加复杂的反响,比赛和障碍效果。<br/><br/>  如同Jedi Knight II: Outcast 一样,连同Eagle 世界/声音特征编辑器,Soldier of Fortune II 以这个新系统为特征。什么是Eagle? 在介绍这个以前,让我们讨论一些其他的系统,并定义一些声音术语。 <br/><br/><br/>  另外的一个系统是Miles声音系统。Miles是一家公司,它为你的代码生产插件,在充分利用每块声卡时处理所有必须的到特定声音卡的说话(比如Sound Blaster Live!系列,或者老的A3D声卡)。它非常像一个API前端,捆绑了一些额外的特征在里面。 在其他事物当中Miles让你存取一些事物像MP3解压缩。 它是很好的解决方案,但像任何事一样,它花费金钱并是你的代码和硬件之间的额外一层。虽然对於快速的声音系统制造,它非常有用,而且他们有段时间了,因此他们的确精通自己的业务。<br/>

ipod 发表于 2007-8-18 13:44:00

<font color="#ff0000">第7部份: 网络和连线游戏环境<br/><br/><br/></font><b>网络游戏</b><br/>  我记得一些年前坐在GDC(游戏开发者大会)听负责开发X-Wing Vs TIE Fighter的家伙们题为“淹没在Internet” 的演讲,全是关于让网络游戏实时地在Internet上工作的东西。他们选择那个题目是多么的正确啊。当它开始处理数据包的丢失,乱序,潜伏(一个数据包发送到它的目的地所花的时间)等等时,它确实淹没了。然而它是可能的。对于Internet需要一些聪明和经验,但它是肯定可能的。看看今天大量的连线游戏,从Quake III,Unreal Tournament,Counter Strike一直到EverQuest和Ultima Online。 <br/><br/>  如今大多数真正有长久生命力的游戏都至少有一些连线成分。最纯粹的单人游戏容易玩一次,也许两次,或者甚至三次如果它是非常好的游戏,但一旦游戏结束,就被束之高阁了。如果你想要有任何长久生命力,那么多人连线游戏就是形势的核心所在,并且那意味着和Internet打交道,为编码者打开了那个潘多拉的盒子。 <br/><br/>  那么跟Internet打交道包括些什么呢?首先是要理解Internet是怎么工作的,和点对点与客户机/服务器体系结构的快速讨论。点对点就是你在两台机器上运行游戏,并简单地在它们之间共享输入。每个单独的游戏假定它是正确的,并仅仅在它一

ipod 发表于 2007-8-18 13:44:00

<strong>Music Tracks in Games(游戏中的音轨)<br/></strong>  我们没有过多的谈到游戏中的音乐生成。传统的有两种方法,一种是简单的音乐 .wav 文件(或同等物)。它被预先制作做好,准备运行,和最小忙乱。然而,这些在内存和回放时间方面很昂贵。第二种方式用预设的样本编码MIDI音轨。这时常比较节省内存,但缺点是必须同时把一些声音混合在一起,因而会把声音通道用光。 <br/><br/>  动态音乐就是根据在游戏中目睹的行动改变你的音乐的能力,比如探险用慢节奏的音乐,战斗用快节奏的音乐。预先制作的音乐的一个困难之处是要合拍,因此你可以从一段音乐渐弱到另一段音乐,这对于MIDI音轨比较容易。尽管时常你足够快速地淡出,或者一段音乐在播放另一段音乐之前已经消失了,你能侥幸不被察觉。<br/><br/>  在我们离开这个主题之前,顺便说一下,值得一提的是存在一些公司专门为你的游戏创作特定意义的音乐。FatMan(www.fatman.com) 就是一家这样的公司。音乐可能比其他别的东西更加容易外包,这是他们存在的方式。 <br/><br/>  最后,游戏现在的事情自然是MP3格式,允许巨大的11 :1的声音样本压缩,然而在送到声音卡之前只花费CPU很少的时间解压缩。当我在Rave Software工作时,在Star Trek Voyager: Elite Force 中,我们设法用MP3在一张CD上面完全支持三种语言,仍然为较多的图形留有空间。主要地,我们 MP3 只用于非玩家角色(NPC)的语音,由于游戏的全部音频效果MP3流和动态解压缩超出了硬件的处理能力,虽然在将来这是肯定可能的。比较新的格式,如来自 Dolby 的 AAC 和来自微软的WMA,以将近两倍MP3的压缩率提供了相等或者更高的音频质量(实际上一半的比特率),可能应用到将来的游戏中。

ipod 发表于 2007-8-18 13:44:00

<strong>了解IP<br/></strong>  我们都已经听说过TCP/IP(传输控制协议/网间协议)和UDP(用户数据包协议), 在Web网络上有大量关于这些协议的深奥的技术资讯。实际上,在Cisco网站上有一些极好的TCP/IP指导。我们将在较高层面上介绍一些TCP/IP的基本知识,目的是让你更好地了解使用这些标准协议的网络游戏设计者面临的挑战。 <br/><br/>  TCP/IP和UDP/IP是两层的通信协议系统。IP层负责网际数据包的传输。UDP或者TCP层将大的数据包传给IP,IP将数据包分割为小的子数据包,为每个数据包加上一个信封,计算出目的地的IP地址,应该如何到达那里,然后将数据包发送到你的ISP,或者不管怎样你连接到网络。 这实在象是在一张明信片上写下你要发送的,贴上邮票,写上地址,塞进一个邮箱,它就送走了。 <br/><br/>  UDP和TCP是从你编码者或者游戏接收数据包的高层协议,并决定该如何处理这些数据包。UDP和TCP的区别在于TCP保证数据包的传送和有序,而UDP不保证。UDP是一条直接和IP对话的小路,而TCP是在你和IP之间的一个接口。它像是在你和你的邮件之间有一个管理员助手。使用UDP你会自己为你的信打字,把它们放进一个信封等等。使用TCP你会仅仅向你的管理员口授信稿,管理员会做全部的工作并追踪确认信件送到了。 <br/><br/>  然而,所有这些令人惊奇的为你完成的工作伴随着代价。为了确定数据包通过Internet完好无损地送到了目的方,TCP期待从目的方为它发送的每个数据包发回一个应答包(网络用语是ACK)。如果它在一定时间内没有收到ACK,它就停止发送任何新的数据包,重新发送丢失的数据包,并且将继续这样做直到收到目的方的回应。当你访问一个网页时,我们都已经看到了这种情形,在半途中下载停止了一会然后又重新开始了。可能是一个数据包在什么地方丢失了(假定不时ISP的问题),在任何更多的数据包被发送以前TCP要求重新发送它。 <br/><br/>  这一切的问题是,在认识到出了差错的发送者和实际上正在送达的数据包之间出现了延迟。有时这能花上数秒钟,如果你仅仅只是下载一个文件或一个网页,这不是什么大碍,但如果这是一个游戏数据包而且每秒至少有十次,那么你真的是遇到麻烦了,尤其是因为它停止了其他一切事情。实际上就是这个问题所以几乎没有游戏选择使用TCP作为它们主要的Internet协议,除非它不是一个实时动作游戏。大多数游戏使用 UDP--他们不能保证有序或可靠送达,但它确实很快―或者结果是至少通常比TCP/IP更快。现在我们了解这些了,接下来呢?<br/>

ipod 发表于 2007-8-18 13:44:00

<strong>声音术语<br/></strong>  让我们开始障碍和闭塞。它们听起来一样,但不是这样。闭塞基本上意谓着一个声音在播放时听者在他们之间有一些闭合的障碍物。 <br/><br/>  比如说,在NOLF2的一个屏幕镜头上你听到房子里面坏蛋的声音。你能听到他们,但是他们的声音相当低沉而沙哑。障碍是相似的,但是你和声音之间的障碍物并不是闭合的。一个好的例子就是在你和声源之间有一根柱子。由于房间中的回声你仍然听得到这个声音,但是它和声音直接传递到你的耳朵里是不同的。当然这确实依赖于知道在你的耳朵和声源之间的直线上是什么。而且根据房间的大小,声源到你的距离等等,需要的处理能变得相当耗时。后面我们将会谈到跟踪--足可以说它时常是比较慢的 <font color="#c0c0c0"><br/></font>

ipod 发表于 2007-8-18 13:44:00

<strong>位置的声音--一个复杂的世界<br/></strong>  现在有一些很少有处理的声音空间化问题。我说的是把声音放在一个真实的3D世界中。有四个扬声器在你周围是一个很棒的开始,但这仍然只是在二维方向。在你的上方和下方没有扬声器,你没有真正获得3D声音。有一些声音调制过滤器试图解决这个问题,但实际上没有真实东西的代替物。当然真实地大多数游戏多半只是在二维方向上,因此这仍然不是太大的问题。 <br/><br/>  实际上任何声音系统最重要的特征之一是把声音混合在一起。根据你所处的位置,空间中声音的位置,每个声音的音量大小,一旦你决定了实际上你能够听到的声音,然后你必须混合这些声音。通常声音卡自己处理这些,这首先是声音卡存在的主要原因。然而,外面有一些引擎决定首先用软件做一次‘预混合’。直到你着眼于一点点历史以前,这并没有真正地带来多大的意义。<br/><br/>  当声音卡最初问世的时候,有许多不同的混合方法。一些声卡可以混合8种声音,一些单位16种,一些32种,等等。 如果你总想听到16种可能的声音,但你不知道声音卡是否能够处理,那么你回到了尝试和试验的道路上 ― 就是你自己用软件混合。这实际上是Quake III声音系统的工作方式,但提一个问题:"Quake III是为A3D和Sound Blaster Live!声卡世界发布的,这比以前更加标准化,为什么还这样做?" 这是个好问题。实际上Quake III的声音系统几乎每行代码都和Quake II中的声音系统一样。而且Quake I,甚至Doom也是这样。你想一想,向上直到 A3D 声卡和 SB Live! 声卡,许多年来声音系统的需求没有真正地改变过。两个扬声器,二维方向,音量简单地随着距离减小。从Doom一直到Quake III没有发生太大变化。而且在游戏行业中,如果不是迫不得已,别理会它。<br/><br/>  通常你会仅仅使用DirectSound为你做声音混合,因为它会可以使用的声音硬件,或者转而依靠软件,很多地方就像DirectX为3D显示卡所做的一样。在 90% 的声音情形中,依靠软件混合对你的

ipod 发表于 2007-8-18 13:45:00

<font color="#ff0000">第9部分: 现成产品与定做的游戏引擎设计工具,游戏特定主题<br/><br/><br/></font><b>现成产品与定做的设计工具</b><br/>  我们从第8部份的脚本引擎来到这一章节中的许多主题,我们认为那些铁杆游戏玩家和有志成为游戏开发者的那些人将会发现它们相当有趣。我们将开始讨论现成产品与定制的设计工具。 <br/><br/>  你的工具的选择是你引擎设计的一个非常重要的部份,因为这是你将用来给你的游戏产生内容的东西,是最耗时的部份。在这个过程中有助于节省时间和资源的任何东西都是好的。那些不能的东西就是糟糕的。在那里,那是容易的。<br/><br/>  当然没有那么容易。有比这更多的事情可能会立刻被注意到。你的工具集的选择,和从工具到游戏的资产路径比它听起来更有技巧得多,并受到很多因素的影响,比如,是否适宜手边的工作,费用,内容生产者的熟悉,市场渗透,工具支持等等。当考虑选择现货成品工具,或者即使当开发你自己的工具时,记得开发者实际在做工作,最好能够做需要借助工具做的。一些现货成品工具能在价格上达到那里,当你陷入多个拷贝许可时,费用猛涨。 <br/><br/>  然后就有诱人的可能性从头制造你自己的工具,为你游戏和引擎的需要而设计。这当然需要时间,和程序员大量的努力来产生在开发者友好方式中所需要的东西。快速打造基于窗口的文件转换器是一回事情,从头建造一个完整的关卡设计工具又是另外一回事情。另一方面,如果你确实选择这条道路,最后你会有游戏开发者地带其他人没有的工具,因此你的东西将会看起来是独特的。如今与众不同是一件非常值得想望的事情,而且从群众这些天起突出是一件非常令人想要的事物,产生所有的竞争。<br/><br/>  当然由于内部的工具开发,你需要某人来做所有那些不可避免的小的改变和修正。但这里真正的意义是这是可能的。使用现成的工具,工具开发者会很少因为你需要的一些特征而改变他们的输出文件格式。这样你的东西最后看起来更加通用一些,否则你必须采用额外的步骤使用另外的工具来得到想要的结果,当然会花费开发者更多的时间。 <br/><br/>  值得记住的是如今许多有名的3D工具已经有一段时间的历史了,并且正在产生简直没有错误的产品,更重要的是,对他们所做的已经有一定程度的经验了。 <br/><br/>  如果你选择建造你自己的工具,多半你是,a) 重新创造车轮到某种程度 b) 陷入那些建造现成工具的人们已经遇到过的相同的问题之中,只是他们已经解决了这些问题。时常人们建造一个单一特定的工具花费了相当的时间和努力,并产生了一个远远超出你自己的个人需求的工具。还有,他们有代表性地收编了一些你或者认为是没有用的,或者没有时间自己实现的特征。加上他们典型地有吸收特征你或会没有想有用,或没有时间实现你自己. 这是第三方软件无法争辩的。<br/>
页: 1 2 [3] 4 5 6 7 8
查看完整版本: 游戏引擎剖析(全书完结,如果各位觉得好就鼓下掌)