游戏引擎(GameEngine)是什么?大多数人给出的解释都是基于engine的英文翻译,将游戏引擎等同于汽车中的引擎(发动机),再好一些的解释成动力,这些解释都对,但是动力只说并不全面,不能完整反映出游戏引擎在游戏中的作用与地位。布加迪威龙之所以强大就是源自其W16发动机先举一个简单例子,在某游戏中的一个场景中,玩家控制的角色躲藏在屋子里,敌人正在屋子外面搜索玩家。突然,玩家控制的是一个穿迷彩服的士兵,突然碰倒了桌子上的一个杯子,杯子坠地发出破碎声,敌人在听到屋子里的声音之后聚集到玩家所在位置,玩家开枪射击敌人,子弹引爆了周围的易燃物,产生爆炸效果。在这个简单而常见的过程中,游戏引擎便在后台起着作用,控制着游戏中的一举一动。一些游戏中常见的场景都是引擎在后台起着作用把这个过程用专业们的语言分解一下就会变成这样:首先出场的是可以行动的士兵,也就是人物模型。模型由引擎中的动画系统赋予运动能力,游戏中角色能做出什么动作便取决于动画系统有多强大。人物的真实程度则取决于3D模型渲染引擎的能力,这也是游戏引擎最重要的功能之一,游戏的画质高低便由它来决定。之后,士兵碰倒了杯子,这个过程涉及到引擎的碰撞检测,它可以决定不同的物体在接触的时候会产生什么样的结果,有的游戏能穿墙有的则不能便是不同的碰撞检测控制的。例子中设定的是把被子碰倒了,被子发出了破碎声。在发生某种动作的同时发出相应的声音则属于引擎中的音效处理了。被子破碎的声音吸引了敌人的注意,这是引擎中的AI智能运算在起作用,最后双方交火引发爆炸,爆炸产生的烟雾、爆炸物飞散则是引擎中的物理效果在起作用了。可以说,游戏引擎虽然有着“动力(Engine)”之名,但是其实际上却是行“大脑(brain)”之实,指挥控制着游戏中各种资源。游戏引擎的准确定义也是如此,“用于控制所有游戏功能的主程序,从计算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音等等。”通常来讲,游戏引擎包含以下系统:渲染引擎(即“渲染器”,含二维图像引擎和三维图像引擎)、物理引擎、碰撞检测系统、音效、脚本引擎、电脑动画、人工智能、网络引擎以及场景管理。(引自wikipedia)十几年前的游戏都很简单(以现在的眼光来看),容量大小都是以M计,通常一款游戏的开发周期在8到10个月左右,最主要的是,每款游戏开发都需要重头编写代码,期间存在着大量的重复劳动,耗时耗力。慢慢地,开发人员总结出一个规律,某些游戏总是有些相同的代码,可以在同题材的游戏中应用,这样就可以大大减少游戏开发周期和开发费用,慢慢地这些通用的代码就形成了引擎的雏形,伴随着技术的发展,最终演变成今天这样的游戏引擎。同样地,游戏引擎出现之后,也在另一方面促进着游戏开发。随着显卡性能越来越强,游戏的画质越来越高,游戏开发周期也越来越长,通常都会达到3到5年,自行开发游戏引擎的话时间还会更长,所以大多数游戏公司还是选择购买现成的游戏引擎,简化游戏的开发过程。那么,实际的游戏开发过程中,游戏引擎是如何把游戏与显卡连接在一起的,游戏中的各种特效是如何调用显卡来实现的?这个问题如果要回答的很专业,恐怕不在笔者知识范围之内了,不过我们可以用很简单的方法来说解释一下。显卡是游戏的物理基础,所有游戏效果都需要一款性能足够的显卡才能实现,在显卡之上是各种图形API,目前主流的是DirectX和OpenGL,我们所说的DX10、DX9就是这种规范,而游戏引擎则是建立在这种API基础之上,控制着游戏中的各个组件以实现不同的效果。在引擎之上,则是引擎开发商提供给游戏开发商的SDK开发套件,这样游戏厂商的程序员和美工就可以利用现成的SDK为自家的游戏加如自家建立的模型、动画以及画面效果,而最终的成品则是各种游戏。整个关系可用下面的关系图来表示。游戏引擎与GPU的关系图经过十多年的发展,游戏引擎的功能也越来越强大,涌现出一批比较知名的引擎如DOOM/Quake、Unreal虚幻,那么这些引擎的成功之处在哪里呢?[3什么才是好的游戏引擎]时至今日,游戏引擎已从早期游戏开发的附属变成了今日的当家角色,对于一款游戏来说,能实现什么样的效果,很大程度上取决于使用的引擎由多么强力。如果对什么才是优秀的游戏引擎做个判断,那么优秀的游戏引擎一定具有如下优点:1.完整的游戏功能。随着游戏要求的提高,现在的游戏引擎不再是一个简单的3D图形引擎,而是涵盖3D图形、音效处理、AI运算、物理碰撞等游戏中的各个组件,组件设计也应该是模块化的,可以按需购买。以这两年最成功的虚幻3引擎为例,虽然全部授权金(不包括售后技术服务)高达几十万甚至上百万美元,但是可以分别购买相关组件,降低授权费用。2.强大的编辑器和第三方插件。优秀的游戏引擎还要具备强大的编辑器,包括场景编辑、模型编辑、动画编辑等,编辑器的功能越强大,美工人员可发挥的余地就越大,做出的效果也越多。而插件的存在,使得第三方软件如3DSMax、Maya可以与引擎对接,无缝实现模型的导入导出。3.简洁有效的SDK接口。优秀的引擎会把复杂的图像算法封装在模块内部,对外提供的则是简洁有效的SDK接口,有助于游戏开发人员迅速上手,这一点就如各种编程语言一样,越高级的语言越容易使用。4.其他辅助支持。优秀的游戏引擎还提供网络、数据库、脚本等功能,这一点对于面向网游的引擎来说更为重要,网游还要考虑服务器端的状况,要在保证优异画质的同时降低服务器端的极高压力。以上四条对于今天的游戏引擎来说不成问题,当我们回头历数过去的游戏引擎,便会发现这些功能也都是从无到有慢慢发展起来的,早期的游戏引擎在今天看来已经没有什么优势,但是正是这些先行者推动了今日的发展。谈及游戏引擎,有一家游戏公司最应该被提起,也有一个人最不应该忘记,那就是IDsoftware和它的创始人之一约翰?卡马克(JohnD.Carmack)。据说这家公司仅有13名固定员工,而且停车场也只停13辆法拉利跑车,从这一八卦中可以看出大家都很关注这家公司是如何的盛产富翁,但是这群狂人开发的游戏技术更为傲人。1990年,卡马克和id的另一巨头卡梅洛制作了一款小游戏《CommanderKeen》(《指挥官基恩》),在PC机上首次实现了卷轴类游戏背景的流畅效果,后来他们又花了一个晚上的时间把当时的街机游戏《超级玛丽》移植到PC机上,实现了流畅的横板效果。他们把PC版《超级玛丽》发给任天堂,希望借此吸引任天堂的兴趣。当然,任天堂也确实很有兴趣,夸奖了他们几句,不过并无下文(大人物未成名之前总是被另一个大人物无视)。1991年,卡马克和卡梅洛成立了IDSoftware,开始自主创业。后面的事就很简单了,凭借着过人的技术和狂热的信念,id公司创造了一个又一个技术巅峰。没多久,他们推出了《Wolfenstein3D》(德军总部3D)。这款游戏的画面在现在看来不值一提,但是却是3D射击游戏之祖,卡马克也因此获得了“FPS游戏之父”的称号。《重返德军总部3D》成了游戏引擎的始祖作为最早的3D游戏引擎之一,《Wolfenstein3D》(德军总部3D)使用了一种射线追踪技术来渲染游戏内的物体(严格来说,《Wolfenstein3D》还是一种伪3D)。游戏中每个像素会发射一道光束,如果这道光束碰到了障碍物形成反射,游戏就会按照设定好的程序在障碍物的相应位置创建单维深度缓存(dimensionaldepthbuffer),建立纹理图像。游戏图像《Wolfenstein3D》开创了3D射击游戏时代,其独创性的3D技术也为其他游戏所采用,BlakeStone,Corridor7,OperationBodyCount、SuperNoah'sArk3D(超级诺亚方舟3D)、RiseoftheTriad(算是《Wolfenstein3D》的续作,增加了跳跃和低头抬头等动作),还有一直未发售的Hellraiser(养鬼吃人)等游戏都沿用了卡马克这一技术。注:Id公司为自家的引擎技术划代为IdTech,DOOM引擎正是IdTech1,后文都将按照这个序列来写。《Wolfenstein3D》只是ID小试身手,1993年ID公司推出的DOOM(毁灭战士)游戏引擎才是引擎技术的代表。DOOM引擎改善了《Wolfenstein3D》引擎中的一些缺陷,如所有房间的高度都是相同的,所有墙壁都是垂直的,运动也只能直线前进或后退等,并且加入了许多新效果。DOOM在DOOM中,角色与游戏中的物品的互动性进一步增强,楼梯、楼梯上的花朵以及路桥已经可升可降。游戏中的光照效果也不再单一,不同的单位也有了不同的亮度,此外DOOM引擎还支持立体声音效,环境的定位感更真实。这些效果在3D显卡都没有问世的1993年毫无疑问是非常激动人心的进步。DOMM一代的画面凭借自身的过人之处,DOOM获得了350万的销量,为ID公司带来了滚滚财源。更重要的是,DOOM成了ID公司第一款用于商业授权的引擎,从DOOM开始,游戏公司又多了一条创收之路。当时使用过DOOM引擎的游戏主要有:Raven公司的《ShadowCaster》(投影者)、《Heretic》(1994)、《Hexen》(1995)、RogueEntertainment公司的《Strife》、《HacX》(免费)以及美国Marine公司的《MarineDoom》等等。这些游戏全都使用了DOOM引擎,其中Raven公司于ID公司的合作最为紧密,出品的三款DOOM引擎游戏也较为知名。DOOM发售一年之后,ID又推出了DOOM系列的第二部作品《DOOM:HellonEarth》。凭借id的号召和一代的影响力,DOOMII获得了94年度的最佳原创幻想/科幻电脑游戏大奖,在销量和口碑上再创新高。DOOMII游戏不过,从技术角度来讲,DOOMII上并没有什么创新之处,使用的DOOM,也没带来新颖的图形技术,就连游戏中的怪物和武器也没有新增多少。虽然id公司在1995年发布了一款扩展包《MasterLevelsforDoomII》,但是人们还是更期待《DOOMIII》,只是这个期待要很长时间,《DOOMIII》在10年后的2004年才正式发布。就在DOOM系列热火朝天的时候,Id公司又于1996年发售了另一款新型游戏《Quake》,相比《DOOM》使用的将拥有高度信息的二维地图渲染成3D图像的伪3D引擎,Quake引擎是实实在在的3D引擎。真正3D模式的Quake引擎Quake引擎是当时第一款完全支持多边形模型、动画和粒子特效的引擎,而在技术之外,《Quake》的游戏操控方式也树立了FPS游戏的标准。游戏采用流动控制方案(fluidcontrolscheme),它使用鼠标来观看/瞄准/定向以及用键盘前进/后退/侧移,这也成了FPS游戏最普遍的操控模式,直到今日仍没有变化。Quake的出现为FPS游戏建立了经典的操控方式使用《Quake》引擎的主要是Id自己的《Quake》和《QuakeWorld》系列、《HeXenII》(异教徒)、MageSlayer、Nexuiz(鏖战废土)、DayofDefeat(胜利之日),还有大名鼎鼎的《Halflife:》(半条命)以及《Halflife》扩展出来的《反恐精英》。大名鼎鼎的CS使用的便是Quake引擎90年代的Id公司相当勤奋,几乎是每年推出一部新游戏,而且每次都能或多或少地带给人们不少惊喜。《Quake》一年之后,Id又发售了《QuakeII》,采用的引擎也升级为IdTech2。《QuakeII》1997年的时候,当时3D加速卡(显卡那是都叫3D加速卡)已经兴起,《QuakeII》引擎已经支持硬件3D加速,当时较为知名的3DAPI是OpenGL,《Quake》也因此重点优化了OpenGL性能,这也奠定了Id公司系列游戏多为OpenGL渲染的基础。《QuakeII》首次实现了彩色光影效果IdTech2引擎添加了256色材质贴图,首次实现了彩色光影效果,使得游戏中的物体在反射光影时候能展现出不同样的色彩效果,另外一个技术特性则是通过支持DLL(dynamic-linklibrarie