游戏引擎与仿真系统

来源:互联网 发布:vue.js 数据绑定 编辑:程序博客网 时间:2024/05/02 02:40

  注:本文部分内容来源于网上

文/07级王杰

 

1.      3D游戏引擎、仿真软件和图形引擎概述

      目前3D图形技术大量应用于游戏和仿真领域,从技术实现上可分为基础层、中间层和应用层三个层次,如图1所示。基础层主要是3D加速硬件和厂商提供的基本的API函数接口;中间层则是根据游戏和仿真各自不同的需求编写的公共引擎或软件(在游戏领域多称之为XX游戏引擎,仿真方面一般称为XX仿真软件或XX仿真环境);应用层则是具体的游戏产品或仿真应用。

      可以看出,一个良好的游戏引擎(仿真软件)是一款游戏产品(仿真应用)的基础,在一个相对成熟的游戏引擎基础上,游戏开发商能很快地根据需要开发出相应的游戏产品,仿真软件商也能很快地为客户建立各种仿真应用。因此,在目前市场上,3D开发的主要竞争集中在中间层次,谁占领了这个层次,谁在竞争中就有更大的胜算,这也就是市场上有这么多各式各样种类繁多的引擎和开发包的原因。

      3D游戏引擎和仿真软件同处于中间层,但他们各自有着不同的侧重,但有一点是共同的:他们都拥有强大的3D图形引擎作为表现输出的基础。

 

 



1 3D图形技术在游戏开发和仿真软件开发中的层次关系

 

2.      3D游戏引擎及相关产品

2.1 3D游戏引擎

3D游戏引擎主要由如下几个方面组成:

  ① 3D图形引擎

  ② 声音引擎

  ③ 物理引擎

  ④ 控制引擎

  ⑤ 人工智能或游戏逻辑

  ⑥ 游戏GUI界面(菜单)

  ⑦ 游戏开发工具

  ⑧ 支持局域网对战的网络引擎开发

  ⑨ 支持互联网对战的网络引擎开发

  下面逐一介绍每个部分:

  图形引擎主要包含游戏中的场景(室内或室外)管理与渲染,角色的动作管理绘制,特效管理与渲染(粒子系统,自然模拟(如水纹,植物等模拟)),光照和材质处理,LOD(Level Object Detail)管理等,另外还有图形数据转换工具开发,这些工具主要用于把美工用DCC软件(如3DS MaxMayaSoft XSISoft Image3D等)软件制作的模型和动作数据以及用Photo shoppainter等工具制作的贴图,转化成游戏程序中用的资源文件。

    声音引擎主要包含音效(Sound Effect简称SE),语音(VOICE),背景音乐(Background music简称BGM)的播放。SE是指那些在游戏中频繁播放,而且播放时间比较短,但要求能及时无延迟的播放,VOICE是指游戏中的语音或人声,这部分对声音品质要求比较高,基本上用比较高的采样率录制和回放声音,但和SE一样要求能及时无延迟的播放,SE在有的时候因为内存容量的问题,在不影响效果的前提下,可能会降低采样率,但VOICE由于降低采样率对效果影响比较大,所以一般VOICE不采用降低采样率的做法。BGM是指游戏中一长段循环播放(也有不循环,只播放一次)的背景音乐,正是由于BGM的这种特性,一般游戏的背景音乐是读盘(光盘或硬盘)来播放。另外一些高级声音特效,如EAX,数字影院系统(DTS5.1),数字杜比环绕等。

    物理引擎主要包含游戏世界中的物体之间、物体和场景之间发生碰撞后的力学模拟, 以及发生碰撞后的物体骨骼运动的力学模拟(比较著名的物理引擎有havok公司的game dynamics sdk,还有open source ODEOpen Dynamics Engine)。

    控制引擎主要是把图形引擎、声音引擎、物理引擎整合起来,主要针对某个游戏制作一个游戏系统,其包含游戏关卡编辑器,主要用途是可以可视化的对场景进行调整,光照效果和雾化等效果调整,事件设置,道具摆放,NPC设置,另外还有角色编辑器,主要用于编辑角色的属性和检查动作数据的正确性。一般日本游戏公司的做法,他们会把关卡编辑器和角色编辑器直接做到游戏中,所有的参数调整都在游戏中通过调试菜单来进行编辑,所以一般他们把这部分调试菜单的功能做的很强大,同时在屏幕上实时的显示一些重要的信息,这样做的好处是关卡编辑器调整的效果直接就是游戏的效果,但是对于程序的重用性来说可能不是很好,比如说要用到另外一个游戏项目中就比较难,除非两个游戏类型相同,只要把场景和角色数据换一下,还有做下一代产品也没有问题,只要根据式样增加调试菜单的功能就可以了。

  人工智能和游戏逻辑开发,这部分日本和欧美的游戏开发模式也有很大不同,在欧美游戏公司中运用脚本语言开发很普遍,所以这部分程序开发主要是用脚本语言编写,而且脚本程序和游戏程序的耦合性很低,有单独的编辑、编译和调试环境,这样比较利于游戏程序和关卡设计开发分开,同时并行开发,所以一般他们都会有专门做关卡设计的程序员岗位。而日本游戏公司脚本语言一般和游戏的耦合性比较高,一般通过一些语言的宏功能和一些编译器的特定功能来完成一个简单的脚本系统,所以一般这些脚本程序只能在游戏程序中进行调试,而不能在一个单独的脚本编辑,编译环境中进行开发。

  游戏GUI界面(菜单),主要是指那些游戏中用户界面设计,有做的复杂,有简单的,做的简单就是2D GUI界面,做的复杂有3D GUI界面。

