开源游戏引擎体验

来源:互联网 发布:医疗大数据分析 编辑:程序博客网 时间:2024/04/29 21:45

       应该说每个做游戏的人都会有一个自己写游戏引擎的梦。趁着还没有到新公司报道,花点时间研究一下开源引擎,梳理一下自己的思路。

       新的游戏引擎是基于cocos2d-x,我希望能够从这些开源引擎中学到:

       1、粒子系统、粒子编辑器。cocos2d-x的粒子系统相当薄弱,不是说没有,但是想用他做出酷炫的技能特效是非常困难的一件事。很多人都有做cocos2d-x的粒子编辑器,但是在我看来,粒子系统本身薄弱了,编辑器最终也就变成了一个参数编辑和效果预览的工具。

       2、模型加载和骨骼动画播放。研究一下换装系统需要哪些支持,顺便看看能不能实现Unity的动画重定向功能。

       3、声音引擎。看看能不能找到类似开源的FmodEx的声音引擎。

       4、研究下编辑器框架如何设计和搭建

       5、Box2D和PhysicX的物理系统如何封装

       

一、Genesis-3D(www.genesis-3d.com.cn)

       搜狐畅游耗资千万美金,开源的3D游戏引擎,可以支持发布到PC、Android、iOS平台。

       在分析第一印象的优劣之前我先说下,UDK、UE4、Source、Quake、Doom什么的代码是有的,但是暂时不打算看了,因为太高大上或者技术向的代码我害怕Hold不住,我关注的是如何改进生产流程,而不是学习什么高级技巧。而且我现在最需要的是基础设施,而不是什么东西都有后要做的更好。


       优点是编辑器完整,框架清晰(还没看代码,只是从使用上来看),我想要的那些基础设施也都在。文件和资源系统没有像Unity一样打包在一起,这点我是很喜欢的。粒子系统配置什么的都是xml文件,参考学习起来比较方便。粒子系统很美,跟Unity差不多,如果能直接拿来用就好了。可以说如果早个三五年推出应该是非常有竞争力的产品。

      缺点是:

      1、不能直接在编辑器里面运行游戏,只能预览静态场景。代码他们似乎是通过自己修改的Mono来实现直接编译的功能,直接改动代码不会需要重新发布版本。但是资源的修改似乎就麻烦了。从这点来看,Unity更偏向All in one的编辑器,一切都在编辑器里面操作测试完毕,最后需要的时候再发布版本。而Genesis3D更偏向一个公司的商业引擎,美术程序分开工作,需要的时候把资源整合,发布个可用的版本,然后继续测试开发。 虽然我认为这个是缺点,但是说实话我个人还是倾向于Genesis3D的方式的。因为我感觉只要生产流程清晰了,那么是不是有一个All in one的编辑器不那么重要,甚至没有编辑器也OK。只要对应开发的终端有合适的工具就可以了。 Genesis3D会让我感觉自己更像程序开发者,而不是全包全揽的独立游戏开发者。

      2、各方面都很像Unity。且不管是不是坊间传闻的买了Untiy的代码然后自己改的。我只能说是一个山寨的Unity1.0版本。代码设计上孰优孰劣更多的是个人喜好,但是编辑器上看很多地方做的都不如Unity方便。还是那句话,如果不跟Unity比,那么看起来很美,但是一比就山寨了。

      3、编辑器能扩展不?  我在教程里面没有看到,暂时认为没有吧。  Unity最大的魅力是可以自定义编辑器内容。  以此衍生出很多非常有魅力的插件,比如一些行为树AI插件、2D骨骼动画插件,这些插件跟Unity结合在一起大大的丰富了引擎本身的功能。 否则的话光靠自己是很难满足用户需求的,即便开源也不行。

      4、待续。我相信真正使用起来会有很多值得吐槽的敌方,但是如果是像我一样的初学者来学习的话,还是能够收获很多东西。


