应该说每个作游戏的人都会有一个本身写游戏引擎的梦。趁着尚未到新公司报道,花点时间研究一下开源引擎,梳理一下本身的思路。javascript
新的游戏引擎是基于cocos2d-x,我但愿能够从这些开源引擎中学到:java
一、粒子系统、粒子编辑器。python
cocos2d-x的粒子系统至关薄弱,不是说没有,但是想用他作出酷炫的技能特效是很是困难的一件事。android
很是多人都有作cocos2d-x的粒子编辑器。但是在我看来,粒子系统自己薄弱了,编辑器终于也就变成了一个參数编辑和效果预览的工具。c++
二、模型载入和骨骼动画播放。研究一下换装系统需要哪些支持,顺便看看能不能实现Unity的动画重定向功能。c#
三、声音引擎。看看能不能找到相似开源的FmodEx的声音引擎。框架
四、研究下编辑器框架怎样设计和搭建编辑器
五、Box2D和PhysicX的物理系统怎样封装工具
1、Genesis-3D(www.genesis-3d.com.cn)post
搜狐畅游耗资千万美金,开源的3D游戏引擎。可以支持公布到PC、Android、iOS平台。
在分析第一印象的优劣以前我先说下。UDK、UE四、Source、Quake、Doom什么的代码是有的,但是临时不打算看了,因为过高大上或者技术向的代码我惧怕Hold不住,我关注的是怎样改进生产流程。而不是学习什么高级技巧。
而且我现在最需要的是基础设施,而不是什么东西都有后要作的更好。
长处是编辑器完整,框架清晰(还没看代码。仅仅是从使用上来看)。我想要的那些基础设施也都在。文件和资源系统没有像Unity同样打包在一块儿,这点我是很是喜欢的。粒子系统配置什么的都是xml文件。參考学习起来比較方便。粒子系统很是美,跟Unity差点儿相同,假设能直接拿来用就行了。可以说假设早个三五年推出应该是很是有竞争力的产品。
缺点是:
一、不能直接在编辑器里面执行游戏,仅仅能预览静态场景。
代码他们彷佛是经过本身改动的Mono来实现直接编译的功能。直接改动代码不会需要又一次公布版本号。但是资源的改动彷佛就麻烦了。从这点来看。Unity更偏向All in one的编辑器,一切都在编辑器里面操做測试完成。最后需要的时候再公布版本号。
而Genesis3D更偏向一个公司的商业引擎,美术程序分开工做。需要的时候把资源整合,公布个可用的版本号。而后继续測试开发。 尽管我以为这个是缺点,但是说实话我我的仍是倾向于Genesis3D的方式的。因为我感受仅仅要生产流程清晰了,那么是否是有一个All in one的编辑器不那么重要,甚至没有编辑器也OK。仅仅要相应开发的终端有合适的工具就可以了。 Genesis3D会让我感受本身更像程序开发人员。而不是全包全揽的独立游戏开发人员。
二、各方面都很是像Unity。
且不管是否是坊间传闻的买了Untiy的代码而后本身改的。
我仅仅能说是一个山寨的Unity1.0版本号。代码设计上孰优孰劣不少其它的是我的喜爱,但是编辑器上看很是多地方作的都不如Unity方便。仍是那句话。假设不跟Unity比,那么看起来很是美,但是一比就山寨了。
三、编辑器能扩展不? 我在教程里面没有看到,临时以为没有吧。 Unity最大的魅力是可以本身定义编辑器内容。 以此衍生出很是多很是有魅力的插件。比方一些行为树AI插件、2D骨骼动画插件,这些插件跟Unity结合在一块儿大大的丰富了引擎自己的功能。
不然的话光靠本身是很是难知足用户需求的。即使开源也不行。
四、待续。
我相信真正使用起来会有很是多值得吐槽的敌方。但是假设是像我同样的刚開始学习的人来学习的话。仍是能够收获很是多东西。
2、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游戏上仍是很不错的选择。
再说缺点:
一、编辑器操做起来不是很方便。
二、使用本身的GDScript语言。
这个我是不太赞同的,我具体说下个人见解。 做者分析了现有语言的优劣,而后决定本身开发一套脚本。比方lua、python假设用导出的方式会很是麻烦。而且会大于现在GDScript的核心。 c++固然是编译语言,开发不方便。 c#则是因为开源协议(Mono是LGPL)因此被放弃了。 但是在我看来,即使舍弃或者兼容一些东西。使用lua、python、javascript的意义也要大于本身开发一套脚本语言。 且不说本身开发意味着大量的时间和精力投入,用户会有一个学习的过程。就拿lua来讲,掌握语法来写代码的确可以一两天就搞定。但是写出美丽的高效的代码或者代码量大了怎样正确的维护代码都不是一天两天能搞定的事情。这需要经验的积累。
而本身开发的脚本语言对开发人员来讲就意味着学习成本。诚然它很是easy可以半天上手,但是后面会遇到什么样的坑就说不许了。
再说。lua和javascript都有jit,在android平台可以极大的提高执行效率,而这个也是本身开发脚本所不具有的。
3、Torque3D (http://www.garagegames.com/products/torque-3d/)
Torque有丰富的编辑器内容。而且有点像Quake同样。游戏就是编辑器。在地形编辑上面额外多了水流、道路编辑的功能。
但总体来讲这个引擎没有太多值得学习和參考的东西。绝大多数功能都是经过脚原本实现。编辑器仅仅包括最主要的编辑功能。而且脚本也是本身开发的一套语言。框架不能说诡异,但是怎么看怎么不舒服。
4、Torque2D (http://www.garagegames.com/products/torque-2d-1.8)
除了编辑器框架和脚本,彷佛Torque2D和3D没有什么直接联系。
同样是功能该有的都有。但是我感受这个引擎最致命的问题就是像UDK同样本身搞一套脚本。假设直接用现成的脚本语言,比方python、lua、javascript。那么会更easy把引擎推广出去。
好吧。这个Torque2D还不如Torque3D,属于仅仅有一个可以执行游戏的程序,其它的编辑器什么都没有。而且就2D功能来讲。也仅仅是包括最主要的图片渲染、粒子光效和物理。不能说不够用,但是也没有什么亮眼的敌方。
以上四个是我现在找到的编辑器完整的开源游戏引擎。
现在在我看来,编辑器与否并不是很是重要。 某些编辑器是不可缺乏的。比方UI编辑器、粒子编辑器、场景编辑器,但是并不必定需要一个大而全的所见即所得编辑器。 很是多时候清晰的开发流程更加剧要,美术用3DMax制做并导出模型,策划在场景编辑器中使用和測试这些资源。程序完毕功能的开发。 仅仅要每个人都善用工具来解决本身的问题就可以了。
而且很是多时候。从接受程度上来讲。你给美术一个粒子编辑器要比给美术Unity而后告诉他仅仅需要关注当中的粒子系统部分要高。