游戏开发工具主要包含关卡编辑器,角色编辑器,资源打包管理,DCC软件的插件工具等开发。

  支持局域网对战的网络引擎开发,主要解决局域网网络发包和延迟处理,通讯同步的问题,有同步通讯和异步通讯两种做法,异步通讯用于那些对运行帧速要求比较高的游戏,同步通讯相对异步通讯来说效率相对低,但是同步通讯的编程模型相对异步通讯来得简单一些。

支持互联网对战的网络引擎开发,目前大部分网游都是C/S结构的,服务器端软件配置管理,服务器程序的最优化,还有游戏大厅、组队、游戏逻辑处理、道具管理、收费系统等。另外还有一些网络系统是C/SP2P两种结构混合的,如XBOX Live等。

2.2 主要3D游戏引擎产品

    (1id Software公司的QuakeQuake IIQuake III引擎。id Software堪称是全球游戏产业第一技术供应商,有大量的游戏基于该公司的Quake 系列引擎进行开发,著名的《半条命》采用的就是QuakeQuake II引擎的混合体。Quake II的授权模式大致如下:基本许可费从40万美元到100万美元不等,版税金视基本许可费的多少而定,40万美元的许可费大约需提取10%以上的版税金,100万美元的许可费则提取很少一部分版税金。另外,目前Quake III引擎价格大约为70万美元。

    (2Epic Megagames公司(即现在的Epic游戏公司)的Unreal Tournament引擎。从画面方面看Unreal Tournament引擎和Quake差不多,但在联网模式上,Unreal不仅提供有死亡竞赛模式,还提供有团队合作等多种激烈火爆的对战模式,另外Unreal Tournament引擎不仅可以应用在动作射击游戏中,还可以为大型多人游戏、即时策略游戏和角色扮演游戏提供强有力的3D支持。Unreal 2的买断价是75万美元,或者35万美元买下开发许可权,而后从售出的每一份游戏中提取版税金。

    (3Monolith公司的LithTech引擎。LithTech引擎的开发共花了整整五年时间,耗资700万美元,LithTech引擎除了本身的强大性能外,最大的卖点在于详尽的服务,除了LithTech引擎的源代码和编辑器外,购买者还可以获得免费的升级、迅捷的电子邮件和电话技术支持,LithTech引擎的平均价格大约在25万美元左右。

    (43D GameStudio。德国开发的3D游戏著名工具软件,已经有上百种使用该引擎的游戏公开发行。3D GameStudio引擎结合了高端的3D引擎,2D引擎,物理引擎,地图和建模编辑器,脚本编译器和大量的3D物体库,工艺品和半成品的游戏,使得更容易的制作第一人称游戏、第三人称游戏、角色扮演游戏、滚屏游戏、飞行模拟器、棋类游戏、运动类游戏、及时战略游戏以及虚拟展示应用程序。该产品官方价格大约为人民币9000元。

 

3.      3D仿真软件和主要产品

    3D游戏引擎与仿真软件针对不同的应用需求有着各自的侧重点(虽然从目前发展的趋势上看,二者走得越来越近)。个人认为游戏引擎更注重画面的表现效果和游戏的框架的搭建,使得游戏开发者能更高效地开发出令人震撼的游戏产品,而仿真软件更注重仿真的内容和各种仿真分析工具,对画面的要求没有游戏引擎高。目前市场上有不少成熟的商业仿真软件开发包,包括Vega系列、VR Tools Delta3D等。

    3.1 VegaVega prime

    MPIMultigen-Paradigm Inc.)的视景仿真渲染工具Vega是世界上领先的应用于实时视景仿真、声音仿真和虚拟现实等领域的软件环境,它用来渲染战场仿真、娱乐、城市仿真、训练模拟器和计算可视化等领域的视景数据库,实现环境效果的加入和交互控制。由于它大幅度减少了源代码的编写,使软件的进一部维护和实时性能的优化变得更容易,从而大大提高了开发效率。使用它可以迅速地创建各种实时交互的三维视觉环境,以满足各行各业的需求。另外,它还拥有一些特定的功能模块,可以满足特定的仿真要求,例如特殊效果、红外和大面积地形管理等。通过使用Vega Prime,用户能把时间和精力集中于解决应用领域内的问题,而无须过多考虑三维编程的实现。此外,Vega Prime具有灵活的可定制能力,使用户能根据应用的需要调整三维程序。著名的MAK系列中的三维场景就是在Vega基础上开发出来的。

 

        Vega Prime还包括许多有利于减少开发时间的特性,使其成为现今最高级的商业的实时三维应用开发环境。这些特性包括自动的异步数据库调用、碰撞检测与处理、对延时更新的控制和代码的自动生成。     Vega Prime为了满足特定应用开发的需求,除了上述的基本模块之外,还提供了功能丰富的可选模块。Vega Prime的可选模块基本上覆盖了Vega的可选模块,包括:

                          Vega Prime FX:爆炸,烟雾,弹道轨迹,转轮,等等;

             ☆Vega Prime:分布式渲染;

             ☆Vega Prime LADBM:非常大的数据库支持;

             ☆DIS/HLA:分布交互仿真;

             ☆Blueberry 3D开发环境;

             ☆DI-GUY:三维人体;

             ☆GL-Studio:仪表;

             ☆Vega Prime IR Scene:传感器图像仿真;

             ☆Vega Prime IR Sensor:传感器图像实际效果仿真;

             ☆Vega Prime Radar Works:基于物理机制的雷达图像仿真;

             ☆Vega Prime Vortex:刚体动力学模拟;

             ☆Vega Prime marine:三维动态海洋。

    3.2 Delta3D(开源软件)

    Delta3D是一款由美国海军研究学院(Naval Postgraduate School)开发的全功能游戏与仿真引擎,得到美国军方巨大的支持与丰厚的投资。该引擎应用领域极为广泛,如开发在培训、教育、娱乐行业和科学计算可视化领域等方面建模与仿真的软件。它的标准化设计把一些知名开源软件和引擎如 Open Scene Graph(OSG), Open Dynamics Engine (ODE), Character Animation Library (CAL3D), 还有 Open AL融为一体。Delta3D通过对这些底层模块进行隐藏封装,整合在一起从而形成了一个使用更加方便的高级API 函数库,使得开发者在必要的时候能够使用底层函数进行二次开发。 

 

    Delta3D的内部功能模块主要含有:

               ☆dtCore:包含通用基本功能。

               ☆dtChar:包含动画融合(Animation blending),角色步长与场景协调(Avatar feet correspond to world positioning)等功能。

               ☆dtABC:高级程序基本类模块,对于某些应用程序的开发很有用处。

               ☆dtHLAHLA网络模块的界面,实现坐标系统转换等功能。

               ☆dtTerrain:提供执行地形载入,渲染,装饰的插件体系框架。

               ☆dtDAL:动态角色层模块提供一个生成、访问、控制角色的底层支持。

               ☆dtGUI:包含Crazy Eddie's GUI的简捷界面。

               ☆dtGame:提供一个建立复杂的游戏,训练软件的体系。

               ☆dtUtil:贯穿整个Delta3D的基本应用组件。

               ☆dtBSP:将载入文件自动优化为BSP格式的组件。

               ☆dtAudio:提供高级的音频处理函数库。

               ☆dtNet:提供多用户网络操作的高级API函数库。

    Delta3D应用软件提供了多种实用工具:包含一个仿真、训练、游戏编辑器STAGE——一个完整的可视化3D地图编辑器,除此之外还有:

          ☆可视化粒子效果编辑器:为粒子特效编辑提供一个使用与演示方便的操作界面。

          ☆3D模型浏览器:是一个使用方便,独立运行的3D模型浏览工具。

          ☆BSP编译器:是一个载入、编译和保存普通对象为BSP格式的工具。

          ☆HLA阅读器:是一个对HLA网络所有实体对象进行3D描述的工具。

 

4.      主要3D图形引擎

    3D图形引擎作为一种底层工具支持着高层的图形软件开发,可以把它看成是对3D API的封装,对一些图形通用算法的封装,对一些底层工具的封装。前面第23节所提到的各种游戏引擎和仿真软件或是自己开发3D图形引擎,或是购买成熟的3D图形引擎进行开发,或是合作开发,或是利用现有的开源图形引擎进行开发。总之,3D图形引擎是游戏引擎和仿真软件的开发基础。目前除了一些游戏厂商自己开发的3D图形引擎外,常见的3D图形引擎有OpenGVSVTreeOSG

    4.1 OpenGVS

    OpenGVSQuantum3D公司的产品,用于场景图形的视景仿真的实时开发,易用性和重用性好,有良好的模块性、巨大的编程灵活性和可移植特性。OpenGVS提供了各种软件资源,利用资源自身提供的API,可以很好地以接近自然和面向对象的方式组织视景诸元和进行编程,来模拟视景仿真的各个要素。OpenGVS现已成为世界上最强大的3D应用开发工具之一。目前,OpenGVS的最新版本为4.5,支持WindowsLinux等操作系统。OpenGVS包含了一组高层次的、面向对象的C++应用程序接口(API),它们直接架构于OpenGLGlideDirect3D上。也就是说,OpenGVS既封装了繁杂的底层图形驱动函数,又保持了良好的性能,它的一个功能函数调用,等同于普通的上百或上千行图形编程代码。开发者只需用少量代码就可以快速生成高质量的3D应用软件。

    OpenGVSAPI分为相机、通道、烟雾、帧缓冲、几何、光源、对象、场景、工具、特效等各组资源,开发者可以按照应用的需要调用这些资源来驱动硬件实时产生所需的图形和效果。OpenGVS针对Intel PⅢ、P4处理器进行了高度优化,能让应用达到最佳运行性能。

    OpenGVS市场报价大约为8万人民币。

    4.2   Quantum3D VTREE

        Quantum3D VTREE SDK(原来的CG2 VTREE,后被Quantum3D收购)是一个面向对象,基于便携平台的图象开发软件包(SDK)。VTREE SDK包括大量的C++类和压缩抽象OpenGL图形库、数组类型及操作的方法。VTREE  SDK功能强大,能够节省开发时间,获得高性能的仿真效果。利用此工具包开发者可充分展开想象力,置身于鲜活的虚拟世界中.比如战场战术的实现、探索火星表面的过程等。对于希望得到跨平台、高性能低成本、可实时响应虚拟仿真应用VTREE无疑是最佳选择。

VTREE包含一系列的配套C++类库适用于开发高品质,高效的VTREE应用。VTREE提供的扩展功能成功地兼容并融合了复杂的OpenGL-API接口。VTREE应用可运行于支持OpenGLWindowsUnix类型的平台。

  VTREE显示效率非常高,实际使用过程中给人感觉是非常快的。其原因一方面在于VTREE全新设计和优化了程序代码,另一方面在于VTREE显示控制的策略。VTREE生成和连接不同节点到一个附属于景物实体的可视化树状结构,这个可视化树状结构定义了如何对实体进行渲染和处理。一个实体由一个所有图形原始状态组成的渲染树和定义如何使实体显示的接合部分所组成。实体的渲染树包含所有这些实体的几何特性、运动特性和纹理节点。这些树状结构对于实体的细节描述能变得非常精细,并且通过不同的路径能够显示用于优化的不同的细节等级划分(LOD)。

        VTREE针对仿真视景显示中可能用到的技术和效果,如仪表、平显、雷达显示、红外显示、雨雪天气、多视口、大地形数据库管理、3D声音、游戏杆、数据手套等等,均有相应的支持模块。

    4.3   OSGOpen Scene Graph

    OSG是一个可移植的、高层图形工具箱,它为战斗机仿真、游戏、虚拟现实、或科学可视化等高性能图形应用而设计。它提供了基于OpenGL的面向对象的框架,使开发者不需要实现、优化低层次图形功能调用,并提供了很多附加的功能模块来加速图形应用开发。

另外,OSG是自由软件,公开源码,完全免费。用户可自由修改,来进一步完善功能。目前已经有很多成功的基于OSG3D应用,效果不亚于商业视景渲染软件。如果要自主开发视景渲染软件,OSG是最佳的基础架构选择。

    4.4   OGREObject-oriented Graphics Rendering Engine

    OGRE是一款开放原代码的面向对象的图形渲染引擎,它是由一个小而强的团体编写并维护,由许多团体共同开发的。在互联网上被公认为是至今为止最好的免费并开放的引擎。引擎中的类库对更底层的系统库(如:Direct3DOpenGL)的全部使用细节进行了抽象,并提供了基于现实世界对象的接口和其它类。

5.      相关名词

    OpenGL:是近几年发展起来的一个性能卓越的三维图形标准,它是在SGI等多家世界闻名的计算机公司的倡导下,以SGIGL三维图形库为基础制定的一个通用共享的开放式三维图形标准。目前,包括MicrosoftSGIIBMDECSUNHP等大公司都采用了OpenGL作为三维图形标准,许多软件厂商也纷纷以OpenGL为基础开发出自己的产品,其中比较著名的产品包括动画制作软件Soft Image3D Studio MAX、仿真软件Open InventorVR软件World Tool KitCAM软件ProEngineerGISARC/INFO等等。

    Direct3D (D3D):是微软为提高3D 游戏在Win 95/98中的显示性能而开发的显示程序,目前已经升级到9.0版本,而且支持XP等微软最新的操作系统,它提供了丰富的3D功能库,是游戏广泛采用的标准。

 

 

原创粉丝点击