从《Doom》到《Dunia》 回顾3D游戏引擎发展历程一

来源:互联网 发布:组态软件哪个好 知乎 编辑:程序博客网 时间:2024/04/30 15:51

转载自http://bbs.mydrivers.com/thread-262889-1-1.html

Doom毫无疑问是令人难以遗忘的单机游戏之一,Doom发布后,游戏开发终于脱离了石器时代——在大多数情况下,开发一个游戏意味着从零开始书写和编译所有的代码,但游戏引擎时代的来临,永远地改变了PC游戏开发的思维和方法。虽然1993年Doom公布之前,游戏引擎就已经存在,但正是id Soft这款传奇的FPS游戏使得可重复使用的3D游戏引擎变成了一种可行的编程模型。

我知道,你很想了解什么是游戏引擎,它有什么作用,它的历史和发展现状,下面就让我们一起揭开这些谜底。

我们可以把游戏的引擎比作赛车的引擎,大家知道,引擎是赛车的心脏,决定着赛车的性能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的。游戏也是如此,玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏的引擎直接控制的,它扮演着中场发动机的角色,把游戏中的所有元素捆绑在一起,在后台指挥它们同时、有序地工作。简单地说,引擎就是“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”

游戏引擎的主要功能有:

·数据管理,主要包括场景管理、对象系统、序列化、数据与外部工具的交互、底层数据的组织和表示;
·合理渲染,组织包括材质、贴图、光线、阴影、粒子等的显示方式;
·与外部软件交互,简单的说,就是开发工具。这些开发工具可能是一些文件转换器、场景编辑器、脚本编辑器、粒子编辑器……


下面,就让我们从众多PC游戏中的回顾一下引擎的发展历程。

Space Rogue / Ultima Underworld 空间流氓/地下创世纪

Ultima Underworld采用了Space Rogue的引擎,后者由1989年发表的同名科幻小说改编。从某种程度上来说,游戏本身是一个尝试,以游戏名命名引擎名,这个惯例一直沿用至今。



Space Rogue发布后,Origin Systems着手开发Ultima Underworld和它的附属引擎,以允许墙壁、地板和天花板的纹理映射,开发团队还增加了不同高度地形以及倾斜表面的3D效果。



二维NPC,但三维的对象渲染,再加上物理运算移动,极大的拖累了引擎的运行速度。Ultima Underworld当时的推荐配置为386或同档次PC,实际上,在高配486PC上运行这个游戏也很吃力。

发布日期:1990年
值得关注的游戏:Space Rogue, Ultima Underworld:The Stygian Abyss

Doom / id Tech 1

id Soft的Doom引擎实际上不能算是一个真正的3D引擎,而是一个非常优秀的二维场景加上和场景分离的二维物体、角色、怪物。由于这种二维限制,一个场景不能堆叠在另外一个上面,但这也降低了硬件需求和渲染时间。Doom只需要386级别的PC,当然是在低细节模式下。一块当时的标准VGA显卡就能实现环境的纹理映射。



虽然拥有二维的基本性质,Doom却一直被赋予3D头衔。id Soft公司通过不同高度环境贴图的方式创造了一种3D错觉,后来又添加了上下视角——虽然是扭曲的。



发布日期:1993年
值得关注的游戏:Chex Quest 1+2, Doom, Doom II, HacX, Heretic, HeXen, Strife

Voxel 体素

每一款科曼奇游戏的构建或多或少都要用到NovaLogic的Voxel Space引擎专利。而其他一些游戏把voxel应用到游戏的一些特定部分,例如汽车和游戏中的物品。



结合体积和像素,体素是描述物体的三维点阵图,而不是矢量。把每个体素想象为一块积木,你可以理解Voxel Space引擎的工作原理:2D的块拥有了不同的高度。通过这种方式,图形更加平滑和详实,同时提供更流畅的游戏速度。



发布日期:1992年
值得关注的游戏:Blade Runner (characters and artifacts), Comanche series, Command & Conquer: Tiberian Sun and Command & Conquer: Red Alert 2 (most vehicles), Delta Force series, Master of Orion III (space battles and solar systems)

Build

以Duke Nukem 3D而闻名的引擎出现了,Build和Doom采用了相似的技术,怪物填充在2D场景中。引擎把整个世界划分为若干个网格,不同网格内的天花板和地板可以被不同高度的材质填充,加上鼠标控制上下视角的功能,这就造成了3D的错觉。



