游戏引擎发展史(上)
游戏引擎(Game Engine )是什么?大多数人给出的解释都是基于engine 的英文翻译,将游戏引擎等同于汽车中的引擎(发动机),再好一些的解释成动力,这些解释都对,但是动力只说并不全面,不能完整反映出游戏引擎在游戏中的作用与地位。
布加迪威龙之所以强大就是源自其W16发动机
先举一个简单例子,在某游戏中的一个场景中,玩家控制的角色躲藏在屋子里,敌人正在屋子外面搜索玩家。突然,玩家控制的是一个穿迷彩服的士兵,突然碰倒了桌子上的一个杯子,杯子坠地发出破碎声,敌人在听到屋子里的声音之后聚集到玩家所在位置,玩家开枪射击敌人,子弹引爆了周围的易燃物,产生爆炸效果。在这个简单而常见的过程中,游戏引擎便在后台起着作用,控制着游戏中的一举一动。
一些游戏中常见的场景都是引擎在后台起着作用
把这个过程用专业们的语言分解一下就会变成这样:首先出场的是可以行动的士兵,也就是人物模型。模型由引擎中的动画系统赋予运动能力,游戏中角色能做出什么动作便取决于动画系统有多强大。人物的真实程度则取决于3D 模型渲染引擎的能力,这也是游戏引擎最重要的功能之一,游戏的画质高低便由它来决定。之后,士兵碰倒了杯子,这个过程涉及到引擎的碰撞检测,它可以决定不同的物体在接触的时候会产生什么样的结果,有的游戏能穿墙有的则不能便是不同的碰撞检测控制的。例子中设定的是把杯子碰倒了,杯子发出了破碎声。在发生某种动作的同时发出相应的声音则属于引擎中的音效处理了。杯子破碎的声音吸引了敌人的注意,这是引擎中的AI 智能运算在起作用,最后双方交火引发爆炸,爆炸产生的烟雾、爆炸物飞散则是引擎中的物理效果在起作用了。
可以说,游戏引擎虽然有着“动力(Engine )”之名,但是其实际上却是行“大脑(brain )”之实,指挥控制着游戏中各种资源。游戏引擎的准确定义也是如此,“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”通常来讲,游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。(引自wikipedia )
[2.游戏引擎与游戏开发]
十几年前的游戏都很简单(以现在的眼光来看),容量大小都是以M 计,通常一款游戏的开发周期在8到10个月左右,最主要的是,每款游戏开发都需要重头编写代码,期间存在着大量的重复劳动,耗时耗力。慢慢地,开发人员总结出一个规律,某些游戏总是有些相同的代码,可以在同题材的游戏中应用,这样就可以大大减少游戏开发周期和开发费用,慢慢地这些通用的代码就形成了引擎的雏形,伴随着技术的发展,最终演变成今天这样的游戏引擎。
同样地,游戏引擎出现之后,也在另一方面促进着游戏开发。随着显卡性能越来越强,游戏的画质越来越高,游戏开发周期也越来越长,通常都会达到3到5年,自行开发游戏引擎的话时间还会更长,所以大多数游戏公司还是选择购买现成的游戏引擎,简化游戏的开发过程。
那么,实际的游戏开发过程中,游戏引擎是如何把游戏与显卡连接在一起的,游戏中的各种特效是如何调用显卡来实现的?这个问题如果要回答的很专业,恐怕不在笔者知识范围之内了,不过我们可以用很简单的方法来说解释一下。显卡是游戏的物理基础,所有游戏效果都需要一款性能足够的显卡才能实现,在显卡之上是各种图形API ,目前主流的是DirectX 和OpenGL ,我们所说的DX10、DX9就是这种规范,而游戏引擎则是建立在这种API 基础之上,控制着游戏中的各个组件以实现不同的效果。
在引擎之上,则是引擎开发商提供给游戏开发商的SDK 开发套件,这样游戏厂商的程序员和美工就可以利用现成的SDK 为自家的游戏加如自家建立的模型、动画以及画面效果,而最终的成品则是各种游戏。
整个关系可用下面的关系图来表示。
游戏引擎与GPU 的关系图
经过十多年的发展,游戏引擎的功能也越来越强大,涌现出一批比较知名的引擎如DOOM/Quake、Unreal 虚幻,那么这些引擎的成功之处在哪里呢?
[3 什么才是好的游戏引擎]
时至今日,游戏引擎已从早期游戏开发的附属变成了今日的当家角色,对于一款游戏来说,能实现什么样的效果,很大程度上取决于使用的引擎由多么强力。如果对什么才是优秀的游戏引擎做个判断,那么优秀的游戏引擎一定具有如下优点:
1. 完整的游戏功能。随着游戏要求的提高,现在的游戏引擎不再是一个简单的3D 图形引擎,而是涵盖3D 图形、音效处理、AI 运算、物理碰撞等游戏中的各个组件,组件设计也应该是模块化的,可以按需购买。以这两年最成功的虚幻3引擎为例,虽然全部授权金(不包括售后技术服务)高达几十万甚至上百万美元,但是可以分别购买相关组件,降低授权费用。
2. 强大的编辑器和第三方插件。优秀的游戏引擎还要具备强大的编辑器,包括场景编辑、模型编辑、动画编辑等,编辑器的功能越强大,美工人员可发挥的余地就越大,做出的效果也越多。而插件的存在,使得第三方软件如3DS Max 、Maya 可以与引擎对接,无缝实现模型的导入导出。
3. 简洁有效的SDK 接口。优秀的引擎会把复杂的图像算法封装在模块内部,对外提供的则是简洁有效的SDK 接口,有助于游戏开发人员迅速上手,这一点就如各种编程语言一样,越高级的语言越容易使用。
4. 其他辅助支持。优秀的游戏引擎还提供网络、数据库、脚本等功能,这一点对于面向网游的引擎来说更为重要,网游还要考虑服务器端的状况,要在保证优异画质的同时降低服务器端的极高压力。
以上四条对于今天的游戏引擎来说不成问题,当我们回头历数过去的游戏引擎,便会发现这些功能也都是从无到有慢慢发展起来的,早期的游戏引擎在今天看来已经没有什么优势,但是正是这些先行者推动了今日的发展。
[4.3D游戏引擎始祖―《Wolfenstein 3D 》]
谈及游戏引擎,有一家游戏公司最应该被提起,也有一个人最不应该忘记,那就是ID software 和它的创始人之一约翰? 卡马克(John D. Carmack )。据说这家公司仅有13名固定员工,而且停车场也只停13辆法拉利跑车,从这一八卦中可以看出大家都很关注这家公司是如何的盛产富翁,但是这群狂人开发的游戏技术更为傲人。
1990年,卡马克和id 的另一巨头罗梅洛制作了一款小游戏《Commander Keen 》(《指挥官基恩》),在PC 机上首次实现了卷轴类游戏背景的流畅效果,后来他们又花了一个晚上的时间把当时的街机游戏《超级玛丽》移植到PC 机上,实现了流畅的横板效果。他们把PC 版《超级玛丽》发给任天堂,希望借此吸引任天堂的兴趣。当然,任天堂也确实很有兴趣,夸奖了他们几句,不过并
无下文(大人物未成名之前总是被另一个大人物无视)。1991年,卡马克和罗梅洛成立了ID Software ,开始自主创业。
后面的事就很简单了,凭借着过人的技术和狂热的信念,id 公司创造了一个又一个技术巅峰。没多久,他们推出了《Wolfenstein 3D 》(德军总部3D )。这款游戏的画面在现在看来不值一提,但是却是3D 射击游戏之祖,卡马克也因此获得了“FPS游戏之父”的称号。
《重返德军总部3D 》成了游戏引擎的始祖
作为最早的3D 游戏引擎之一,《Wolfenstein 3D 》(德军总部3D )使用了一种射线追踪技术来渲染游戏内的物体(严格来说,《Wolfenstein 3D 》还是一种伪3D )。游戏中每个像素会发射一道光束,如果这道光束碰到了障碍物形成反射,游戏就会按照设定好的程序在障碍物的相应位置创建单维深度缓存(di mensional depth buffer ),建立纹理图像。
《Wolfenstein 3D 》开创了3D 射击游戏时代,其独创性的3D 技术也为其他游戏所采用,Blake Stone , Corridor 7,Operation Body Count 、Super Noah's Ark 3D (超级诺亚方舟3D )、 Rise of the Triad (算是《Wolfenstei n 3D 》的续作,增加了跳跃和低头抬头等动作),还有一直未发售的 Hellraise r (养鬼吃人)等游戏都沿用了卡马克这一技术。
[5.《DOOM 》问世―Id系列引擎之Id Tech 1 ]
注:Id 公司为自家的引擎技术划代为Id Tech ,DOOM 引擎正是Id Tech 1,后文都将按照这个序列来写。
《Wolfenstein 3D 》只是ID 小试身手,1993年ID 公司推出的DOOM (毁灭战士)游戏引擎才是引擎技术的代表。DOOM 引擎改善了《Wolfenstein 3D 》引擎中的一些缺陷,如所有房间的高度都是相同的,所有墙壁都是垂直的,运动也只能直线前进或后退等,并且加入了许多新效果。
在DOOM 中,角色与游戏中的物品的互动性进一步增强,楼梯、楼梯上的花朵以及路桥已经可升可降。游戏中的光照效果也不再单一,不同的单位也有了
不同的亮度,此外DOOM 引擎还支持立体声音效,环境的定位感更真实。这些效果在3D 显卡都没有问世的1993年毫无疑问是非常激动人心的进步。
DOMM 一代的画面
凭借自身的过人之处,DOOM 获得了350万的销量,为ID 公司带来了滚滚财源。更重要的是,DOOM 成了ID 公司第一款用于商业授权的引擎,从DOO M 开始,游戏公司又多了一条创收之路。当时使用过DOOM 引擎的游戏主要有:Raven 公司的《ShadowCaster 》(投影者)、《Heretic 》(1994)、《Hexe n 》(1995)、Rogue Entertainment 公司的《Strife 》、《HacX 》(免费) 以及美国 Marine 公司的《Marine Doom 》等等。这些游戏全都使用了DOOM 引擎,其中Raven 公司于ID 公司的合作最为紧密,出品的三款DOOM 引擎游戏也较为知名。
DOOM 发售一年之后,ID 又推出了DOOM 系列的第二部作品《DOOM :H ell on Earth 》。凭借id 的号召和一代的影响力,DOOM II 获得了94年度的最佳原创幻想/科幻电脑游戏大奖,在销量和口碑上再创新高。
不过,从技术角度来讲,DOOM II 上并没有什么创新之处,使用的DOOM ,也没带来新颖的图形技术,就连游戏中的怪物和武器也没有新增多少。虽然id 公司在1995年发布了一款扩展包《Master Levels for Doom II 》,但是人们还是更期待《DOOM III 》,只是这个期待要很长时间,《DOOM III 》在10年后的2004年才正式发布。
[6.雷神问世―ID系列引擎之《Quake 》 ]
就在DOOM 系列热火朝天的时候,Id 公司又于1996年发售了另一款新型游戏《Quake 》,相比《DOOM 》使用的将拥有高度信息的二维地图渲染成3D 图像的伪3D 引擎,Quake 引擎是实实在在的3D 引擎。
真正3D 模式的Quake 引擎
Quake 引擎是当时第一款完全支持多边形模型、动画和粒子特效的引擎,而在技术之外,《Quake 》的游戏操控方式也树立了FPS 游戏的标准。游戏采
用流动控制方案(fluid control scheme ),它使用鼠标来观看/瞄准/定向以及用键盘前进/后退/侧移,这也成了FPS 游戏最普遍的操控模式,直到今日仍没有变化。
Quake 的出现为FPS 游戏建立了经典的操控方式
使用《Quake 》引擎的主要是Id 自己的《Quake 》和《Quake World 》系列、《HeXen II 》(异教徒)、MageSlayer 、Nexuiz (鏖战废土)、Day of D efeat (胜利之日),还有大名鼎鼎的《Half life:》(半条命)以及《Half life 》扩展出来的《反恐精英》。
大名鼎鼎的CS 使用的便是Quake 引擎
[7.多彩光影效果―ID公司系列引擎之Id Tech2 ]
90年代的Id 公司相当勤奋,几乎是每年推出一部新游戏,而且每次都能或多或少地带给人们不少惊喜。《Quake 》一年之后,Id 又发售了《Quake II 》,
采用的引擎也升级为Id Tech2。
《Quake II 》
1997年的时候,当时3D 加速卡(显卡那是都叫3D 加速卡)已经兴起,《Q uake II 》引擎已经支持硬件3D 加速,当时较为知名的3D API 是OpenGL ,《Q uake 》也因此重点优化了OpenGL 性能,这也奠定了Id 公司系列游戏多为Op enGL 渲染的基础。
《Quake II 》首次实现了彩色光影效果
Id Tech2引擎添加了256色材质贴图,首次实现了彩色光影效果,使得游戏中的物体在反射光影时候能展现出不同样的色彩效果,另外一个技术特性则是通过支持DLL (dynamic-link libraries ,动态链接库)文件实现了对软件渲染和OpenGL 渲染的支持。
基于Id Tech2引擎的游戏有《Quake II 》、《Anachronox 》(时空传奇)、《大刀》(Id 另一强人罗梅洛离开Id 之后开发的游戏)、《Soldier of Fortune 》(命运战士)、《半条命》(Quake 和Quake II 的代码都有)。
《大刀》是罗梅洛离开Id 之后使用《Quake II 》引擎制作的一款游戏
[8.3D加速卡时代来临―ID系列引擎之Id Tech3 ]
1999年,Id 又发布了《Quake III:Arena》,这是《Quake 》系列的第三步,也标志着Id 的引擎技术到了Id Tech3时代。在这一时代,Id Tec3已经不再支
持软件渲染,必须要有一款支持硬件加速的显卡才能运行。
《Quake II 》引擎需要一款硬件加速卡才能玩转
《Quake III 》引擎增加了32Bit 材质的支持,还直接支持高细节模型和动态光影。同时,引擎在地图中的各种材质、模型上,都表现出了极好的真实光线效果。《Quake III 》使用了革命性.MD3格式的人物模型,模型的采光使用了顶点光影(vertex animation) 技术,每一个人物都被分为不同段(头、身体等),并由玩家在游戏中的移动而改变实际的造型,游戏中真实感更强烈。
《Quake III:Team Arena 》
《Quake III 》拥有游戏内命令行的方式,几乎所有使用这款引擎的游戏都可以用`键调出游戏命令行界面,通过指令的形式对游戏进行修改,增强了引擎的灵活性。
《Quake III 》一款十分优秀的游戏引擎,即使是放到今天来讲,这款引擎仍有可取之处,即使画质可能不是第一流的了,但是其优秀的移植性、易用性、和灵活性使得它作为游戏引擎仍能发挥余热,使用《Quake III 》引擎的游戏数量众多,比如早期的《使命召唤》系列、《荣誉勋章》、《绝地武士2》、《星球大战》、《佣兵战场2》、《007》、《重返德军总部2》等等。
第一代的《使命召唤》使用了《Quake III 》引擎
[9.《DOOM3》震撼问世―ID系列引擎之Id Tech4
时间很快就到2004年,这一时代已经是DX9显卡的时代,但是人们关注的年度3D 大作仍是基于OpenGL 渲染的《DOOM3》,这也是Id 公司的第四代引擎―Id Tech 4的代表作。《DOOM3》命运多舛,03年的源码泄露事件使得《DOOM3》很受伤,但是也因此使得其强悍面画和要求为人所知。
DOOM3引擎的开山作
当时的《DOOM3》到底强到什么程度?id 自家人恐怕最清楚,《Doom3》的首席程序员罗布? 达菲曾经说过:“Doom3从任何角度而言都是最完美的,而且它几乎完全追随并引导了硬件的发展。以id software 的经验来看,Doom3估计又会被追捧至少5年,而在这5年里测试显卡FPS 的基准估计都会是它了。”(你这话太大了点,至少07年发布的《Crysis 》就超过了)。
在《DOOM3》中,即时光影效果成了主旋律,它不仅实现了静态光源下的即时光影,最重要的是通过shadow volume (阴影锥)技术,《DOOM3》引擎实现了动态光源下的即时光影在游戏中大规模的使用。
shadow volume (阴影锥)关闭(左)与开启(右)的效果对比
当然了,除了shadow volume (阴影锥)技术之外,《DOOM3》中的凹凸贴图、多边形、贴图、物理引擎和音效也都是非常出色的,可以说04年《DOO M3》一出,当时的显卡市场可谓一片哀嚎,GeForce FX 5800/Radeon 9700以下的显卡基本丧失了高画质下流畅运行的能力,强悍能力也只有现在的《Cry sis 》能与之相比了。
《Quake 4》是Id 公司目前最高级的引擎
由于DOOM3引擎的优秀,后续有一大批游戏都使用了这款引擎,包括《D OOM3》资料片《Resurrection of Evil 》(邪恶复苏)、 Id 自家的《Quake4》(实际是由Raven 公司捉刀)、Human Head Studios 的《Prey 》、Splash Damage 的《Enemy Territory: Quake Wars 》(敌占区:雷神战争)和《Bri nk 》、Raven 的《Wolfenstein 》(重返德军总部)等等。
Id Tech 5引擎能否让Id 公司站在引擎技术最前端?
现在,Id 公司还在进行着《DOOM4》的开发,引擎也升级到Id Tech5,虽然详细的技术规格仍然是迷,但是卡马克已经放言:“Doom4是一款为30帧而拼搏的作品,就像是应用了全新的引擎,它基于我们这四年来的研发成果。”如果他指的是游戏发布时的硬件水平,那么Id Tech5引擎恐怕又是高端显卡的坟墓了。
[10.另一巨头的崛起―虚幻竞技场引擎Unreal]
如果要找一个能跟Id 公司的Quake/DOOM游戏引擎相比肩的对手的话,那么EPIC 公司的Unreal 引擎无疑是最合适的。而且相比只负责3D 图像处理的Quake/DOOM引擎来讲,Unreal 涵盖的方面更多,涉及物理特性、动画演示、音频效果和碰撞检测等游戏的所有组件,也就是说Unreal 引擎的集成度更高,通用性更强。
注:Quake/DOOM后来也一样涉及到了物理碰撞、音频处理等内容,游戏引擎的发展即是向全能向发展。
1998年5月22日,大约在《Quake II 》发布后半年左右,由Epic Game
s 开发GT Interactive 发行了《Unreal 》问世,游戏中除了精致的建筑物外,还拥有许多游戏特效,比如荡漾的水波,美丽的天空,逼真的火焰、烟雾和力场,单纯从画面效果来看,《虚幻》是当之无愧的佼佼者。
最早的《虚幻》画面
虽然在彩色光照效果上被Quake II 引擎抢了先,但是Unreal 引擎依然拥有自己的独门秘籍。Unreal 引擎在彩色光照和纹理过滤上的软件渲染性能已经接近硬件级的加速,而且Unreal 引擎还支持当时CPU 刚刚集成的SIMD (单指令多数据)指令,比如AMD 新增的3DNOW !,Intel 的MMX 和SSE 指令集,这让它的性能进一步增强。
Unreal 问世的时候,大行其道的图形接口还是3Dfx 的Glide ,性能最强的显卡也是3Dfx 的Voodoo 5,微软的DX 规范占据主流之后,Unreal 引擎又很快支持DX ,而对OpenGL 规范虽然也有支持,但是一直不太顺,性能也不够好,所以Unreal 引擎慢慢就变成了专司DX 规范了。
得益于画面精美和DX 规范的通用性,Unreal 很快就得到了18款游戏的支持,包括《Unreal 》、《Unreal Tournament 》、《哈利波特》、《Rune 》、《Deus Ex 》等都用Unreal 引擎实现了不同的游戏效果。而且,由于Unreal 引擎的通用性,除了游戏,它还广泛使用在3D 建模、建筑设计、动作捕捉、电影特效等等领域。
《Deus Dex 》就使用了虚幻1引擎