zoukankan      html  css  js  c++  java
  • GJM : 各大开发游戏引擎

    • 感谢您的阅读。喜欢的、有用的就请大哥大嫂们高抬贵手“推荐一下”吧!你的精神支持是博主强大的写作动力以及转载收藏动力。欢迎转载!
    • 版权声明:本文原创发表于 【请点击连接前往】 ,未经作者同意必须保留此段声明!如有问题请联系我,侵立删,谢谢!
    • 我的博客:http://www.cnblogs.com/GJM6/  -  传送门:【点击前往

    目录

    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)

    当你的团队和项目很小时,用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/每月,并且没有版权税哦。

  • 相关阅读:
    Educational Codeforces Round 83 --- F. AND Segments
    Educational Codeforces Round 83 --- G. Autocompletion
    SEERC 2019 A.Max or Min
    2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
    Educational Codeforces Round 78 --- F. Cards
    今天我学习了一门全新的语言
    codeforces 1323D 题解(数学)
    Educational Codeforces Round 80 (Div. 2) 题解 1288A 1288B 1288C 1288D 1288E
    Educational Codeforces Round 81 (Div. 2) 题解 1295A 1295B 1295C 1295D 1295E 1295F
    Codeforces Round #617 (Div. 3) 题解 1296C 1296D 1296E 1296F
  • 原文地址:https://www.cnblogs.com/TDou/p/6149961.html
Copyright © 2011-2022 走看看