GJM : 各大开发游戏引擎
目录
Osg 2
特性. 2
面向用户. 2
平台支持. 2
许可. 2
技术. 2
高性能. 3
Productivity 3
数据加载. 3
工具类. 3
接口化. 4
可伸缩性. 5
多语言支持. 5
寒霜引擎. 5
UE4(虚幻4) 5
Vega 8
简介. 8
应用领域. 9
本质. 9
总结. 9
Vitriols 9
简介. 9
应用. 10
开放性. 10
总结. 10
Oger 10
简介. 10
总结. 11
Cry 11
Osg
OpenSceneGraph是一个开源的三维引擎,被广泛的应用在可视化仿真、游戏、虚拟现实、科学计算、三维重建、地理信息、太空探索、石油矿产等领域。OSG采用标准C++和OpenGL编写而成,可运行在所有的Windows平台、OSX、GNU/Linux、IRIX、Solaris、HP-Ux、AIX、Android和FreeBSD 操作系统。OSG在各个行业均有着丰富的扩展,能够与使用OpenGL书写的引擎无缝的结合,使用国际上最先进的图形渲染技术,让每个用户都能站在巨人的肩上。
特性
面向用户
OSG是一个开源的三维实时场景图开发引擎,被广泛应用在可视化(飞行、船舶、车辆、工艺等仿真)、增强现实以及医药、教育、游戏等领域。
平台支持
OSG可以支持几乎所有的操作系统平台,它使用OpenGL ES使得可以支持手持台、平板以及其它嵌入式设备,使用OpenGL使得其可以在所有的家用电脑以及中型大型机和集群上进行工作。
许可
LGPL,在国内很少有人完全明白各种开源许可是怎么回事,但是大家都在使用开源工程。在中国使用一个引擎就是对该引擎发展的最大贡献,用户多就意味着繁荣和对该引擎越来越多的完善(非原文,译者加)。
技术
OSG采用C++书写,使用了标准模版库(STL)。OSG使用场景树的方式来管理三维场景,使用逻辑组来构建场景树,以便进行高效的渲染和遍历等。
OSG使用运行时对各种显卡扩展的实时检测,使得OSG支持从OpenGL1.0到OpenGL4.2以及OpenGL ES 1.1 到2.0的所有设备,所以不管设备新旧,操作系统如何,OSG均能及时识别出它支持什么版本的OGL或OES,然后完好的在其上运行。
OSG采用模块化的设计,降低了OSG内部模块的耦合性,使得用户更加容易理解。并且OSG提供了丰富的示例,通过阅读这些示例可以很好的学习这些模块(学习例子对于学习OSG是非常重要的---FreeSouth注)。模块化的设计使得用户不仅可以只学习和使用自己需要的模块,也可以根据需要定制自己的模块。
OSG的关键特点可以使用如下关键词进行总结:高性能、可扩展性、接口化等,具体如下:
高性能
支持基于视锥体的裁切、基于遮档的裁切以及其它的小特性裁切,支持LOD、OpenGL状态排序、VAO、VBO以及着色语言、显示列表等所有的图形学里经常提到的提高效率的招数。它使得OSG成为一个效率高,表现力好的引擎。OSG同样支持客户化的LOD,客户可以自己定制基于分页的四叉树场景结构用来实现复杂场景,具体可以看一下VTP和Delta3D以及osgEarth。
Productivity
OSG的核心支持所有的OpenGL扩展,哪怕是刚发布的最新扩展,对其进行封装,优化使得用户不用关注OpenGL那些底层的代码和扩展等,就可以快速的搭建基于最新特性的三维应用程序。
除对底层代码的封装外,OSG还有着与其它系统类似Performer以及OpenInventor等各种现代高级系统的结合,这些结合的案例可以使得用户快速的将OSG与自己的系统相结合提供帮助。OSG和现有与三维相关的,尤其是基于OpenGL的系统有着丰富的结合案例,可以看一下业内知名人士array的osgRecipes、osgXI以及osgCookbook从中获取三维系统与OSG相结合的方案灵感。
数据加载
OSG支持市面上几乎所有的数据格式,无论是图片还是三维模型,以及字体等都能很好的读取。
除了支持单一的格式外,OSG还有VPB、osgEarth以及其它不常用的扩展来支持对海量数据的处理和读取。
工具类
OSG提供一些工具类用来完成一些相互独立的功能,列举如下:
- osgParticle-粒子系统。(OSG的粒子系统从OSG的1.2版本以来,鲜有改变,八年了,它没发展,推荐使用Spark粒子系统,其与OSG的结合array的osgXI还是osgRecipes中有示例--FreeSouth注)。
- osgText-文字处理与显示。
- osgFX-特殊效果。
- osgShadow-阴影。
- osgManipulator-对模型的局部操作器。
- osgSim-一些可视化效果。
- osgTerrain-地形渲染。(针对地形,推荐使用VPB或osgEarth--FreeSouth注)。
- osgAnimation-动画。
- osgVolume-体渲染。
接口化
OSG做到不依赖任何与操作系统有关的中间件,只使用标准C++和OpenGL,早期在IRIX上开发,随后扩展到Linux、Windows、Mac、AIX以及Andriod和其它中国人不关心也用得少的操作系统。
OSG的接口化保证了其高度独立,这也使得其除了跨各种平台以外,还可以支持各种UI,比如MFC、QT、SDL、GLUT、WxWidget、Cocoa等。OSG的示例中有这些UI与OSG相结合的例子。(国内使用最多的是QT和MFC--FreeSouth注)。
可伸缩性
OSG可以运行在多核的CPU和GPU上,这缘于OSG对OpenGL显示列表和纹理单元以及拣选、绘制遍历等过程实施了保护措施,使这些阶段可以单独为一个线程也可以在一个线程中串行执行。可以通过osgViewer以及所有的例子来配置当前OSG应用程序的线程模型。
多语言支持
Lua、Python、甚至JAVA都有与OSG的结合。
寒霜引擎
寒霜引擎(Frostbite Engine),是瑞典DICE游戏工作室为著名电子游戏产品《战地》(Battlefield)系列设计的一款3D游戏引擎。该引擎从2006年起开始研发,第一款使用寒霜引擎的游戏在2008年问世。寒霜引擎的特色是可以运作庞大而又有着丰富细节的游戏地图,同时可以利用较低的系统资源渲染地面、建筑、杂物的全破坏效果。使用寒霜引擎可以轻松地运行大规模的、所有物体都可被破坏的游戏。
EA独家
UE4(虚幻4)
- 支持所有最新虚拟现实硬件,包括Oculus Rift、Samsung Gear VR、Steam VR、Leap Motion以及Sony Project Morpheus。
- UE4开源
当你的团队和项目很小时,用unity。unity有很多现成的东西可以用,你基本可以靠marketplace买来的东西搭建原型,甚至某些最终业务的核心组件也可以用买来的东西。比如你可以把整个material换成alloy、用ngui替代UI系统、如果你要做个赛车游戏,你能找到从模型、音效、材质、到控制系统一切。
项目大到一定规模时,我们发现定制化的需求会太多。unity基本对于我们来说只是一个编辑器,我们几乎要把里面所有模块全部找插件或者自己写插件。所以如果当你需要一个稳定的工具集,不想自己维护一堆插件(因为unity在基础功能方面确实做的一般)。而且有一堆人能够扛住每个模块的制作压力时-对于人员的素质要求更高。那么unreal是更好的选择。
但这也只是针对中型项目这个级别。真上到大型项目时,两者又不会有太大区别。因为这时整个工具流是inhouse的,各个公司会针对自己的产品定义不同的流程和方式。这会诞生大量插件。而且到这个级别的公司肯定也会自己去买unity的源码。此时的需求无论是unity还是unreal都不会完全满足一个大型项目的需求。只是渲染部分unreal应该是不需要做什么而已。
所以如果你有时间,可以两个都试下,你才知道自己的业务真的需要什么。
另外说unity画面质量问题的人,我怀疑你们能力。即便是我们用自己的流程和工具,都可以达到和unreal平级的画面质量。更不用说国外一堆团队做的产品了。unreal只是让一堆做效果图的都很容易产生高质量的画面。
给你看profile根本没意义,在不同的需求下两个引擎效率和效果都会不同。仅从单纯效率来说,提交效率肯定是unreal高一些,但大多数项目遇到的瓶颈远不是游戏引擎的瓶颈。
另外,你的回答截图只能说那个人unity可能是从来不挂任何插件或自己写点工具。也可能是指默认unity和unreal的对比。影响画面的几个点比如lightmess, material, post processing他都没处理过。比如radiosity normal mapping会让lightmess效果好得多,ggx shader也会让材质好表现好一些。所以无论是unity还是unreal去实现你图右边效果都不是很难的事情。只能说要达到右图的效果对于unreal来说会很简单,几乎不需要什么经验即可。
Vega
简介
Vega是MultiGen-Paradigm公司应用于实时视景仿真、声音仿真和虚拟现实等领域的世界领先的软件环境。使用Vega可以迅速地创建各种实时交互的三维环
境,以满足各行各业的需求。它还拥有一些特定的功能模块,可以满足特定的仿真要求,例如:船舶、红外、雷达、照明系统、人体、大面积地理信息和分布式交互仿真等等。附带的Lynx程序,这是一个用来组织管理Vega场景的
GUI工具。MultiGen Creator系列产品是世界上领先的实时三维数据库生成系统,它可以用来对战场仿真、娱乐、城市仿真和计算可视化等领域的视景数据库进行产生、编辑和查看。这种先进的技术由包括自动化的大型地形和三维人文景观产生器、道路产生器等强有力的集成选项来支撑。MultiGen Creator
是一个完整的交互式实时三维建模系统,广泛的选项增强了其特性和功能。
MultiGen-Paradigm公司已经计划用Vega Prime取代Vega,Vega Prime
全部用C++写成,是全新的产品,而不是Vega的后续版本,虽然目前在功能上比Vega3.7没有大的提高,但是Vega Prime的核心Vega Scene Graph是完全面向对象的先进架构,采用了许多现代C++的特性和技术,比如泛型,设计模式等,大大增加了软件功能和灵活性、通用性;此外,目前大部分程序员都有面向对象编程经验,Vega Prime提供的接口恰好符合其编程思维,易于上手,因此特别有吸引力。Vega Prime有很好的发展前景,但是Vega Prime是新推出的产品,最新版本号是1.2,很明显,有的方面还不够成熟。
应用领域
VagePrime 为仿真引擎,优势在于大场景数据管理,可以满足特殊军事应用(航海、红外、雷达…等)Vega重在强调真实性
本质
Vega Prime 是一个渲染引擎,本质上说是一个类库,它的功能都以类函数的形式而存在,需要c++程序员来完成二次开发,为了简化开发过程,提供了 Lynx Prime,一个图形化的配置界面,在该界面当中,用户可以配置各个物体之间的关系,触发条件。这些触发条件都是事先定义好的,如果是未事先定以的条件,还需要程序员进行开发。总体来说,如果需要使用Vega Prime来开发应用程式,需要开发人员有较强的程序开发能力,同时项目的时间周期也比较长。
总结
在专项的应用领域,如大地形管理方面,Vega具有不可取代的优势,多大为大地形,地形数据类型和大小,需要用户去衡量考虑;
Vitriols
简介
Vitriols准确定义为游戏引擎或虚拟现实引擎,其交互互动功能十分强大,2005年之前为独立运营的公司,主要应用于虚拟现实互动,web游戏开发等应用,之后被达索收购,借助其强大的VR功能,在工业用户中被广泛应用:产品
体验,虚拟漫游,交互培训,平台开发等。
应用
Vitriols 以拖拽的方式来定义程序运行的逻辑,提供 500 多个模组,通过不同模组的组合,可以定制出各式的应用。程序的界面符合人思考的逻辑,类似于流程图的结构,非常容易上手,可以用较少的人员在较短的时间内快速开发应用. Vitriols 同时还提供 Shadows , havok Physics, AIPack,可以使用户在较短的时间内开发 具有物理模拟,人工智能应用的程式。
开放性
在 Vitriols 中编程体现在三个层面上 1,Building Blocks 2,VSL 3,C++;其在开发上的比例约为60%,30%,10%。 初级程序制作可以只通过Vitriols内置的Building blocks进行构建即可完成,高级程序或平台的开发可以完全以Vitriols提供的SDK为基础进行开发,SDK是Vitriols提供的基于C++程序的开发包,只要对C++编程熟悉的人,即可对Vitriols的功能模块进行定制。
总结
Virtools通用性更强,开放扩展性更强,适合定制开发程序和定制应用; Virtools能兼容的数据类型最为广泛:3D模型、动画、人物、纹理、文字、声音、场景等各类信息均能整合处理;若要实现后期的虚拟现实扩展应用,建议使用Virtools程序进行程序设计;
Oger
简介
OGRE能(实际上就是)被用于开发游戏,但是OGRE被设计成只提供一个世界级的图形解决方案;对于其他的特性,如:音效、网络、人工智能、碰撞检测、物理等子系统,你则需要将其整合到OGRE中,在这些子系统中,已有一些成熟的库可供选择,在发布的SDK中,我们有一个碰撞/物理的参考整合库的例子。
那为什么OGRE不是一个游戏引擎呢?原因之一是:不是每一个需要3D引擎的人都想用其来做游戏,我们并没有假设你要将OGRE用于游戏开发、模拟、商业应用、或是其他用途。其次,游戏产业中的需求是相当广泛的;以MMORPG(Massive Multiplayer Online Role Playing Game,即:大型多人在线角色扮演游戏)为例,它比起FPS(First Person Shooting,即:第一人称射击)类游戏,需要不同类型的网络库,再如一个格斗类游戏将需要不同类型的碰撞/物理系统。如果OGRE包括了所有这些特性,你将被迫在一系列内建的假定的需求下使用一套有针对性的库,那将不是一个好的设计。相反,我们提供了一个用于整合其他库的非常友好的API。许多有经验的游戏开发者已经证明了这一点,因为没有内建的限制。这可能会使得那些仅仅只是想创建另一种类型的FPS游戏的新用户感到更加沮丧,但是对于这些人来说,已经有大量现存的采用OGRE提供完整解决方案的综合库可供使用。然而,需要明白的是OGRE自身总是保持足够地独立和灵活,以致能够与任何其他库融为一体。“与其他库协作和整合,而不是实现他们”的原则是面向组件设计的标准原则。
总结
在如今的平台多样性、硬件迭代速度和质量要求下,小团队和低端项目使用开源引擎得不偿失。Unity在很低廉的价格下,提供了足够好的开发效率、通用性和多平台性。用Ogre,谁有精力把各个平台一个个做下来?
高端开发方面,UE4在更加低廉的价格下提供了大部分代码——不是全部开源——如果我没记错的话。UE4本来就不是瞄准低端和手机开发市场。我觉得他们的目的更多的在于培植自己的Indie开发者社区。用Ogre是真不如花20刀一个月用UE4。
所以用Unity的人不在乎是不是开源,用UE4的人不在乎是不是庞大。Ogre真是两头不靠。
现在这个年头,自己从头造车轮,或者拆开车轮自己改,已经是很少见的做法了,只有经费充足的AAA项目或者风格过于小众的游戏这么搞。
Cry
不支持移动端!性能开销贼大!
CryENGINE是一个非常强大的引擎,由开发公司Crytek设计实现,在第一代Far Cry游戏中首次出现。它被设计用于PC平台和游戏机,包括Playstation 4以及Xbox One。CryENGINE的图像处理能力优于Unity和UDK,但是Unreal Engine 4基本持平,拥有极度先进的光照,逼真的物理模拟,先进的动画系统等等。最近利用CryENGINE开发的游戏是Ryse: Son of Rome。和UDK以及UE4类似,CryENGINE拥有直观而且强大的关卡设计功能。
尽管CryENGINE是一个非常强大的游戏引擎,想要学号是有一点难度的,特别是如果你没有任何游戏引擎使用经验会觉得更难。如果你不需要你的游戏具有像这些游戏那样牛X的图像,那么你最好不要选它,而选择一个更容易的哦。
随着UE4的发布以及它非常吸引人的价格模式,CryENGINE也不甘示弱地发布了更便宜的价格模型,即$10/每月,并且没有版权税哦。