写游戏引擎 目前有哪些优秀的开源免费的游戏引擎
下面是好好范文网小编收集整理的写游戏引擎 目前有哪些优秀的开源免费的游戏引擎,仅供参考,欢迎大家阅读!
对于开源的游戏引擎,我大概可以说一说。从零几年开始,我就开始尝试找款合适的开源游戏引擎,想把它封装成在我开发的道(Dao)编程语言里可以调用的模块。所以这些年下来,我尝试过好几个开源游戏引擎(基本都是用C/C++开发)。我这里就凭印象对这些引擎做个简单的介绍。
我这里只介绍下我成功封装并移植过例子程序的几个C++游戏引擎:Irrlicht, GameKit, Horde3D, GamePlay3D, AtomicGameEngine 和 Urho3D。后面再提提Godot。
Irrlicht:
这是我最早成功封装并移植例子的游戏引擎。这个引擎在当时应该还算不错,不过它用的技术现在已经有些过时。
GameKit
这个不是Apple的那个GameKit。这个是一款基于Ogre3D的游戏引擎。不太记得有什么优点了,只记得它好像不难封装,有两个例子也比较有趣。不过后来好像没有被维护了。
Horde3D
好像是欧洲某大学的两个老师搞的。技术不错,针对渲染大量人群有优化的设计,引擎本身也不大。成功封装过,但例子移植有点问题。可惜后来没有被进一步开发,不过好像还是有铁杆用户坚持继续用。不知到他们现在还有没有坚持。
GamePlay3D
这个是黑莓公司搞的游戏引擎。他们当时在尝试做一款移动平台操作系统与Android竞争,他们做这款游戏引擎的目的是想吸引开发者用它开发跨平台的游戏。这样的游戏会自然地支持他们的系统,想以此来促进他们系统的生态圈建立。
不过这款引擎和他们的系统后来都被他们放弃了。从我封装这款引擎和移植例子的体验讲,这款引擎总体不错,但有点明显的缺点。其中一个缺点就是引擎没有用智能指针,需要用户自己更新一些对象的引用计数。
AtomicGameEngine
这款引擎基于Urho3D,是很不错的引擎。我当时在找一款可以集成到Qt5应用里,且方便为道(Dao)做封装接口的游戏引擎。我当时也在考虑Godot引擎。比较之后,我选了AtomicGameEngine,主要原因是Godot不太容易集成到Qt5应用了,而且它的封装也似乎很麻烦。而用AtomicGameEngine的话,这两点都比较好做。
另外AtomicGameEngine/Urho3D设计得还挺好用的,感觉应该是比较现代的设计吧。游戏场景全由Node组成,并被组织为树结构。每个Node可以附加一系列Component,每个Component可实现该Node某方面的功能。
AtomicGameEngine的设计目标是对标Unity3D,所以它的开发者花了很大精力尝试给引擎增C#接口和实现。我当时就觉得他们这个路线是错误的。果不其然,他们搞C#支持搞了好长时间,最终坚持不下去了,连游戏引擎一块儿放弃了。我后来只好转用Urho3D了。
Urho3D
AtomicGameEngine的大部分优点都是继承自Urho3D,因此Urho3D的引擎架构也设计得比较好用。并且也跟AtomicGameEngine一样易于跟Qt5集成。不过Urho3D对脚本语言的支持没有AtomicGameEngine易于扩展到新的语言。所以我后来做了一个我自己的基于Urho3D的Fork,并把AtomicGameEngine里比较好的东西反向移植到了这个Urho3D Fork里。我去年就在GitHub上把它开源了,起名Craft3D 游戏引擎。
Godot
我对Godot的研究没有对Urho3D深入,仅有针对性地找过几个地方稍微研究了一下,以方便我在Godot和Urho3D/AtomicGameEngine之间作选择。我最终没有选择Godot,并不是因为Godot不好或比Urho3D明显差,而主要是因为Godot不符合我的需求。
从游戏引擎本身讲,当时(2016)这两款游戏引擎的差别似乎不大,现在Godot应该是更好些,毕竟这几年Godot开发投入比较大。但是Urho3D这几年进步也很大。所以这两款引擎技术上现在是否有了较大差距,我也不是很清楚。但我基本确定我还是会继续用Urho3D和我的基于Urho3D的修改版本,主要是因为,我发现Urho3D的设计实在是太方便我去魔改了。
开源引擎与3A游戏
从我自己的体验和知乎上看到的其他人用Godot的体验看,Urho3D和Godot大概还都不适合开发3A游戏吧。但是有开发3A游戏的技术和资源的话,感觉用这两个引擎大概也能凑合,毕竟开发3A游戏肯定还是需要对游戏引擎作大量修改的。不知道Godot方不方便修改,至少Urho3D是很方便修改的。
不过我没有参与过3A游戏开发,也还没有用到Urho3D的所有功能,所以不知道Urho3D是否还欠缺很多开发3A游戏所必须的功能。但如果不想依赖其他公司控制的游戏引擎,那么开源游戏引擎还是很值得考虑的选项的。