I am not an experienced game dev, but I do have plenty of experience coding. I tried Unity for about 5 months last year – hobbyist, but very intensive. I’ve been exploring Godot for the last couple of weeks. For me, I Godot’s 2D support is much more natural. Godot knows what it is right now and Unity does not.
Even ignoring their whole pricing fiasco, Unity seems trapped between the past and the future – most experienced devs are using parts of the engine that Unity is saying is the way of the past and won’t be supported in the futuer. But the parts that are the way of the future (like UI Toolkit) are significantly more burdensome and/or not very well explained, and don’t have enough user base to get great help yet because all the experienced devs are using the old tools. So there’s often multiple ways to do things but, in my experience, neither felt “right” per se.
With Godot, all the UI tools are super clear. Handling input is super clear. 2D is super clear and not just a slice of 3D space for no good reason. Unity handles 3D meshes for navigating but not 2D meshes? (You can get an add-on.) I’m sure there are lots of ways in which Godot doesn’t quite match Unity yet, and I’m not expert enough to know… but everything I’ve tried to do so far has (for the most part) been clear and easy. Nodes and Scenes, for the most part, make great scene and work smoothly. I like it better than Prefabs. I never liked Unity’s ScriptableObjects (because I don’t exactly want to do what they’re meant for – I’m sure they’re great at doing what they’re meant to do).
I’ve been using C# and the support for it is excellent in Godot.
The one thing I wish was that class inheritance made more sense in Godot. Maybe this is because Godot started with GDscript which is meant to work with nodes, and it handles things differently, but there are times it seems “obvious” that one class should inherit from another… Like maybe I want an Entity class that inherits from Area2D, and then a bunch of subclasses that inherit from that, but I’ve had issues with that, I think because of the node tree? But I’m not sure; I may have just messed something else up. There’s theoretically “Inherited Scenes” and there’s discussion of using that and class inheritance, but there’s also talk that this feature isn’t ready for prime time, and literally the first time I tried to do this, my project had trouble saving the inherited scene until I deleted it. So… just a little weird. But I’m getting by perfectly well using interfaces and a component mentality for design instead. I’m sure as I learn more, that side of things will become more clear to me.
The Godot community is great from what I’ve seen so far, but this is a bit of a tie since Unity is such an elephant in the room and there’s so much discussion out there for it.
Ultimately if someone is using Unity and loves it and isn’t worried about the corporate board and upper management making terrible decisions, then they probably shouldn’t switch. If someone isn’t yet invested in either, they owe it to themselves to explore both to see what they offer and how they (and their communities) operate, and determine which suits them best.
I’m extremely happy I decided to try out Godot. It’s been such a good experience, and I’m really encouraged by how active the development on it is, while not chasing corporate pipe dreams.