GameDesign 板


LINE

游戏引擎演化 出处: http://www.gameres.com 在阅读各种游戏介绍的时候我们常常会碰见"引擎"(Engine)这个单词,引擎在游戏中究 竟起着什麽样的作用?它的进化对於游戏的发展产生了哪些影响?希望下面这篇文章能为 大家释疑。 一、什麽是引擎 我们可以把游戏的引擎比作赛车的引擎,大家知道,引擎是赛车的心脏,决定着赛车的性 能和稳定性,赛车的速度、操纵感这些直接与车手相关的指标都是建立在引擎的基础上的 。游戏也是如此,玩家所体验到的剧情、关卡、美工、音乐、操作等内容都是由游戏的引 擎直接控制的,它扮演着中场发动机的角色,把游戏中的所有元素捆绑在一起,在後台指 挥它们同时、有序地工作。简单地说,引擎就是"用於控制所有游戏功能的主程序,从计 算碰撞、物理系统和物体的相对位置,到接受玩家的输入,以及按照正确的音量输出声音 等等。" 可见,引擎并不是什麽玄乎的东西,无论是2D游戏还是3D游戏,无论是角色扮演游戏、即 时策略游戏、冒险解谜游戏或是动作射击游戏,哪怕是一个只有1兆的小游戏,都有这样 一段起控制作用的代码。经过不断的进化,如今的游戏引擎已经发展为一套由多个子系统 共同构成的复杂系统,从建模、动画到光影、粒子特效,从物理系统、碰撞检测到档管理 、网路特性,还有专业的编辑工具和插件,几乎涵盖了开发过程中的所有重要环节,以下 就对引擎的一些关键部件作一个简单的介绍。 首先是光影效果,即场景中的光源对处於其中的人和物的影响方式。游戏的光影效果完全 是由引擎控制的,折射、反射等基本的光学原理以及动态光源、彩色光源等高级效果都是 通过引擎的不同编程技术实现的。 其次是动画,目前游戏所采用的动画系统可以分为两种:一是骨骼动画系统,一是模型动 画系统,前者用内置的骨骼带动物体产生运动,比较常见,後者则是在模型的基础上直接 进行变形。引擎把这两种动画系统预先植入游戏,方便动画师为角色设计丰富的动作造型 。 引擎的另一重要功能是提供物理系统,这可以使物体的运动遵循固定的规律,例如,当角 色跳起的时候,系统内定的重力值将决定他能跳多高,以及他下落的速度有多快,子弹的 飞行轨迹、车辆的颠簸方式也都是由物理系统决定的。 碰撞探测是物理系统的核心部分,它可以探测游戏中各物体的物理边缘。当两个3D物体撞 在一起的时候,这种技术可以防止它们相互穿过,这就确保了当你撞在墙上的时候,不会 穿墙而过,也不会把墙撞倒,因为碰撞探测会根据你和墙之间的特性确定两者的位置和相 互的作用关系。 渲染是引擎最重要的功能之一,当3D模型制作完毕之後,美工会按照不同的面把材质贴图 赋予模型,这相当於为骨骼蒙上皮肤,最後再通过渲染引擎把模型、动画、光影、特效等 所有效果即时计算出来并展示在萤幕上。渲染引擎在引擎的所有部件当中是最复杂的,它 的强大与否直接决定着最终的输出品质。 引擎还有一个重要的职责就是负责玩家与电脑之间的沟通,处理来自键盘、滑鼠、摇杆和 其他外设的信号。如果游戏支援联网特性的话,网路代码也会被集成在引擎中,用於管理 用户端与伺服器之间的通信。 通过上面这些枯燥的介绍我们至少可以了解到一点:引擎相当於游戏的框架,框架打好後 ,关卡设计师、建模师、动画师只要往里填充内容就可以了。因此,在3D游戏的开发过程 中,引擎的制作往往会占用非常多的时间,《马科斯·佩恩》的MAX-FX引擎从最初的雏形 Final Reality到最终的成品共花了四年多时间,LithTech引擎的开发共花了整整五年时 间,耗资700万美元,Monolith公司(LithTech引擎的开发者)的老板詹森·霍尔甚至不 无懊悔地说:"如果当初意识到制作自己的引擎要付出这麽大的代价的话,我们根本就不 可能去做这种傻事。没有人会预料得到五年後的市场究竟是怎样的。" 正是出於节约成本、缩短周期和降低风险这三方面的考虑,越来越多的开发者倾向于使用 第三方的现成引擎制作自己的游戏,一个庞大的引擎授权市场已经形成。 二、引擎的进化 曾经有一段时期,游戏开发者关心的只是如何尽量多地开发出新的游戏并把它们推 销给玩家。尽管那时的游戏大多简单粗糙,但每款游戏的平均开发周期也要达到8到10个 月以上,这一方面是由於技术的原因,另一方面则是因为几乎每款游戏都要从头编写代码 ,造成了大量的重复劳动。渐渐地,一些有经验的开发者摸索出了一条偷懒的方法,他们 借用上一款类似题材的游戏中的部分代码作为新游戏的基本框架,以节省开发时间和开发 费用。根据马老先生的生产力学说,单位产品的成本因生产力水准的提高而降低,自动化 程度较高的手工业者最终将把那些生产力低下的手工业者淘汰出局,引擎的概念就是在这 种机器化作业的背景下诞生的。 每一款游戏都有自己的引擎,但真正能获得他人认可并成为标准的引擎并不多。纵观九年 多的发展历程,我们可以看出引擎最大的驱动力来自於3D游戏,尤其是3D射击游戏。尽管 像Infinity这样的2D引擎也有着相当久远的历史,从《博多之门》(Baldur's Gate)系 列到《异域镇魂曲》(Planescape:Torment)、《冰风谷》(Icewind Dale)直至今年 夏天将要发布的《冰风谷2》,但它的应用范围毕竟局限于"龙与地下城"风格的角色扮演 游戏,包括颇受期待的《夜在绝冬城》(Neverwinter Nights)所使用的Aurora引擎,它 们都有着十分特殊的使用目的,很难对整个引擎技术的发展起到推动作用,这也是为什麽 体育模拟游戏、飞行模拟游戏和即时策略游戏的引擎很少进入授权市场的原因,开发者即 便使用第三方引擎也很难获得理想的效果,采用《帝国时代2》(Age of Empires)引擎 制作的《星球大战:银河战场》(Star Wars:Galactic Battleground)就是一个最好的 例子。 因此,下面对引擎的历史回顾将主要围绕动作射击游戏的变迁展开,动作射击游戏同3D引 擎之间的关系相当於一对孪生兄弟,它们一同诞生,一同成长,互相为对方提供着发展的 动力。 引擎的诞生(1992年~1993年) 1992年,3D Realms公司/Apogee公司发布了一款只有2兆多的小游戏--《德军司令部》( Wolfenstein 3D),稍有资历的玩家可能都还记得初接触它时的兴奋心情,用"革命"这一 极富煽动色彩的词语也无法形容出它在整个电脑游戏发展史上占据的重要地位。这部游戏 开创了第一人称射击游戏的先河,更重要的是,它在X轴和Y轴的基础上增加了一根Z轴, 在由宽度和高度构成的平面上增加了一个向前向後的纵深空间,这根Z轴对那些看惯了2D 游戏的玩家造成的巨大冲击可想而知。 Wolfenstein 3D引擎的作者是大名鼎鼎的约翰·卡马克,这位元id Software公司的首席 程式师正是凭藉这款Wolfenstein 3D引擎在游戏圈里站稳了脚跟。事实上,《德军司令部 》并非第一款采用第一人称视角的游戏,在它发售前的几个月,Origin公司就已经推出了 一款第一人称视角的角色扮演游戏--《创世纪:地下世界》(Ultima Underworld),这 款角游戏采用了类似的技术,但它与Wolfenstein 3D引擎之间有着相当大的差别,举例来 说,《地下世界》的引擎支援斜坡,地板和天花板可以有不同的高度,分出不同的层次, 玩家可以在游戏中跳跃,可以抬头低头,这些特性Wolfenstein 3D引擎都无法做到,而且 从画面上看,《德军司令部》更接近漫画风格而不是传统的图元画面。 尽管从技术细节上看,Wolfenstein 3D引擎比不上《创世纪:地下世界》的引擎,但它却 更好地利用了第一人称视角的特点,快速火爆的游戏节奏使人们一下子记住了"第一人称 射击游戏"这个单词,而不是"第一人称角色扮演游戏"。《德军司令部》後来还发布过一 款名义上的续集--《三元的崛起》(Rise of the Triad),这款游戏在Wolfenstein 3D 引擎的基础上增加了许多重要特性,包括跳跃和抬头低头等动作。 引擎诞生初期的另一部重要游戏同样是出自id Software公司的一款非常成功的第一人称 射击游戏--《毁灭战士》(Doom)。Doom引擎在技术上大大超越了Wolfenstein 3D引擎, 《德军司令部》中的所有物体大小都是固定的,所有路径之间的角度都是直角,也就是说 你只能笔直地前进或後退,这些局限在《毁灭战士》中都得到了突破。尽管游戏的关卡还 是维持在2D平面上进行制作,没有"楼上楼"的概念,但墙壁的厚度可以为任意,并且路径 之间的角度也可以为任意,这使得楼梯、升降平台、塔楼和户外等各种场景成为可能。 由於Doom引擎本质上依然是二维的,因此可以做到同时在萤幕上显示大量角色而不影响游 戏的运行速度,这一特点为游戏创造出了一种疯狂刺激的动作风格,在这方面迄今为止大 约只有《英雄萨姆》(Serious Sam)系列能与之相比,除此之外还没有哪款3D引擎能在 大批敌人向你涌来的时候依然保持游戏的流畅,这也是为什麽如今市面上的大部分第一人 称射击游戏都在积极地培养玩家的战术运用能力、提高玩家的射击准确率而拒绝滥砍滥杀 的主要原因之一。值得一提的是,尽管Doom引擎缺乏足够的细节度,但开发者仍然在《毁 灭战士》中表现出了惊人的环境效果,其纯熟的设计技巧实在令人赞叹。 不过更值得纪念的是,Doom引擎是第一个被用於授权的引擎。1993年底,Raven公司采用 改进後的Doom引擎开发了一款名为《投影者》(ShadowCaster)的游戏,这是游戏史上第 一例成功的嫁接手术。1994年Raven公司采用Doom引擎开发《异教徒》(Heretic),为引 擎增加了飞行的特性,成为跳跃动作的前身。1995年Raven公司采用Doom引擎开发《毁灭 巫师》(Hexen),加入了新的音效技术、脚本技术以及一种类似集线器的关卡设计,使 你可以在不同关卡之间自由移动。Raven公司与id Software公司之间的一系列合作充分说 明了引擎的授权无论对於使用者还是开发者来说都是大有裨益的,只有把自己的引擎交给 更多的人去使用才能使引擎不断地成熟起来。 《毁灭战士》系列本身就相当成功,大约卖了350万套,而授权费又为id Software公司带 来了一笔可观的收入。在此之前引擎只是作为一种自产自销的开发工具,从来没有哪家游 戏商考虑过依靠引擎赚钱,Doom引擎的成功无疑为人们打开了一片新的市场。 引擎的转变(1994年~1997年) 在引擎的进化过程中,肯·西尔弗曼於1994年为3D Realms公司开发的Build引擎是一个重 要的里程碑,Build引擎的"肉身"就是那款家喻户晓的《毁灭公爵》(Duke Nukem 3D)。 《毁灭公爵》已经具备了今天第一人称射击游戏的所有标准内容,如跳跃、360度环视以 及下蹲和游泳等特性,此外还把《异教徒》里的飞行换成了喷气背包,甚至加入了角色缩 小等令人耳目一新的内容。在Build引擎的基础上先後诞生过14款游戏,例如《农夫也疯 狂》(Redneck Rampage)、《阴影武士》(Shadow Warrior)和《血兆》(Blood)等, 还有台湾艾生资讯开发的《七侠五义》,这是当时(至今依然是)国内不多的几款3D射击 游戏之一。Build引擎的授权业务大约为3D Realms公司带来了一百多万美元的额外收入, 3D Realms公司也由此而成为了引擎授权市场上的第一个"暴发户"。不过从总体来看, Build引擎并没有为3D引擎的发展带来任何质的变化,突破的任务最终由id Software公司 的《雷神之锤》(Quake)完成了。 《雷神之锤》紧跟在《毁灭公爵》之後发售,两者孰优孰劣一时之间成为玩家的热门话题 。从内容的精彩程度来看《毁灭公爵》超过《雷神之锤》不少,但从技术的先进与否来看 ,《雷神之锤》是毫无疑问的赢家。Quake引擎是当时第一款完全支援多边形模型、动画 和粒子特效的真正意义上的3D引擎,而不是Doom、Build那样的2.5D引擎。此外Quake引擎 还是连线游戏的始作俑者,尽管几年前的《毁灭战士》也能通过数据机连线对战,但最终 把网路游戏带入大众的视野之中的是《雷神之锤》,是它促成了电子竞技产业的发展。 一年之後,id Software公司推出《雷神之锤2》,一举确定了自己在3D引擎市场上的霸主 地位。《雷神之锤2》采用了一套全新的引擎,可以更充分地利用3D加速和OpenGL技术, 在图像和网路方面与前作相比有了质的飞跃,Raven公司的《异教徒2》(Heretic II)和 《军事冒险家》(Soldier of Fortune)、Ritual公司的《原罪》(Sin)、Xatrix娱乐 公司的《首脑:犯罪生涯》(Kingpin:Life of Crime)以及离子风暴工作室去年夏天刚 刚发布的《安纳克朗诺克斯》(Anachronox)都采用了Quake II引擎。 Quake II引擎的授权模式大致如下:基本许可费从40万美元到100万美元不等,版税金视 基本许可费的多少而定,40万美元的许可费大约需提取10%以上的版税金,100万美元的许 可费则提取很少一部分版税金。这样算下来,《雷神之锤2》通过引擎授权所获得的收入 至少有一千万美元,尽管游戏本身的销售业绩比起《毁灭战士》来要差很多,大约卖了 110多万套,收入在4500万美元左右,但在授权金这一块它所获得的盈利显然要远远高於 《毁灭战士》,此时的引擎已经从一种单纯的工具变成了一块令人垂涎欲滴的肥肉。 俗话说"一个巴掌拍不响",没有实力相当的竞争者,任何市场都无法发展起来的。正当 Quake II独霸整个引擎市场的时候,Epic Megagames公司(即现在的Epic游戏公司)的《 虚幻》(Unreal)问世了。毫不夸张,第一次运行这款游戏的时候,我的确被眼前的画面 惊呆了,尽管当时只是在300x200的解析度下运行的这款游戏(四大悲事之一:玩游戏机 器不够劲)。除了精致的建筑物外,游戏中的许多特效即便在今天看来依然很出色,荡漾 的水波,美丽的天空,庞大的关卡,逼真的火焰、烟雾和力场等效果。从单纯的画面效果 来看,《虚幻》是当之无愧的佼佼者,其震撼力完全可以与人们第一次见到《德军司令部 》时的感受相比。 Unreal引擎可能是使用最广的一款引擎,在推出後的两年之内就有18款游戏与Epic公司签 订了许可协定,这还不包括Epic公司自己开发的《虚幻》资料片《重返纳帕利》,其中比 较近的几部作品如第三人称动作游戏《北欧神符》(Rune)、角色扮演游戏《杀出重围》 (Deus Ex)以及永不上市的第一人称射击游戏《永远的毁灭公爵》(Duke Nukem Forever),这些游戏都曾经或将要获得不少好评。 Unreal引擎的应用范围不限於游戏制作,还涵盖了教育、建筑等其他领域。Digital Design公司曾与联合国教科文组织的世界文化遗产分部合作采用Unreal引擎制作过巴黎圣 母院的内部虚拟演示,Zen Tao公司采用Unreal引擎为空手道选手制作过武术训练软体, 另一家软体发展商Vito Miliano公司也采用Unreal引擎开发了一套名为"Unrealty"的建筑 设计软体,用於房地产的演示。 这款与《雷神之锤2》同时代的引擎经过不断的更新,至今依然活跃在游戏市场上,丝毫 没有显出老迈的迹象,实属难得。 引擎的革命(1998年~2000年) 游戏的图像发展到《虚幻》这里已经达到了一个天花板的高度,接下去的发展方向很明显 不可能再朝着视觉方面进行下去。前面说过,引擎技术对於游戏的作用并不仅局限於画面 ,它还影响到游戏的整体风格,例如,所有采用Doom引擎制作的游戏,无论是《异教徒》 还是《毁灭巫师》,都有着相似的内容,甚至连情节设定都如出一辙。玩家开始对端着枪 跑来跑去的单调模式感到厌倦,开发者们不得不从其他方面寻求突破,由此掀起了第一人 称射击游戏的一个新的高潮。 两部划时代的作品同时出现在1998年--Valve公司的《半条命》(Half-Life)和 LookingGlass工作室的《神偷:暗黑计画》(Thief:The Dark Project),尽管此前的 《系统震撼》(System Shock)等游戏也为引擎技术带来过许多新的特性,但没有哪款游 戏能像《半条命》和《神偷》那样对後来的作品以及引擎技术的进化造成如此深远的影响 。 曾获得无数大奖的《半条命》采用的是Quake和Quake II引擎的混合体,Valve公司在这两 部引擎的基础上加入了两个很重要的特性:一是脚本序列技术,这一技术可以令游戏以合 乎情理的节奏通过触动事件的方式让玩家真实地体验到情节的发展,这对於诞生以来就很 少注重情节的第一人称射击游戏来说无疑是一次伟大的革命;第二个特性是对人工智慧引 擎的改进,敌人的行动与以往相比明显有了更多的狡诈,不再是单纯地扑向枪口。这两个 特点赋予了《半条命》引擎鲜明的个性,在此基础上诞生的《要塞小分队》、《反恐精英 》和《毁灭之日》等优秀作品又通过网路代码的加入令《半条命》引擎焕发出了更为夺目 的光芒。 在人工智慧方面真正取得突破的游戏是Looking Glass工作室的《神偷:暗黑计画》,游 戏的故事发生在中古年代,玩家扮演一名盗贼,任务是进入不同的场所,在尽量不引起别 人注意的情况下窃取物品。《神偷》采用的是Looking Glass工作室自行开发的Dark引擎 ,Dark引擎在图像方面比不上《雷神之锤2》或《虚幻》,但在人工智慧方面它的水准却 远远高於後两者,游戏中的敌人懂得根据声音辨认你的方位,能够分辨出不同地面上的脚 步声,在不同的光照环境下有不同的目力,发现同伴的屍体後会进入警戒状态,还会针对 你的行动做出各种合理的反应,你必须躲在暗处不被敌人发现才有可能完成任务,这在以 往那些纯粹的杀戮游戏中是根本见不到的。如今的绝大部分第一人称射击游戏都或多或少 地采用了这种隐秘的风格,包括新近发布的《荣誉勳章:盟军进攻》(Medal of Honor: Allied Assault)。遗憾的是,由於Looking Glass工作室的过早倒闭,Dark引擎未能发 扬光大,除了《神偷:暗黑计画》外,采用这一引擎的只有《神偷2:金属时代》( Thief 2:The Metal Age)和《系统震撼2》等少数几款游戏。 受《半条命》和《神偷:暗黑计画》两款游戏的启发,越来越多的开发者开始把注意力从 单纯的视觉效果转向更具变化的游戏内容,其中比较值得一提的是离子风暴工作室出品的 《杀出重围》,《杀出重围》采用的是Unreal引擎,尽管画面效果十分出众,但在个体的 人工智慧方面它无法达到《神偷》系列的水准,游戏中的敌人更多的是依靠预先设定的场 景脚本做出反应,例如砸碎弹药盒可能会引起附近敌人的警惕,但这并不代表他听到了什 麽,打死敌人後周围的同夥可能会朝你站立的位置奔过来也可能会无动於衷,这些不真实 的行为即便在《荣誉勳章:盟军进攻》里也依然存在。图像的品质抵消了人工智慧方面的 缺陷,而真正帮助《杀出重围》在众多射击游戏中脱颖而出的则是它的独特风格,游戏含 有浓重的角色扮演成分,人物可以积累经验、提高技能,还有丰富的对话和曲折的情节。 同《半条命》一样,《杀出重围》的成功说明了敍事对第一人称射击游戏的重要性,能否 更好地支持游戏的敍事能力成为了衡量引擎的一个新标准。 从2000年开始3D引擎朝着两个不同的方向分化,一是如《半条命》、《神偷》和《杀出重 围》那样通过融入更多的敍事成分和角色扮演成分以及加强游戏的人工智慧来提高游戏的 可玩性,二是朝着纯粹的网路模式发展,在这一方面,id Software公司再次走到了整个 行业的最前沿,他们意识到与人斗才是其乐无穷,於是在Quake II出色的图像引擎的基础 上加入更多的网路成分,破天荒推出了一款完全没有单人过关模式的纯粹的网路游戏--《 雷神之锤3竞技场》(Quake III Arena),它与Epic公司稍後推出的《虚幻竞技场》( Unreal Tournament)一同成为引擎发展史上的一个转捩点。 随着Quake III引擎的大获成功,id Software公司在引擎授权市场上也大赚了一笔。 Raven公司再次同id Software公司合作,采用Quake III引擎制作了第一人称射击游戏《 星际迷航:精英部队》(Star Trek Voyager:Elite Force),此外这部引擎还被用於制 作第三人称动作游戏《重金属F.A.K.K. 2》(Heavy Metal F.A.K.K 2)和《艾丽丝漫游 魔境》(American McGee's Alice)、最近的两款二战题材的射击游戏《重返德军总部》 (Return to Castle Wolfenstein)和《荣誉勳章:盟军进攻》,以及开发中的《绝地放 逐者:绝地武士2》(Jedi Outcast:Jedi Knight II)。从地牢到外太空,从童话世界 到二战年代,从第一人称视角到第三人称视角,充分显示了Quake III引擎的强大潜力。 Epic公司的《虚幻竞技场》虽然比《雷神之锤3竞技场》落後了一步,但如果仔细比较一 下的话,你就会发现它的表现要略高出後者一筹。从画面方面看两者差不多打成平手,但 在联网模式上,它不仅提供有死亡竞赛模式,还提供有团队合作等多种激烈火爆的对战模 式,而且Unreal Tournament引擎不仅可以应用在动作射击游戏中,还可以为大型多人游 戏、即时策略游戏和角色扮演游戏提供强有力的3D支援。Unreal Tournament引擎在许可 业务方面的表现也超过了Quake III,迄今为止采用Unreal Tournament引擎制作的游戏大 约已经有20多款,其中包括《星际迷航深度空间九:坠落》(Star Trek Deep Space Nine:The Fallen)、《新传说》(New Legend)和《塞拉菲姆》(Seraphim)等。 在1998年到2000年期间迅速崛起的另一款引擎是Monolith公司的LithTech引擎,这款引擎 最初是用在机甲射击游戏《升刚》(Shogo)上的。前面说过,LithTech引擎的开发共花 了整整五年时间,耗资700万美元,功夫不负有心人,1998年LithTech引擎的第一个版本 推出之後立即引起了业界的主意,为当时处於白热化状态下的《雷神之锤2》vs.《虚幻》 之争泼了一盆冷水。 正是由於过於高昂的开发代价,2002年Monolith公司决定单独成立一个LithTech公司,以 LithTech引擎的授权许可作为主要业务,希望借此捞回一些成本。采用LithTech第一代引 擎制作的游戏包括《血兆2》和《清醒》(Sanity)等。2000年LithTech公司推出了引擎 的2.0版本和2.5版本,加入了骨骼动画和高级地形系统,给人留下深刻印象的《无人永生 》(No One Lives Forever)以及即将上市的《全球行动》(Global Operations)采用 的就是LithTech 2.5引擎,此时的LithTech已经从一名有益的补充者变成了一款同Quake III和Unreal Tournament平起平坐的引擎。如今LithTech引擎的3.0版本也已经发布,并 且衍生出了"木星"(Jupiter)、"鹰爪"(Talon)、"深蓝"(Cobalt)和"探索"( Discovery)四大系统,其中"鹰爪"被用於开发《异形大战掠夺者2》(Alien Vs. Predator 2),"木星"将用於《无人永生2》的开发,"深蓝"用於开发PS2版《无人永生》 ,"探索"则将被用来制作一款尚未公布的大型网路游戏。 LithTech引擎除了本身的强大性能外,最大的卖点在於详尽的服务,除了LithTech引擎的 源代码和编辑器外,购买者还可以获得免费的升级、迅捷的电子邮件和电话技术支援, LithTech公司甚至还会把购买者请到公司进行手把手的培训。而且LithTech引擎的平均价 格也不算很高,大约在25万美元左右,同Quake III引擎的70万美元相比已经是相当低廉 了。 引擎的明天(2001年~) 2001年有许多优秀的3D射击游戏陆续发布,其中一部分采用的是Quake III和Unreal Tournament等现成引擎,如《星际迷航深度空间九:坠落》、《重返德军总部》和《荣誉 勳章:盟军进攻》,而更多的则采用的是自己开发的引擎,比较有代表性的包括网路射击 游戏《部落2》(Tribes 2)、第一人称射击游戏《马科斯·佩恩》、《红色派系》( Red Faction)和《英雄萨姆》等。 《部落2》采用的是V12引擎,这款引擎虽然无法同Quake III和Unreal Tournament相提并 论,但开发者为它制定的许可模式却相当新颖,你只需花上100美元就可以获得引擎的使 用权,不过天下没有免费的午餐,随之而来的一系列规定相当苛刻,例如,开发者不能把 该引擎用於为其他游戏发行商、其他商业游戏站点等竞争对手制作游戏,开发出来的游戏 必须在发行前交给GarageGames公司(V12引擎的所有者),不能交给任何第三方, GarageGames公司将拥有这些游戏五年的独家发行权等等。尽管如此,对於那些规模较小 的独立开发者来说,这个超低价引擎仍然具有非常大的吸引力。 《马科斯·佩恩》采用的是MAX-FX引擎,这是第一款支援辐射光影渲染技术(Radiosity Lighting)的引擎,这种技术以往只在一些高级的建筑设计软体中出现过,它能够结合物 体表面的所有光源效果,根据材质的物理属性及其几何特性,准确地计算出每个点的折射 率和反射率,让光线以更自然的方式传播过去,为物体营造出十分逼真的光影效果。 MAX-FX引擎的另一个特点是所谓的"子弹时间"(Bullet Time),这是一种《骇客帝国》 风格的慢动镜头,在这种状态下甚至连子弹的飞行轨迹都可以看得一清二楚。MAX-FX引擎 的问世把游戏的视觉效果推向了一个新的高峰。 《红色派系》采用的是Geo-Mod引擎,这是第一款可任意改变几何体形状的3D引擎,也就 是说,你可以使用武器在墙壁、建筑物或任何坚固的物体上炸开一个缺口,穿墙而过,或 者在平地上炸出一个弹坑躲进去。Geo-Mod引擎的另一个特点是高超的人工智慧,敌人不 仅仅是在看见同伴的屍体或听见爆炸声後才会做出反应,当他们发现你留在周围物体上的 痕迹如弹孔时也会警觉起来,他们懂得远离那些可能对自己造成伤害而自己又无法做出还 击的场合,受伤的时候他们会没命地逃跑,而不会冒着生命危险继续作战。 《英雄萨姆》采用的是Serious引擎,这款引擎最大的特点在於异常强大的渲染能力,面 对大批涌来的敌人和一望无际的开阔场景,你丝毫不会感觉到画面的停滞,而且游戏的画 面效果也相当出色。此外值得一提的还有《海底惊魂》(AquaNox)所用的Krass引擎,这 款引擎被作为GeForce 3的官方指定引擎,专门用於宣传、演示GeForce 3的效果,视觉方 面的表现无可挑剔。 可以看出,2001年问世的几部引擎依旧延续了两年多来的发展趋势,一方面不断地追求真 实的效果,例如MAX-FX引擎追求画面的真实,Geo-Mod引擎追求内容的真实,《军事冒险 家》(Soldier of Fortune)的GHOUL引擎追求死亡的真实;另一方面则继续朝着网路的 方向探索,如《部落2》、《要塞小分队2》(Team Fortress 2),以及Monolith公司那 款尚未公布的大型网路游戏。 不过,由於受到技术方面的限制,把第一人称射击游戏放入大型网路环境中的构想至少在 目前还很难实现。众所周知,一般的大型网路游戏多为节奏较慢的角色扮演游戏,这些游 戏所使用的引擎,无论是《卡米洛特的黑暗年代》(Dark Age of Camelot)使用的 NetImmerse引擎,还是《地平线:伊斯塔里亚大陆》(Horizons:Empires of Istaria) 使用的Horizons引擎,或是"据说可以保证50万人在同一虚拟世界中尽情游戏而不会有任 何滞後感"的Big World引擎,都无法支援一个供数百名玩家同时战斗的大型团队动态环境 。正是基於这样的考虑,id Software公司重新把目光放在了单人模式上,去年年底公布 的《雷神之锤4》和《毁灭战士3》将重新建构一个以单人游戏为主的引擎。与此同时,老 对手Epic游戏公司也在紧锣密鼓地开发新一代Unreal引擎和《虚幻竞技场2》的引擎。尽 管目前关於这几款引擎的具体资料并不多,但从已展示的几段采用新引擎即时渲染的动画 片段来看,它们的确完全超越了市面上的其他引擎,预示着一个新的引擎时代的到来。 最後需要指出的是,许多优秀的游戏开发者正在退出游戏开发市场,转而进入引擎授权市 场,仅靠开发引擎吃饭,这是个危险的信号。尽管引擎的不断进化使游戏的技术含量越来 越高,但最终决定一款游戏是否优秀的因素在於使用技术的人而不是技术本身。如前所述 ,引擎相当於游戏的框架,框架打好後,你只需往里填充内容即可,在这里,框架只是提 供了一种可能性,游戏的精彩与否取决於内容如何而非框架如何。正如《无人永生》开发 小组所说:"所有问题最终都会归结为一点--你的游戏是否好玩。" 附录: 3D Engine 的设计架构 作者:Luke Hodorowicz 翻译:乐晨光 (2001/9/28) 本人对3D也不甚了解,译文动机一则是内容所致兴致昂然,二则锻炼英译中技能。由本人 水准及经验有限,文中绝对不乏大量误解与误译,亦恳请读者指出,得以一同提高。 佳文须共赏,也欢迎大家自由转载 :) Introduction (简介) 让咱们谈谈你如何撰写一份提供优雅性能的3D引擎。你的引擎需要提供的包括:曲面 (curved surfaces)、动态光线(dynamic lighting)、体雾(volumetric fog)、镜面 (mirrors)、入口(portals)、天空体(skyboxes)、节点阴影(vertex shaders)、粒子系统 (particle systems)、静态网格模型(static mesh models)、网格模型动画(animated mesh models)。假如你已经知道如何以上所述的所有功能顺利工作,你也许便能将那些东 东一起置入到一个引擎当中。 等等!在你开始撰写代码前你必须先构思一下如何去架构你的引擎。多数来讲,你一定是 迫切地渴望去制作一个游戏,但如果你立即投入便开始为你的引擎撰写代码後,你一定会 觉得非常难受,开发後期你可能会为置入新的特效与控制而不得不多次重写大量的局部代 码,甚至以失败而放弃告终。花一点时间好好地为你引擎深谋远虑一番,这将会为你节省 大量时间,也少一点头痛。你一定不会急切地去架构一个巨型的工程;或许你也会在引擎 未完成时而乾脆放弃它,然後去干的别的什麽事儿。好了,当你掌握学习你所需知识的方 式之前,也许你还不能完成那些事儿。将设计真正地完成确实是件美事,为之你会感觉更 好,你将为之而耀眼! 让我们分析一下具备完整功能的3D游戏引擎的需要哪些基本部件。首先,这为具有相应3D 经验但且还需一些指引的开发者提供了一些资讯。这是一些并不难且能快速掌握但是你必 须应用的内容条目。为将你的工作更好地进行下去,这里将对关於"把多大的工作量"与" 多少部分"置入一个游戏引擎给出一个总概。我把这些成分称为 系统(System)、控制台 (Console)、支援(Support),渲染/引擎 内核(Renderer/Engine Core)、游戏介质 层(Game Interface)、以及工具/资料(Tools/Data)。 Tools/Data (工具/资料) 在开发过程中,你总是需要一些资料,但不幸的是这并不象写文字档案或是定义一个立方 体那麽简单。至少,你得需要3d模型编辑器,关卡编辑器,以及图形程式。你可以通过购 买,也可以在网上找一些免费的程式满足你的开发要求。不幸的是你可能还需要一些更多 的工具可你却根本无法获得(还不存在呢),这时你只得自己动手去写。最终你很可能要 自行设计编写一个关卡编辑器,因为你更本不可能获得你所需。你可能也会编写一些代码 来为大量的档打个包,整天面对应付成百上千个档倒是非常痛苦的。你还必须写一些转换 器或是插件将3d模型编辑器的模型格式转换成你自己的格式。你也需要一些加工游戏资料 的工具,譬如可见度估算或是光线贴图。 一个基本的准则是,你可能要为设计工具而置入比游戏本身等量甚至更多的代码。开始你 总能找到现成的格式和工具,但是经过一段时间以後你就能认识到你需要你的引擎有很大 的特性,然後你就会放弃以前的撰写方式。 也许目前非常流行利用的第3方工具辅助开发,所以你必须时刻注意你的设计。因为一旦 当你将你的引擎发布为opensouce或是允许修改,那也许在某天中会有某些人来应用你的 开发成果,他们将其扩展或者做某些修改。 或许你也应该花大量时间去设计美术,关卡,音效,音乐和实体模型,这就和你设计撰写 游戏,工具以及引擎一样。 System (系统) 系统(system)是引擎与机器本身做通信交互的部件。一个优秀的引擎在待平台移植时,它 的系统则是唯一需要做主要更改(扩加代码)的地方。我们把一个系统分为若干个子系统 ,其中包括:图形(Graphics)、输入(Input)、声音(Sound)、记时器(Timer)、 配置(Configuration)。主系统负责初始化、更新、以及关闭所有的子系统。 图形子系统(Graphics Sub-System)在游戏里表现得非常直观,如果想在萤幕上画点什 麽的话,它(图形子系统)便干这事儿。大多数来讲,图形子系统都是利用OpenGL、 Direct3D, Glide或是软体渲染(software rendering)实现。如果能更理想一些,你甚 至可以把这些API都给支持了,然後抽象出一个"图形层"并将它置与实现API之上,这将给 了客户开发人员或是玩家更多的选择,以获取最好的相容性、最佳的表现效果。 输入子系统(Input Sub-System)需要把各种不同输入装置(键盘、滑鼠、游戏板 [Gamepad],游戏手柄[Joystick])的输入触发做统一的控制接收处理。(透明处理) 比 方说,在游戏中,系统要检测玩家的位置是否在向前移动,与其直接地分别检测每一种输 入装置,不如通过向输入子系统发送请求以获取输入资讯,而输入子系统才在幕後真正地 干活(分别检测每一种输入装置),这一切对於客户开发人员都是透明的。用户与玩家可 以非常自由地切换输入装置,通过不同的输入装置来获取统一的行为将变的很容易。 声音子系统(sound system)负责载入、播放声音。该子系统功能非常简洁明了,但当前 很多游戏都支持3D声音,实现起来会稍许复杂一些。 3D游戏引擎中很多出色的表现都是基於"时间系统"(time)的。因此你需要一段时间来为时 间子系统(Timer sub-system)好好构思一番。即使它非常的简单,(游戏里)任何东西 都是通过时间触发来做移动变化,但一份合理的设计将会让你避免为实现而一遍又一遍地 撰写大量雷同的控制代码…… 配置系统(Configuration)位於所有子系统的顶端。它负责读取配置记录档,命令行参 数,或是实现修改设置(setup)。在系统初始化以及运行期间,所有子系统都将一直与它 保持通讯。切换图像解析度(resolution),色深(color depth),定义按钮(key bindings),声音支援选项(sound support options),甚至包括载入游戏,该系统将 这些实现显得格外的简单与方便。把你引擎设计得更为可设置化一些,这将为调试与测试 带来更大的方便;玩家与用户也能很方便地选择他(她)们喜欢的运行方式。 Console (控制台) 哈!我知道所有人都乐意去更风做一个象Quake那样的控制台(console)系统。但这的确 是一个非常好的想法。通过命令行变数与函数,你就能够在运行时改变你的游戏或是引擎 的设置,而不需要重启。开发期间输出调试资讯它将显得非常的有效。很多时间你都需要 测试一系列变数的值,将这些值输出到控制台上要比运行一个debugger速度显然要快得多 。你的引擎在运行期间,一旦发现了一个错误,你不必立即退出程式;通过控制台,你可 以做些非常轻便的控制,并将这个错误资讯列印出来。假如你不希望你的最终用户看见或 是使用该控制台,你可以非常方便地将其disable,我想没人能看得见它。 Support (支持) 支援系统(Support)在你引擎中任何地方都将被使用到。该系统包含了你引擎中所有的 数学成分(点,面,矩阵等),(内)存储管理器,档载入器,资料容器(假如你不愿自 己写,也可以使用STL)。该模组任务显得非常基础与底层,或许你会将它复用到更多别 的相关专案中去。 Renderer/Engine Core (渲染/引擎 内核) 哈~是呀,所有的人都热爱3D图像渲染!因为这边有着非常多的不同种类的3D世界渲染方 式,可要为各类拥有不同工作方式的3D图形管道做出一个概要描述也是几乎不可能的。 不管你的渲染器如何工作,最重要的是将你的渲染器组件制作得基化(based)与乾净( clean)。 首先可以确定的是你将拥有不同的模组来完成不同的任务,我将渲染器拆分为以下几个部 份:可见裁减(Visibility)、碰撞检测与回馈(Collision Detection and Response) 、摄像器(Camera)、静态几何体(Static Geometry)、动态几何体(Dynamic Geometry)、粒子系统(Particle Systems)、布告板(Billboarding)、网格(Meshes )、天空体(Skybox)、光线(Lighting)、雾(Fogging)、节点阴影(Vertex Shading)和输出(Output)。 其中每一个部分都得需要一个介面来方便地实现改变设置(settings)、位置(position )、方向(orientation)、以及其他可能与系统相关的属性配置。 即将显露出来的一个主要缺陷便是"特性臃肿",这将取决於设计期间你想实现什麽样的特 性。但如不把新特色置入引擎的话,你就会发觉一切都将变的很困难,解决问题的方式也 显得特别逊色。 还有一件有意义的事便是让所有的三角形[triangles](或是面[faces])最终在渲染管道 里经过同一点。(并非每次的每个三角形,这里讨论的是三角形列表[triangle lists]、 扇形[fans]、带形[strips]、等) 多花一些工作让所有物体的格式都能经过相同的光线 、雾、以及阴影代码,这样就能非常便利地仅通过切换材质与纹理id就使任何多边形具有 不同的渲染效果。 这不会伤及到被大量被渲染绘出的点,但是一旦你不当心,它可能会导致大量的冗余代码 。 你也许最终便能发现,实现所有这些你所需的极酷效果可能只占了所有的15%左右的代码 量甚至更少。这是当然的,因为大多数游戏引擎并不只是图形表现。 Game Interface (游戏介质) 一个3D(游戏)引擎很重要的部分便是------它是一个游戏引擎。但这并不是一个游戏。 一个真正的游戏所需的一些元件永远不要将它包含到游戏引擎里。引擎与游戏制作之间的 控制介质能使代码设计变得更清晰,应用起来也会更舒服。这虽是一些额外的代码,但它 能使游戏引擎具有非常好重用性,通过设计架够游戏逻辑(game logic)的脚本语言( scripting language)也能使开发变的更方便,也可以将游戏代码置入库中。如果你想在 引擎本身中嵌入你的游戏逻辑系统设计的话,大量的问题与大量修改一定会让你打消复用 这个引擎的念头。 因此,此时你很可能在思考这个问题:联系引擎与游戏的介质层到底提供了什麽。答案就 是控制(control)。几乎引擎的每一个部分都有动态的属性,而该引擎/游戏介质层( engine/game layer)提供了一个介面去修改这些动态属性。它们包括了摄像器(camera )、模型属性(model properties)、光线(lights)、粒子系统物理(particle system physics)、声效播放(playing sounds)、音乐播放(playing music)、输入 操作(handling input)、切换等级(changing levels)、碰撞检测以及回馈( collision detection and response)、以及2D图形介面的顶端显示、标题画面等相关的 东西。基本上来讲如果你想让你的游戏能优雅的实现这些元素,在引擎中置入这个介质层 (interface)是必不可少的。 The Game (游戏) 在这里,我无法告诉你如何去写你的游戏。这该轮到你发挥啦。如果你已经为你那令人赞 异的引擎设计出了一套出色的介质层的话,我想在设计撰写游戏过程中一定会轻松许多。 3D游戏引擎设计是一项巨大的软体工程。一个人独立完成设计并撰写也并非不可能,但这 不只是熬一两个晚上便能搞定的,你很可能会出写出几兆的源代码量。如果你没有持久的 信念与激情,你很可能无法完成它。 当然,别指望你的第一次尝试就能写出完整的引擎,挑一个比较小的专案所需的小规模引 擎去实现。按你的方式去努力工作,你就能到达成功。 --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 59.105.58.236
1F:→ hexen2:便宜的几千块 贵的几百万 价钱差真多... 05/17 16:14
2F:推 wandererc:继续推吉里吉里,是完全免费的XDDDD 05/17 18:20
3F:→ wandererc:还有推infinity,这引擎的游戏我几乎都玩过,真的是我最 05/17 18:20
4F:→ wandererc:爱的了引擎了吧,绝冬那引擎也相当惊人就是了 05/17 18:21
5F:推 wandererc:另外infinity并不是只能做龙与地下城的游戏.... 05/17 18:23
6F:→ wandererc:异域就不是DnD的游戏,异尘余生不太清楚是不是infinity. 05/17 18:24
7F:→ ycjcsie:infinity是免费的吗? 05/17 19:45
8F:→ wandererc:目前没看过黑岛跟Balware以外的公司用infinity作游戏 05/17 20:19
9F:→ wandererc:不过基本上在他们公司自己已经将infinity淘汰了,那毕竟 05/17 20:20
10F:→ wandererc:是2D游戏引擎。 05/17 20:20
11F:推 LayerZ:隔了三年还是好文,推 05/13 02:52







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Gossiping站内搜寻

TOP