本人已经入手了Godot 3 beta阅读了文档并做了一些深度体验,就来这里完成我人生中第一个奶牛回答了!

总结4个字:相当期待!

终于除了Unity和UE以外,又多了一个可选的带编辑器的多平台发布免费引擎了!

废话不多说,我先说说适用人群并从中去介绍它的优点吧:


一、新手开发者

我觉得Godot的上手门槛相对于Unity来说更为简单,Godot使用的是自家研发的类Python的脚本语言:GDscript,上手难度是低于C#的,而且还支持脚本更改实时同步,不需要重新编译就可以立即看到效果,这对新手开发者理解API及运算的敏锐度等都能够带来相当直观的提升。

(这里补充一下:很多人不理解为什么开发者不用LUA等已经广为所用的脚本,非要作死搞什么自己的脚本语言?事实上Godot在最初是用的LUA,但是将LUA绑定到面向对象为主的系统框架需要十分庞大的代码量,也很难嵌入到Python之中,如果想知道更全面的GDScript历史可以点此链接:GDScript

还有,相信用过Unity的人都知道Inspector的拓展其实是比较麻烦的,你苦读多日好不容易熟悉了大体的API之后,当需要拓展Editor之后才发现打开了另一扇罪之门,这得多可怕?像什么PropertyDrawer,EditorWindow等,深入到工具层面的什么EditorGUI,EditorUtility等等,才有你好受的。

Godot就不会有这问题,首先你是不需要单纯为了某个getset去搞一个CustomEditor的,你只需要在脚本的开头写上一个 tool:

92add0a2740e477add661605d1be7234.png

tool可以理解为强大版的ExecuteInEditMode,之后你所有Inspector里的数值都可以触发set方法了!是不是很简单?

如果你想要搞什么自定义窗口,那不要太简单,你也不需要去学什么新的API,像那个某U还要学GUI,还有相对简单点的什么GUILayout,多麻烦!

在Godot里,你只要知道怎么做游戏UI,就知道怎么搞自定义窗口,因为整个编辑器和游戏UI都是一个框架底下的产物!

不想写程序?没关系,Godot的第二种类蓝图的可视化编程就是你的最佳选择啦!而且Shader都有可视化编辑器(不过3.0先暂时拿掉了,3.1才会回归)!再看看旁边那个某U,嗯。。。没事,人家资源商店强悍嘛,你有钱也有一堆插件任你选。


二、想要完全免费游戏引擎的开发团队

由于Unity和Unreal对引擎都拥有绝对的拥有权,所以在免费使用之余都别忘了,他们拥有向收费的权利。Unity是在公司达到10万美金收入之后,就需要付费1500美元购买专业版;而Unreal则是在你获得首个3000美金后,往后的收入都要支付5%作为版权费。Godot则是基于MIT的完全免费引擎,自然不会出现事后要补钱的问题啦!


三、想要相对成熟,并且更规范2D游戏开发环境的开发团队

用过GMS等2D引擎的人再去用Unity2D开发游戏都肯定会挣扎过,因为Unity2D始终不是正经的2D游戏开发环境,而是基于3D空间的伪2D开发环境,很多时候想要实现一个Pixel Perfect的开发环境,什么以像素点为移动单位,还有获取Sprite在空间中的绝对宽高都是相对麻烦的。

Godot除了提供了独立的2D开发环境以外,也有自带的Tilemap制作工具,甚至能够胜任六边形,2.5D等的开发流程,而且在Shader编程方面,2D也有相对简化的版本,所以在开发上可以节省不少时间和劳力成本。

此外,Godot也有比Unity强大的动画编辑工具,不仅支持骨骼Rig,还支持红蓝的洋葱模式,往后也会支持FFD,整体来说对2D游戏开发提供了相当不错的开发环境。


四、非3A级开发,并对运行效率有追求的开发团队

Unity始终是个闭源的引擎,一旦遇到了难以逾越的效率瓶颈就很难处理,而且很多时候插件也都是基于c#脚本开发的,运行效率相比原生的肯定会大打折扣。而Godot呢?Godot开源!Godot开源!Godot开源!重要的事情说三遍!开源意味着什么?可定制化阿!先不说直接把Godot作为固件C++开发这种极端的方式,Godot本身提供了GDNative这一管道。这是啥呢?GDNative允许开发者在引擎里直接通过C,C++,或者Python等语言直接调用引擎所有的API,或是使用第三方插件,其效率可以说十分趋近于原生开发了!Procedural Generation等等那些运算量极大的机制,你在Godot里效率真是想提高多少就能提高多少好吗?


五、非土豪的中小型独立的Unity开发者

没错,说的就是我你他这些中小型独立开发者,不想学GDScript?也不想用可视化编辑器?嗯,告诉你,Godot3.0允许你用第三种语言开发,那就是你常用,陪伴你数载的C#!惊不惊喜?意不意外?Godot 3.0使用了最新版本的Mono,并且由微软内部的研发人员直接参与(这是微软赞助Godot的附加条件,为了让更多人使用C#),表现自然十分稳定!如果你和我一样,并不是所有插件都能想买就买,在空旷的环境底下,我真的十分建议尝试一下Godot。而且,Unity的Prefab真的是让人十分无奈,为什么Nested Prefab等了N个版本了到现在都没有?而Godot的Scene System就真的有惊喜了,Unity是Scene + Prefab的框架,而Godot所有的物体和场景都是Scene,而且所有的Scene都可以继承,所以什么基础Scene啊,Nested Prefab啊,到了Godot都不是问题!你只需要个别决定哪个Node(类似于Unity里的Component)是要独立于其他的同类就可以了,是不是很简单?

除了上述所说的优点,其实Godot还有很多优点,例如可发布Html5,发布体积小,引擎体积才20多MB,PBR,全局光照,GPU Based 粒子系统,还有今天公布的LightMapping等等,都能成为各大开发者入坑的理由。


好了,吹了一堆,是时候也要来说一些不好听的了:

一、太年轻

是的,3.0加了一堆新功能,甚至整个渲染底层都改了一遍,可想而知Bug自然会多如山,而且部分的编辑器体验也不太友好,不过目前毕竟是Beta版本,希望正式版可以有或多或少的进步吧。


二、在国内发布很繁琐

引擎的体积会如此之小,原因是Godot把发布的编译器先拿掉了,所以当需要发布时候,需要重新联网去下载Godot发布模板(Export Template),这时候问题就来了。。下载速度会极慢!不科学上网的还真的很难解决。当然你也可以通过官方教程,去下载一个又一个的编译器再使用命令行去完成编译,但不管怎么说,还是比较麻烦的。


三、2DSprite不支持sliced,tiled等类型

这点还是比较伤心的,尤其在Unity加入这些功能以后再过来用,就会觉得有些失望。虽然可以用脚本去实现这个效果,但是用起来始终不太舒服,感觉也会有些混乱。


四、使用者较少,社区活跃度不足,缺乏有说服力的Showcase

相比Unity和Unreal这些使用者较多的并更为成熟的引擎来说,Godot遇到问题很难找到解决方案,尤其是最新的Godot3.0,虽然目前可以通过IRC,Reddit,Discord的方式向社区提问,但是反馈一般比较慢,而且这些渠道国内都不常用,再加上始终没有说服力强大的Showcase,所以也很难说服更多的人去使用Godot,这可能会陷入不良的循环。


总结

其实从各种层面来说,Godot都还是十分年轻的引擎,虽然问题有很多,但是他还是相当适合对某些方面有特殊需求或者真的很需要绝对免费的游戏引擎的独立开发者。如果单从引擎的功能来说,Godot3不见得比Unity落后多少,但是Unity的资源商店太过于强大了,使得建立原型实在太过于便利,这是缺乏Showcase的Godot望尘莫及的。但是我相信随着时间的迭代以及优秀的Showcase出现,Godot肯定会在独立游戏圈带起不小的旋风的。(也有人说用Unity做原型再到Godot里做游戏,我觉得这也是不错的选择哦)