这还不是全部,通过地面和墙壁上的特殊贴图,开发者还可以做到:当玩家进入或移动到指定区域时,他将被传送到另外一个区域。这可以用来在地上开一个洞,玩家经过时会掉下去,这似乎达到了3D的效果——实际上是传送到了另外一张2D地图。



Build引擎需要奔腾级别的PC和SVGA视频卡以达到最好效果,尽管早期的Build游戏都运行在486PC上。

发布日期:1993年底
值得关注的游戏:Blood, Duke Nukem 3D, Extreme Paintbrawl, PowerSlave, Redneck Deer Huntin', Redneck Rampage, Redneck Rampage Rides Again, Shadow Warrior, William Shatner's TekWar, Witchaven, Witchaven II

Stonekeep

直到其发布,Stonekeep一直就是一个谜——一份9个月的开发计划变成了一场持续5年的马拉松。不完全是偶然,Stonekeep引擎随硬件发展而一直修订,开始的时候,游戏被设定在286PC平台上,只使用软盘驱动器;实际结束的时候,386PC和CD驱动器支持成为推荐配置。

Stonekeep引擎里怪物使用了动态捕捉功能,开始它只捕捉腰部以上的动作。毕竟,如果你和敌人面对面,你是不会低头的。当后来Peter Oliphant负责这个开发计划的时候,玩家被赋予了战斗时转身的能力,这将能看到敌人的下半身。



玩家从一个网格移动到另外一个网格,或更具体的说,从网格的边缘到另外一个边缘,这产生的问题是:玩家转身时,他将被移动到另外一个边缘,这样就产生不对称的现象。

发布日期:1990年至1995年
值得关注的游戏:Stonekeep

XnGine

史上第一款3D引擎,早期存在一些问题:以DOS为基础的引擎在Win 95下,由于裁剪问题玩家会被3D多边形物体卡住,像Battlespire中就存在这个现象。其他引擎为避免这一问题,仍然在游戏中使用大量2D对象。



XnGine后来使用高分辨率图形以及符合3dfx的图形卡,营造了巨大的游戏世界,代表作有Daggerfall。



发布日期:1995年
值得关注的游戏:Battlespire, Daggerfall, Redguard, NIRA: Intense Import Drage Racing, Terminator: Future Shock and Terminator: SkyNET, X-Car

Jedi 绝地

Jedi不像前人那样继续提供一大堆的基础概念,但是它提供了精彩的游戏——Star Wars: Dark Forces 和 Outlaws——成功的创造了仿3D环境。它允许从底层向上堆叠区域、场景——这是Doom引擎所缺少而被诟病的。



并非所有的都是3D。当开发者创造一个3D模型,它将从不同的角度——通常间隔45度引入到位图上。Jedi引擎对每个对象提供32个角度支持。各种对象:物体或者敌人,会根据你观察距离的远近而调整。



Jedi引擎使跳跃和蹲下、向上向下观察功能为玩家普遍接受,LucasArts首次尝试的FPS游戏Dark Forces也给玩家留下了深刻的印象。

发布日期:1995年
值得关注的游戏:Dark Forces, Outlaws

Quake

这是id Software公司第一款真正意义上的3D游戏引擎,开发人员在这款引擎上投入了大量精力。他们引入了一种新的方法来处理进程中玩家无法看到的地图区域。他们用刷子工具组成了地图的边界,以建立一个封闭的空间,地图有一个预渲染过程,区分边界外面和里面的部分,然后抛弃不必要的部分。这种技术非常有效,它减少了一半甚至更多的多边形数量。



为了进一步降低CPU的运算量,Quake引擎还引入了Z-缓冲技术,分辨出地图的哪些部分是可见的从而只渲染相应的部分。

Quake还包含3D光源,这是第二种预处理方式,支持3D加速,不再交给CPU负担这些。John Carmack稍后发布了一个Quake的本地接口,称为VQuake或“Vérité-accelerated Quake”,旨在充分利用Vérité1000图形芯片的硬件功能,同时包含了抗锯齿功能,加入了OpenGL支持,以促进Voodoo和PowerVR散装图形卡的销售。



发布日期:1996年
值得关注的游戏:CIA Operative: Solo Missions, HeXen II, Laser Arena, Quake, Silver Wings, Urban Mercenary

