I’ve refrained from talking about specific things in which I think Godot is better than Unity so far, because I didn’t mean it to be another Unity bashing thread. Actually, this thread was just what you mentioned, indeed - my personal motivation and preferences to work on an open source game platform.
Moreover, I haven’t made anything significant with Unity and I’ve only played with Godot for couple of days so far, so I thought I’m not in a good position to talk about the subject in an objective manner.
But now it seems that the thread is going into that direction anyway, so it might be better if I list some of the specific things that I liked about Godot, so we could stop fighting on some vague claims.
As noted above, the biggest difference between the two engines seems to be how they treat reusable components respectively.
As we all know, Unity has Prefab which is kind of handy. But so far, it doesn’t support nesting and in order to test it visually, you need to add it to some scene first.
In Godot, however, things are much simpler with its unique ‘scene instancing’ and node system. In short, you can save any arbitrary subtree of a scene and reuse it just as you do with Prefabs, but it supports infinite nesting and more importantly, each of such tree is a scene itself so it can be edited individually and you can even run it, just like a normal scene.
And when you instantiate such a saved scene and attach it to another one, its subtree is hidden by default, so it results in less clutter. All in all, I find Godot’s way of doing things is more intuitive and convenient, especially when it comes to building a large scene by constructing its constituent parts in a hierarchical manner.
And another great feature of the engine is how its animation system works. In Godot, you can easily create and edit animations inside the editor like you can with Unity. However, Godot’s the animation system also applies universally to every aspect of any arbitrary nodes.
It means that you can easily make an animation that controls node properties or even function arguments in the same way you can move it around the scene. It’s really useful if you want to animate UI elements or 2D sprites including making them pulsate or flying around in a curve, and etc but it can also applied to 3D elements as well.
And when it comes to building UI, I think Godot has much better system with more intuitive API and more number of components out of the box. You no longer have to attach various sub components to change layout or work with deeply nested subtree to compose more complex element out of smaller ones.
It’s closer to how WYSIWYG UI designers in more generic development platform works. I’ve seen many such threads here asking whether or not it’s possible to build business applications with Unity, and I agree with most other people that it’s not the best way to go. It still holds for Godot, but with its UI system I feel it to be at least a viable approach to build more complex, business like applications.
Also Godot uses the same system for both in game, and editor UI. Even though some might argue that the lack of an immediate mode GUI could be a flaw, personally I don’t really miss it, especially when considering how inconsistent and cluttered Unity’s IMGUI API looks.
Lastly, Godot’s UI system has a builtin support for styling and localisation which currently Unity supports via 3rd party assets. I also created my own system for those features in Unity once, and even though it worked quite well, such things are better be integrated tightly to the UI system rather than done in an ad hoc manner.
Godot supports notifications between nodes via ‘connecting’ them both in editor and in scripts. Personally, I prefer Unity’s event system (aside from sending messages, for which Godot has equivalent feature) because it’s a more idiomatic C# way, but I can see how it can feel easier that way for other people.
It’s a minor point, but I also like how Godot manages most of its resources without creating a metadata file for every one of them. Especially when using a source management system, dealing with those metadata files can be quite a nuisance. And even though Unity also supports text mode serialization for scenes, Godot’s file format is designed from the start to be friendly with source management systems, so it’s much easier when you compare the changes.
All in all, I believe Godot already has enough features to compete with Unity when it comes to creating 2D games. Even with many rough edges, and lacking some features that Unity has, I can see how it’d be much easier to create simple 2D games in Godot than it is in Unity.
Probably it’ll take some time before it’ll be more widely adopted, especially with its limited platform support and C# binding still in its early beta stage. But with the speed it’s moving at, I’m pretty certain it will be quite a serious contender to Unity quite soon, and I have high hopes that it might be as competitive in 3D department in the long run as well.