My experience with the Godot game engine
Most of my game development experience has been with Unity, except for my foray into Love2D
When Love2D didn't work out, I started looking at some other engines and settled on Godot.
Here I'll note some of my initial opinions on the engine after making a few small games.
What I liked
Open-source
Not much to say here, this is always a plus. Especially with the recent drama about Unity pricing.
The app is lightweight and clean
The file size of the Godot app is only 149MB, and is just a single .exe file. This doesn't really mean anything for the development experience, but I just love portable apps like this.
The UI also doesn't feel bloated.
GDScript
 GDScript is Godot's built-in programming language. The language itself is quite good. But what I really enjoyed was how integrated it is into the engine.
You can edit scripts right from the engine, and the auto-complete knows about objects (called "nodes" in Godot) in the scene.
Combined with the previous point, it means that Godot is the kind of app you can just pull up quickly and add a few things to your game.
I also love signals, which is the Godot implementation of the observer pattern. Having this as a built-in type and integrated in the editor makes it easy to create a loosely coupled code structure.
Scenes are composed of scenes
Unity has prefabs for reusable game objects.
In Godot, you can simply insert a scene into another scene and it serves the same purpose. The workflow ends up being about the same, but it's just one of those simplifications that just make you think "oh yeah, that makes sense".
Game files are just human-readable text.
 This makes it easy to track changes with version control.
I've heard that Unity has a way to change game files into yaml. But last time I looked at version control for Unity, most people recommended a paid service because just using Git did not work well.
What I didn't like
One script per game object
In Unity, you can have multiple scripts on one game object.
This makes it possible to easily create small scripts that can be composed of different objects. For example an enemy could have an HP script, a movement script and a loot-drop script.
To make a destructible chest, you could just add the HP and loot-drop script and you're done.
In Godot, you can only have one script per object. The script is then a sub-class of the type of the object.
This means that if you want reusable functionality, you have to add a new object. Which is more overhead and also means that you have to reference the parent object to make changes to it.
I guess the fact that each object is a single class should be useful somehow, but I did not find that I really used it for much.
No runtime editor
Unity allows you to see the game in the editor while the game in running.
This is an incredibly powerful tool for development and debugging.
Godot simply does not have this feature. I think this would be the deal-breaker for me if I was making a large game.
UI themeing is confusing
In Godot, you can change how the UI looks using themes.
You create a theme, add it to objects and then you can add game objects types to the theme and then you select the type of change and then you can choose defaults to override and then you often have to add a new kind of object that contains the configuration for that specific part like the hover of a button is a StyleBoxFlat that you then have to edit in a new page, oh and these styles can either be a file or just kind of embedded in the object itself and then you can override specific settings on the object and...
There is a chance that I just don't "get it". But I just feel like there must be some simpler way of doing this.
It's a shame, because the UI elements provided are great and it's easy to compose them.
If you could just style them more easily, it would be perfect.