Renderware

Renderware游戏引擎获得了一大堆冠军称号——超过200个——大部分在PS2平台、但仍有超过20多个在PC平台。它被广泛应用GameCube、 Wii、Xbox、Xbox 360,、PlayStation 3和PSP,是一个多平台的游戏引擎。



Renderware最初开发与1998年,主要是作为基于PC的中间件解决方案,到现在为止,像大多数游戏引擎一样,在很大程度上优于GPU,而后者作为一个主要的API导致了前者的最终消亡。在采访Gamasutra,William "Bing" Gordon,当时Electronic Arts的CCO(EA公司购买了在2004年购买了Renderware的产品标准)时,他感叹说:“Renderware并没有提供我们需要的次时代技术。实际上我们低估了Epic。他们告诉我们‘我们准备做到这一点、这一点还有这一点’,于是我们想‘哦,这有点困难’。我们也低估了我们的团队,当我们向后看3个月、6个月、9个月后说,‘哎呀,我们低估了Epic’。”



在Renderware的光芒被Epic的Unreal引擎掩盖以前,它是最受开发人员欢迎的引擎。开发人员可以实时的控制技术和游戏进程,例如:在不修改底层代码的情况下改变一个角色的着装,而且不用重新渲染整个场景。开发人员还可以实时控制基本物理工作,像跳跃和移动。

发布日期:1996年
值得关注的游戏:Airport Tycoon, Apache Air Assault, Bratz: Rock Angelz, Broken Sword: The Sleeping Dragon, Burnout Paradise, Chinese Paladin 4, Cold Fear, Commandos: Strike Force, Dream of Mirror Online, Evolution GT, Frank Herbert's Dune, G-Nome, kill.switch, Madagascar, Manhunt, Red Jets, Startdon 3, Super-Bikes Riding Challenge, Tony Hawk's Pro Skater 3, 4, and Underground, Trickstyle
Quake II / id Tech 2

上一代Quake提供了硬件图形加速功能,Quake II则一开始就提供了本地OpenGL支持。Quake II引擎——现在被称为id Tech 2的其他功能有彩色光线效果,新的开发方式——C代码和DLL(动态链接库),而不再是原来的QuakeC语言脚本。简单来说,这允许软件和OpenGL渲染,而不再是单一的一方或者另一方,没有Voodoo图形卡的用户也能体验到游戏乐趣了。



Quake II另外一个重要的功能就是MOD支持。因为DLL也被用于游戏,id公司在modding社区公布其游戏源代码(只在2001年做过),当然,引擎代码是不会公布的。这款引擎是如此强大,精明的开发者能用它开发一部完整的RPG游戏(如Anachronox)和增加新功能(比如肢解)。

还记得吗?臭名昭著的Daikatana就是采用了Quake II引擎。



发布时间:1997年
值得关注的游戏:Anachronox, CodeRED: Alien Arena, Daikatana, Heretic II, Kingpin: Life of Crime, SiN, Soldier of Fortune, UFO: Alien Invasion, Warsow

Cyan Plasma

远离硅谷的北卡罗来纳州教堂山一个名叫Headspin的公司开发了Plasma引擎。Headspin团队——呃,只有两个人——把他们的2D引擎授权出售给电子图书出版商,用这些收入支持3D引擎的开发。很幸运,他们成功了,Headspin签署了一项协议,把Plasma授权给Cyan,后者为团队提供了资源支持使得这款引擎顺利开发出来。

第一版的Plasma吹嘘支持DirectX7.0,作为一个富有开拓力的开发商,Cyan宣称:“你可能不会在Plasma里尝试一下飞行模拟,但是你可以创造任何类型的地面角色周游世界、触发任务的游戏。



尽管早期版本的plasma支持无限的纹理混合、射入和反射,最大的粒子系统,最多的动画,修订后增加了一些新的功能,如绑定Havok物理引擎(后改为PhysX物理卡支),多人网络支持,Bloom HDR光影效果,最近的版本还提供了DirectX 9支持。



Plasma最著名的游戏是realMyst(过去被称为Myst 3D),它还有一些其他的Myst作品。

发布日期:1998年
值得关注的游戏:Hex Isle, Myst V: End of Ages, realMyst, Uru Live, Uru: Ages Beyond Myst

