编者按:引擎在游戏研发中起着重要的作用,很多开发人员在选择游戏引擎过程中会事先做一些了解。这期我们向大家简单介绍Gamebryo引擎的一些情况,以后,我们将为大家带来更多有关游戏引擎方面的介绍。
前言:2008年度Gamebryo巡回亚洲研讨会圆满落幕,包括北京、上 海、深圳、厦门、台北等游戏界相关朋友们都应邀参加这段时间的研讨会。较以往不同的是,当中有不少非游戏从业朋友是因为想接触游戏制作而前来参加,为共同 探讨Gamebryo技术,交流使用Gamebryo的经验,在研讨会中,Scaleform公司参与协助对Scaleform的GFx与 Gamebryo的结合使用提供指导。两年多来,Emergent公司通过唯晶科技的代理支持,在大中华地区迅速发展。目前,包括盛大、九城、久游、腾 讯、渡口游戏、烛龙、宝德以及台湾的乐升科技(XPEC)、基因游戏、亿启数位娱乐和Seed Studio等在内的众多公司都在使用Gamebryo开发游戏。借此次活动的余热,笔者在这里再向大家简单介绍一下Gamebryo。
一、Gamebryo的基本构成及其工作流程
Gamebryo是一款便捷且易上手的开放式跨平台游戏开发引擎,他整合了多家当今的成熟技术。图01说明了Gamebryo的基本构成和技术特点。我们随后对其中的主要技术特点做简单的介绍。
Gamebryo的基本构成和技术特点
那么,Gamebryo中的技术是如何在开发游戏中发挥作用的呢?图02演示了使用Gamebryo的工作流程。
Gamebryo的工作流程
从图中可看出,Gamebryo为当今主要的DCC工具(MAX、Maya、XSI),它都提供了游戏所需资源的导出插件。这些导出插件的用户界面简单、方便且易使用。美术人员可轻而易举地设置导出环境。从而导出游戏所需的数据:
• NIF文件包含与几何模型有关的数据;
• KF文件包含动画数据;
• KFM文件包含定义一个角色所需的NIF和KF以及动画序列间的默认转换方式。
在上图中,我们还看到Gamebryo所提供的三个主要工具:
• 资源观察器(AssetViewer)
这个工具可直接从DCC工具中启动。美术人员可以在导出数据前用它对DCC中的导出物件、人物设置、场景效果等进行观察以便在导出前进行修改。当然也可用来对已经导出的NIF进行观察。
• 动画工具(Animation Tool)
此工具可以设置导出的动画序列之间的转换,建立多层动画组合。它所产生KFM文件定义了一个完整的角色。
• 场景编辑器(Scene Designer)
顾名思义此工具是美术和策划用来创建游戏场景的。2.5版增加的地形编辑功能使得场景编辑器更上一层楼。从DCC工具中导出的物件、人物可以通过此编 辑器加到场景中。也可方便地设置场景中的灯光、相机等。使用者也可以通过写插件的方式拓展编辑器的功能。场景编辑器产生的GSA文件是XML格式,可被直 接加载到游戏中。
上述三个主要工具的使用在Gamebryo文档中都有详细的描述,参考网站: www.gamebryo101.com 可以通过看录像的方式了解如何使用Gamebryo DCC插件以及如何使用Gamebryo所带的三个主要工具。
二、Gamebryo的主要技术特点
前面讲到了在使用Gamebryo工作流程中,我们有了游戏中所需的资源。现在该是谈谈Gamebryo技术特点的时候了。正是这些优秀的技术才使得这些资源高效高质量地展现在游戏玩家的面前。那么,Gamebryo的主要技术包括哪些呢?笔者在下文中做简单介绍。
场景图结构(Scene Graph)
Gamebryo的场景图是一张从场景的根节点起单向非循环的层级结构图表。这张图代表了听得见摸得着的三维世界,是Gamebryo的场景数据库的基础。图03是一张代表从3DS MAX中导出的直升机的场景图。
从3DS MAX中导出的直升机的场景图
图中右边即为代表直升机的场景图。“SceneNode”为此场景图的根节 点。在这种结构下,场景可以有效地以深度优先的方式计算所有物体在世界坐标下的转换矩阵以及包围球(Bounding Sphere)。场景图中的所有节点的类(class)都继承于NiAVObject。
渲染系统(Frame Rendering)
【图04:Gamebryo渲染系统的架构】
• Render Frame(NiRenderFrame)
这是Gamebryo渲染系统中的最上层界面。它代表一个完整的渲染过程。从图中可知,这一过程是由一系列的Render Step来完成的。
• Render Step (NiRenderStep)
Render Step是一个独立的渲染过程。它既可完成主场景的渲染,又可完成一个特效的渲染过程(比如HDR,DOF等)。一个独立的渲染操作过程可能由一个或几个Render Click来完成。
• Render Click (NiRenderClick)
Render Click是一个针对单一渲染目标(Render Target Group)的独立的渲染操作。
• Render View (NiRenderView)
Render View直接对参与渲染的物体进行处理(如剪切、Alpha排序等)。一个Render View可以参与不同Render Click的渲染操作。
这一架构使得Gamebryo渲染系统的建立与管理更为方便灵活。使用者可 以根据渲染的需要来安排Render Step、Render Click和Render View的顺序。同时,NiRenderFrame、NiRenderStep、NiRenderClick都可以靠设置Callback来完成渲染前以 及渲染后使用者需要做的事情。
材质系统(Material/Shader/Texture)
Gamebryo的材质系统是一种机制。这种机制有效地为基于参与渲染的几 何模型状态的着色器(Shader)提供服务。在这样的机制下,美术人员可在DCC工具中轻松地设置材质即可。而Gamebryo的材质系统会产生所需的 Shader,并储存在缓冲存储器中。Gamebryo有自己的Shader文件格式(即NSF格式),同时也支持其它格式(如FX)。在 Gamebryo中,对于在高端机器上运行的游戏,一般会采用标准材质(Standard Material)。而对低端机器来讲,会用到固定管线(fix-pipeline)。
多线程管理系统(Floodgate)
Floodgate系统是一个跨平台的多线程管理系统(也可说是一个数据流 处理器管理系统)。在Gamebryo中,几何模型的变形、粒子系统的模拟计算、人物模型的蒙皮计算等都由Floodgate系统来完成。图05显示 Floodgate在系统中的工作流程。其中一片云的部分就是Floodgate系统。主线程把任务交给Floodgate系统,它完成之后再返回主线 程。
Floodgate在系统中的工作流程
有了Floodgate系统,Gamebryo的用户在处理与多线程有关的程序时就不必再写底层代码了。只要建立所要完成的任务(Task),并把它交给Floodgate系统就可以了。我们在这里仅仅提到了这个系统。今后有机会再详细介绍。
几何模型系统(NiMesh)
新的几何系统(NiMesh)是由数据流组成 的。上面讲到几何模型的计算是由NiMeshModifier通过Floodgate系统来完成的。图06显示了几何系统与Floodgate系统之间的 关系。NiMeshModifier会把任务交给Floodgate系统,并等待它完成任务返回。对这方面的编程方法感兴趣的朋友可以参照 Gamebryo所带的例子MeshCreation。
几何系统与Floodgate系统之间的关系
与模型系统的处理方式一样,Gamebryo所带的强大、灵活且可拓展的粒子特效的模拟计算也是通过Floodgate系统来完成的。
动画系统(Animation)
• Gamebryo不仅支持人物模型的细节等级,也支持骨胳的细节等级。等级之间的切换由游戏系统的逻辑来完成。这部分逻辑是要由游戏开发者自己来写的。
• 支持骨胳动画、面部动画、层级动画(Layered Animation)
• 支持动画序列与动画序列,动画与物理模拟结果的混合。动画序列之间的混和方式可由动画工具(Animation Tool)来设定。
• 支持动画序列之间的同步处理。
• 支持人物根节点的动画累加。
• 具有响应动画驱动事件的功能。
物理系统(Physics)
在Gamebryo中,物理系统使用的是NVidia公司的PhysX系 统。Emergent已经完整地把PhysX系统整合到Gamebryo中了。使用者要做的只是拿到NVidia公司的PhysX SDK及其DCC工具的插件。导出带有物理属性的物体或人物并加载到游戏中。在游戏程序中,首先对物理系统初始,再在更新过程中使Gamebryo系统和 物理系统能顺利地交换数据。这个交换过程是这样完成的,首先由Gamebryo系统向物理系统传递数据,物理系统完成模拟计算后再把结果返还给 Gamebryo系统。其工作流程如图07所示。
Gamebryo物理系统的工作流程
我们知道如上所述的Gamebryo的技术特点仅仅是个概括性的描述。对于已经使用过Gamebryo的朋友们来说是远远不够的。今后如有机会,我们会对Gamebryo的主要技术特点以各种方式做更为详细的介绍。
【作者简介】
郭振平,资深软件工程师,Emergent Game Technologies。2006年加入Emergent Game Technologies团队,为Emergent的亚洲客户提供技术支持。自获得应用科学硕士学位后,他已从事三维软件和游戏引擎开发工作16年。加入 Emergent之前,他参与开发了SoftImage的三维动画工具软件,Alias/Wavefront的Maya,Electric Image的三维工具-Electric Image Universe。在Rockstar,他参与了《SpyHunter 2》,《Midnight Club 2》,《Red Dead Revolver》等游戏的开发。在Collective,参与了《Star Wars Episode III: Revenge of the Sith》,《Marc Ecko’s Getting Up: Contents Under Pressure》,《The Da Vinci Code》,《Dirty Harry》等游戏的开发。作者邮箱是 [email protected] 或 [email protected] 。