二、Godot (http://www.godotengine.org/wp/)

       又一个跟Unity长得很像的游戏引擎。依然在开发中,感觉设计上越到后面在细节上跟Unity越像。 当然跟Genesis3D比还是能够明显感到一个是山寨者,一个是模仿者。 你一拿到这个引擎绝对不会说这货就是一个Unity,但是在使用的过程中你会发现一个又一个熟悉的功能和操作方式,这个我感觉是相当聪明的做法。总体感觉是偏2D偏小游戏的方向,但是麻雀虽小五脏俱全,UI、粒子、物理都不会少。 最大的问题似乎是没有代表性的游戏产品,这个在某种程度上说就意味着失败。 其实所有游戏引擎都是一样的,需要成功的产品来撑场面。  像cocos2d-x一样,时不时宣传一下“苹果畅销榜上面九成游戏都是cocos做的,最火的我叫mt也是cocos做的”,这样用的人会越来越多,有很多东西并不是本身有多好,而是用的人多了影响了整体的审美,自然就变成所谓的“结构漂亮、简单易学”。

       仔细看了看游戏的Demo,感觉非常喜欢这个引擎。首先我要说一下,一个引擎要想被用户接受和学习,丰富而又清晰的Demo必不可少,它一方面是展现了游戏的功能,比如cocos2d就把所有的功能列举出来了,另一方面也可以当作测试用例,最后它也是用户的学习教程。

       先说优点,2D/3D部分处理的都相对完整。而且Demo中展示了很多2D和3D相结合的部分,以及3D UI,这些对我而言都是非常有吸引力的。看了看作者的开发路线,后面会支持2D骨骼动画,导航寻路等功能,可以说这个引擎在做2D游戏或2.5D游戏上还是非常不错的选择。

       再说缺点:

       1、编辑器操作起来不是非常方便。

       2、使用自己的GDScript语言。  这个我是不太赞同的,我详细说下我的看法。  作者分析了现有语言的优劣,然后决定自己开发一套脚本。比如lua、python如果用导出的方式会很麻烦,而且会大于现在GDScript的核心。 c++当然是编译语言,开发不方便。   c#则是因为开源协议(Mono是LGPL)所以被放弃了。   但是在我看来,即便舍弃或者兼容一些东西,使用lua、python、javascript的意义也要大于自己开发一套脚本语言。  且不说自己开发意味着大量的时间和精力投入,用户会有一个学习的过程。就拿lua来说,掌握语法来写代码的确可以一两天就搞定,但是写出漂亮的高效的代码或者代码量大了如何正确的维护代码都不是一天两天能搞定的事情,这需要经验的积累。而自己开发的脚本语言对开发者来说就意味着学习成本,诚然它很简单可以半天上手,但是后面会遇到什么样的坑就说不准了。  再说,lua和javascript都有jit,在android平台可以极大的提升运行效率,而这个也是自己开发脚本所不具备的。


三、Torque3D (http://www.garagegames.com/products/torque-3d/)

       Torque有丰富的编辑器内容,而且有点像Quake一样,游戏就是编辑器。在地形编辑上面额外多了水流、道路编辑的功能。但总体来说这个引擎没有太多值得学习和参考的东西。绝大多数功能都是通过脚本来实现,编辑器只包含最基本的编辑功能。而且脚本也是自己开发的一套语言。框架不能说诡异,但是怎么看怎么不舒服。


四、Torque2D (http://www.garagegames.com/products/torque-2d-1.8)

       除了编辑器框架和脚本,似乎Torque2D和3D没有什么直接联系。一样是功能该有的都有,但是我感觉这个引擎最致命的问题就是像UDK一样自己搞一套脚本,如果直接用现成的脚本语言,比如python、lua、javascript,那么会更容易把引擎推广出去。

       好吧,这个Torque2D还不如Torque3D,属于只有一个可以运行游戏的程序,其他的编辑器什么都没有。而且就2D功能来说,也只是包含最基本的图片渲染、粒子光效和物理,不能说不够用,但是也没有什么亮眼的敌方。


       以上四个是我现在找到的编辑器完整的开源游戏引擎。现在在我看来,编辑器与否并不是很重要。 某些编辑器是必不可少的,比如UI编辑器、粒子编辑器、场景编辑器,但是并不一定需要一个大而全的所见即所得编辑器。 很多时候清晰的开发流程更加重要,美术用3DMax制作并导出模型,策划在场景编辑器中使用和测试这些资源,程序完成功能的开发。  只要每个人都善用工具来解决自己的问题就可以了。  而且很多时候,从接受程度上来说,你给美术一个粒子编辑器要比给美术Unity然后告诉他只需要关注其中的粒子系统部分要高。



1 1
原创粉丝点击