GoldSRC

概括来说,GoldSRC,这一调整后的Quake引擎巩固了PC机作为强大的游戏平台的地位——至少在它占领市场期间。GoldSRC支持OpenGL和Direct3D,而且名下有很多大牌游戏:Half-Life(半条命)、Team Frotress Classic、Day of Defeat、Counter Strike(反恐精英,地球人都知道)。简而言之,GoldSRC促进了3D图形卡的发展及其API支持,丰富了玩家的游戏列表。



尽管究其根源,Goldsrc和Quake同出一家,一位半条命的开发人员称,70%的代码是重新编写的,包括D3D支持,Valve还为其增加了一个骨骼框架。



发布日期:1998年
值得关注的游戏:Day of Defeat, Deakthmatch Classic, Counter Strike, Counter Strike: Condition Zero, Gunman Chronicles, James Bond 007, Half Life, Half Life: Blue Shift, half Life: Opposing Force, Richochet

Unreal

Unreal开始是作为一个严格意义上的FPS游戏引擎出现的,但它后来也成了一些RPG游戏的基础,其中最有名的应该是Mass Effect(质量效应),但是真正使它闻名的是Unreal和Unreal Tournament(虚幻竞技场)。



Unreal引擎是id Software公司Quake II/id Tech2引擎的主要竞争对手,和后者一样,Unreal在modding社区很受欢迎。除了它自己的脚本语言(UnrealScript)捆绑游戏外,Epic还提供了一个地图编辑器和修改程序用的工具UnrealEd。

Unreal引擎同时使用了硬件和软件渲染、碰撞检测和彩色光影以及一个初步的纹理过滤。它很大程度上采用AMD公司的3DNow!和Intel的MMX、SSE指令集。但是,为了充分发挥Unreal引擎的功能——它严重依赖Glide API,一个高级的3dfx 图形卡是必须的。



发布日期:1998年
值得关注的游戏:Deus Ex, Harry Potter, Rune, Start Trek: Deep Space Nine: The Fallen, Unreal, Unreal Tournament, X-COM: Enforcer

Lithtech

Lithtech开始是Monolith和微软协作开发的,一度被称为DirectEngine,一部分由软件渲染,一部分由DirectX渲染。这种情况并没有持续太久,Monolith和微软分道扬镳后,买回了它的全部版权并重新命名为Lithtech。

早期,Lithtech可以被称为“穷人的引擎”。Atlantis: The Lost Empire(亚特兰蒂斯:失落的帝国),2001年8月在Maximum PC上有这款游戏的评测,“第一印象是盒子上的Lithtech图标,这和No One Lives Forever(无人永生)有这显著的区别。Lithtech是廉价、流畅游戏的选择。对客户来说,这款游戏不值得为Quake或Unreal买单。”



“Lithtech可以被认为——即使不是伟大的,也是一个合格的引擎!”虽然Lithtech的开发已经持续了很多年,NOLF仍然保持着引擎活跃的生命力直到它被重新命名,这次它叫Jupiter Extended, 或Jupiter EX。作为Lithtech技术上的第四版,Jupiter EX支持DirectX 9,采用了新的光线模型,Havok物理加速,新的内容开发工具,这款引擎曾被用于F.E.A.R.和F.E.A.R. 2



发布日期:1998年
值得关注的游戏:Aliens vs Predator 2, Blood II: The Chosen, F.E.A.R., F.E.A.R. 2, The Matrix Online, Might and Magix
IX, No One Lives Forever, Tron 2.0

Outcast

Outcast是一个很受欢迎的voxel(volume pixels这两个单词的组合,即为立体像素)引擎,Outcast摒弃了硬件加速而全部采用软件为基础的模式。这意味着,玩家不需要购买一个3D图形卡来运行基于Outcast引擎开发的游戏,包括《Outcast》,这个引擎更适合冒险解谜类游戏。但是,玩家需要一个快速的CPU,比如当时的奔三500MHz或更高。



由于Outcast采用了voxel技术,所以它在渲染远距离对象方面要优于基于多边形的引擎。此外,它还包含了一些其他的小功能,如镜头光晕,凹凸映射,抗锯齿,动态遮罩,先进的粒子系统,骨骼动画,还支持第一和第三人称视角。

发布日期:1999年
值得关注的游戏:Outcast

原创粉丝点击