应该说每一个做游戏的人都会有一个自己写游戏引擎的梦。趁着还没有到新公司报道,花点时间研究一下开源引擎,梳理一下自己的思路。
新的游戏引擎是基于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来说,掌握语法来写代码的确能够一两天就搞定。可是写出美丽的高效的代码或者代码量大了怎样正确的维护代码都不是一天两天能搞定的事情。这须要经验的积累。
而自己开发的脚本语言对开发人员来说就意味着学习成本。诚然它非常easy能够半天上手,可是后面会遇到什么样的坑就说不准了。
再说。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。那么会更easy把引擎推广出去。
好吧。这个Torque2D还不如Torque3D,属于仅仅有一个能够执行游戏的程序,其它的编辑器什么都没有。并且就2D功能来说。也仅仅是包括最主要的图片渲染、粒子光效和物理。不能说不够用,可是也没有什么亮眼的敌方。
以上四个是我如今找到的编辑器完整的开源游戏引擎。
如今在我看来,编辑器与否并非非常重要。 某些编辑器是不可缺少的。比方UI编辑器、粒子编辑器、场景编辑器,可是并不一定须要一个大而全的所见即所得编辑器。 非常多时候清晰的开发流程更加重要,美术用3DMax制作并导出模型,策划在场景编辑器中使用和測试这些资源。程序完毕功能的开发。 仅仅要每一个人都善用工具来解决自己的问题就能够了。
并且非常多时候。从接受程度上来说。你给美术一个粒子编辑器要比给美术Unity然后告诉他仅仅须要关注当中的粒子系统部分要高。