C++ Programmer's Cookbook

{C++ 基础} {C++ 高级} {C#界面,C++核心算法} {设计模式} {C#基础}

游戏引擎基础(十一)(最后的章节)

11部份: 最后的章节


前端
  你已经看到了菜单系统,你可能理解游戏内的头顶显示(HUDs)时常是游戏经历中被忽视和诽谤的部分。最近,这个领域开始被给人印象非常深刻的Black and White所关注,这款游戏实际上没有HUD。在Peter Molyneux经历了Dungeon Keeper以后,它在屏幕上大量的图标,他决定游戏的大部分被这些图标占用了,主要的屏幕没有被足够利用。因此他决定废除所有这些东西。Peter迈了大胆的一步,我们为你喝彩。很不幸,这种方式适用于B&W这类风格的游戏,但它并不总是对其他种类的游戏有用。

  大体而言HUDs应该是不引人注意的,只提供你需要的关键信息;这本身会在设计团队中引发争议。Soldier of Fortune的最初设计在屏幕上有一个图标,当被击中时向你准确显示身体的哪个部位被击中。当他们决定他们不准备为不同身体部位的伤害而处罚玩家时,最后这个被丢弃了。在一些早期的Soldier of Fortune的屏幕截图上,依然能够在屏幕的右上角看见这个图标。

  在一个完美的世界中HUD是可配置的,因此你能决定显示什么,在哪里显示,显示多久。如果你觉得不需要局部雷达,那么它应当可以被移除掉。任何显示的HUD信息应当有一定程度的alpha(透明度),因此如果需要你能透过它们看见后面的事物。

  说到配置,我是一个游戏个人设定的十足的狂热者。因为没有即时存储设备存储配置文件,在游戏机游戏上不是广泛地可以获得配置,这足够公平。但是随着PS2Xbox硬盘驱动器的来临,我期待在将来看见配置被更多地使用。能够被定制的每件事物都应当这样,如同我看见的一样。很明显,也应当为每件事物提供合理的缺省配置,因此玩家不必一屏一屏地进行枯燥的选择过程---一会儿我们将更多地讨论这个---玩家应当能够根据个人的喜好和可获得的计算能力定制游戏经历。

  回到缺省事物,保持必需的修改最小化非常重要。作出最少的决定而快速进入游戏总是一件好事情。Mortal Kombat,甚至QuakeIII都有一个非常快速的游戏进入系统。少许选择,然后你就进入游戏了。这并不意味着你不能有一个接一个的菜单允许你改变每件事物,但它们不应当是必需的且应当已经有合理的缺省设置了。如果甚至在你进入游戏以前你必须用14个屏幕设置一个角色,可能是第一次你可能没有关于你正在选择的线索而且仅仅会做任何事情以通过屏幕,可能做了一些会极大影响初始游戏体验的事情。而且有可能它将会是不利的影响,作为一个游戏程序员/设计者,我在这里告诉你无论你做任何事情,让玩家第一次选择一些愚蠢的事物,无需让它更糟糕你就会有足够的机会制造很差的第一印象。

  藉由关于配置和HUDs(连同前面十个章节的大量信息)的简要论述,我们最终结束了关于现代游戏引擎的主要建造元素的讨论。当然,依赖于游戏的类型和谁在制作它们,每个特定的游戏对这个清单有它自己的添加(或者减少)。然而,有一些对于游戏引擎实际上不是引擎设计部分的其他元素,但是它们却需要一些关注。


游戏引擎许可与组件
  如今如果你要制作一款游戏,时常最快的开始方式就是购买现有的游戏引擎许可证并在此基础上开发---这就是Raven所做的事情,最近使用Quake3引擎编写了Star Trek Elite ForceHalf Life基于Quake 1引擎,Deus Ex基于Unreal,这个清单还在继续。如今有两种许可证方式---一个完全的游戏引擎(或游戏操作系统如Jason Hall授予LithTech),或者一组给定问题的部分解决方案。这方面一个好的例子会是RenderWare,这是一个渲染场景的部分解决方案并给你提供一些物理。你不能仅仅拍着一些模型并把它们称为完成了的游戏---还需要有声音系统,游戏机制,等等。但它确实给了你一个建立游戏的坚实基础。还记得我在渲染和物理学章节提到的所有数学知识吗?很好,这样你就避免了所有那些东西。

  藉由LithTechUnrealQuake,你确实得到了完全的解决方案 -- 或至少是创始者为他们的游戏所需要的全部解决方案。记住QuakeIII是可以多人玩的,不时建立在单人游戏的基础之上的比如说Unreal Tournament。使用QuakeIII,你失去了单人游戏需用的某些系统,像读取/存储,脚本等等。你只是的到了Id公司制作一款游戏需要的东西,而不一定就是你所需要的东西。有时侯如果系统的一个局限恰好是你所需要的东西时,这可能是一个真正的缺点。给Star Trek Voyager加入读取/存储和脚本:Elite Force不是野餐,但是必须的。然而,使用Quake3引擎依然是领先的开端。

  Unreal有名的Tim Sweeney 对于今天一些流行的预先打包的游戏引擎解决方案有一些评论。

  "我认为我能公平地比较游戏引擎 (QuakeUnreal) 和游戏组件如 RenderWare Karma。游戏引擎是包含游戏开发的所有技术方面的组织严密的框架:渲染,编辑工具,物理学,人工智能,网络,等等。

  它们针对那些想要一个完全的,现成的解决方案的开发者,以便他们能够把精力集中在游戏可玩性和内容上。像RenderWare这样的游戏组件针对那些正在开发他们自己的技术但不想在一些已经很完善的技术领域做重复开发的开发者。

  游戏引擎有解决游戏开发中全部技术问题的优点,有容易把一些包括游戏类型的假设建立在里面的缺点。举例来说,Unreal已经被用来制作第一人称射击游戏,第三人称动作游戏,角色扮演游戏,甚至弹球游戏。但是没有人用它制作飞行模拟类游戏它不是适合这种游戏的技术。游戏引擎带着完整的源代码而来,这是祝福 ( 你能完全看见内部正在发生什么,你可以自由地根据你的需要扩充它),也是诅咒 (如果你改变它,你将必须把变化合并进新的版本之内)

  游戏组件有解决所关注领域的技术问题的优点,如渲染或者物理学,不用花费大量的时间在这方面就可以比典型的开发者做得更好。他们的缺点是把这些组件整合进你的引擎其余部分就是你自己的事情了,这有时候会相当复杂。游戏组件一般没有完整的源代码伴随,因此并不总是很清楚他们内部做了些什么。"

  谢谢Tim,很精妙的分析。


建立你自己的游戏引擎?
  你可能建立自己的引擎而不是购买许可证。这避免了谁拥有什么,版税等所有的法律纠纷,而且如果你产出了质量足够好的东西,你甚至能够向别人出售许可证。然而,正如已经指出的那样,这需要时间和金钱来完成,更不用说绝对优秀的程序员了。LithTech 已经发展了很多年,与Unreal类似。很有趣,主要是因为变化的硬件和API版本,实际上Unreal最初的版本花费了四年时间才完成。当他们刚开始的时候,软件渲染是唯一的游戏。当开发正在继续的时候,3dfx带来了Glide,然后是NvidiaTNT显卡(从那时起硬件和APIs确实有了更多的进步)。这就是它为何支持这么多不同的渲染途径的原因。当然在一个相同的引擎内支持所有这些是一场编码恶梦,但那是另外的事。每个引擎有模块化的方式, 并且当一个模块---比如说,脚本---变得过时了或者需求变化了,你只需要把它抽出来并开始做一个新的模块。

  Quake引擎经历时间有更加完整的进化发展。相应于Id公司下一个游戏的一组需求,当John Carmack创造了在当时的硬件上运行最快的东西时,引擎的每个版本都经过了完全的重写。QuakeII完全重写了不少于四次,我个人看到了QuakeIII的机器人代码的三个不同的版本。其他的开发者也没有能够避免这种情形。John Scott,建造了Soldier of Fortune II的地表系统,曾对我提到,在动态地表生成上他曾尝试了许多方法让物理学正确地工作。

  建造技术或者完整的引擎不是件容易的事情。当今的游戏引擎需要许多,许多的系统,就如同许多人们尝试创造下一个大的引擎时所发现的那样,从屏幕上文本的简单显示到高级人工智能。并且如我前面提到的,不断发展的新技术使得建造一个快速,高效的引擎是一个变化的目标。事实上,我见到有人仅仅为了让一个带alpha的纹理正确地显示而在PS2的混合模式上花了四天时间。

  值得考虑的其他引擎有Garage GamesTribes 2引擎---被称为The Torque Game Engine。我的理解是它可以收取微小数量的许可费用,将来有一些版税协议。这是的确值得考虑的事情。你可以在这里看到这个引擎的特征细节http://www.garagegames.com/index.php?sec=mg&mod=v12&page=features 然后就是Serious Sam 引擎。这也是需要许可证的,的确值得看一看。如果你对它有兴趣的话,可以联系God Games---他们应当可以给你指明正确的方向。

  在网络上有一些你可以下载的自由引擎---首先想到的是Crystal Space引擎。你可以从这里下载http://sourceforge.net/projects/crystal ,并在你的游戏中随意使用。这不是一个专业的引擎,但看看所有的部分如何结合在一起时常是一个好的学习经历。

  还有就是最初的Quake Engine,现在已经被Id公司开放源代码。对于任何有抱负的游戏程序员来说这是一个很好的开端----下载它,编译,开始调整。值得记住的是,这个擎是许多年以前的了,与Quake III或者新的Doom没有多少相似性。重复一遍,它确实是个好的开始。你能从这里找到发现好的资源网页http://www.inside3d.com/qip/home.shtml

  确实,这一切都是时间与金钱的事情。如果你没有时间开发一个新的引擎,就不要介意花钱使用第三方的引擎,去购买一个吧。注意,对于要求使用他们引擎的团队,如今大多数引擎许可团体有很合理的途径。尽可能地让许多人们使用他们的技术,因此这种经验变成了工业标准,这对他们有好处。


‘Mod’
社区
  看一眼任何在线游戏服务器的统计数字,显示出Counter Strike服务器比任何其他游戏服务器都要多。和它最近的竞争者(Quake III或者Unreal Tournament)相比,几乎有两倍的CS服务器。

  游戏 mods 全部来自于一些编辑程序,这些程序让游戏者能够修改DOOM最初的.WAD文件,提供他们自己自家制造的关卡设计和纹理。人们开始玩这些(大致)自家建造的工具,并且也发现了他们可以产生其他人想玩的关卡。Id注意了这个趋势,而且将Quake系列引擎带到了一个新的阶段,这样设计游戏,使得游戏是用户可修改的。他们甚至发布他们自己的设计工具,指令,而且甚至---喘口气---游戏中的代码,如此有抱负的游戏程序员可以在Quake Universe中玩。你可能从这个创造出自己版本的Quake连线经历。许多今天的业内大师来自这种早期的修改经验。现在有名的设计者如LevelLordCliffyB在这个行业中就是这样开始的。最高的荣誉来自一位名叫ZOID的绅士,他提出了3Wave CTF,第一个夺取旗帜的游戏,游戏中需要人们组队---连线游戏从纯粹的死亡竞赛以来的第一次进化发展。

  一些游戏是如此的流行以致于他们每年都有事件发生。比如说,Quake有一个QuakeCon,在Mesquite TexasId软件公司所在地,举行的一年一次的quake大会。人们带着他们的PC来到这里,或为了看最新的mods或是展示的基于Quake引擎的游戏。

  如今你制作的任何游戏需要或者有杀人者可多人玩的经验,或者有可以非常容易修改的内容这样连线修改者能利用你的游戏并制作出其他游戏来。这一切延长了你游戏的生命,有希望卖出更多,人们购买它,可以下载mods来玩最新的Quake III修改版本:The Teachers Strike Back。但你不能仅仅生产一款游戏,发布你的工具,就袖手旁观。实际上你最初必须把代码设计成不需要程序员就可以容易地扩充, …好吧, … John Carmack

  作为一个开发者,你需要在那里可以见得到,并为那些在家中想利用你的游戏和用它做点别的什么的人们提供经验和帮助。这种支持可以有许多形式----一个亲切友好的词语,一段代码,建议,宣传或只是金钱。只要有这个它时常不介意采用何种形式。

  在这里你选择哪个第三方工具用来建造内容可能是至关重要的。在Raven,过去我们已经做了一些开发决定,在这方面没有什么帮助,由于我们为大多数的建模和所有的动画需求使用了SoftImage。虽然它是制作我们需要的动画的最好工具,对于家庭业余爱好者来说它太过昂贵了。这就给那些家庭业余爱好者在扩充我们制作的内容时带来了问题,因此他们容易抛弃我们转而寻求那些比较容易制作内容的游戏。在建造或者选择一个引擎时这确实是值得留意的事情。为了响应制作游戏modsDiscreet在市场上发布了一个3D Studio Max‘lite’版本,称为gmax。最好的是,它是免费的。如果你想要试一试,你能从这里抓取它http://www.discreet.com/products/gmax/gmaxconsumer/index.html

  最后在线游戏的成功时常能追踪到 mod 社区,因此我认为感谢他们做了件好的工作是公平的。我过去时常说,在行业中到达一个真正的工作最快的方式是从一个mod开始,说明你有完成它的训练并用它作为一个面试获得者。不能说,"我能做这个" 就像已经完成了一样。因此去到那里并开始吧。你损失什么了吗?


有关作者
  Jake Simpson 是一个游戏程序员,断断续续在这个行业已经有大约20 年了。他在英国本土从15岁开始,在C64的时代,Sinclair Spectrums BBC Micros,经历了 Amiga ST,离开了一段时间,然后90年代中期至后期在Mideay Games写街机游戏。他最近在Raven Software工作过,制作有Soldier of Fortune Heretic Hexen Star Trek : Voyager : Elite force Jedi Knight II : Outcast,在北加州的Maxis可以找到他,为Will Wright的游戏产品工作。业余时间他为GameBoy ColorAdvance编写代码,因为你能尽可能地远离C++编码,而且,如同John Carmack所说,底层编程对程序员的灵魂有好处

posted on 2007-12-04 13:31 梦在天涯 阅读(4752) 评论(1)  编辑 收藏 引用 所属分类: Game/OpenGL

评论

# re: 游戏引擎基础(十一)(最后的章节) 2008-02-12 06:24 迪克拉

翻译的么?有打包么?  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


公告

EMail:itech001#126.com

导航

统计

  • 随笔 - 461
  • 文章 - 4
  • 评论 - 746
  • 引用 - 0

常用链接

随笔分类

随笔档案

收藏夹

Blogs

c#(csharp)

C++(cpp)

Enlish

Forums(bbs)

My self

Often go

Useful Webs

Xml/Uml/html

搜索

  •  

积分与排名

  • 积分 - 1796270
  • 排名 - 5

最新评论

阅读排行榜