Dropping by to second Godot as a good choice for game development in 2021:
https://godotengine.org/I'd say that its advantages are:
- small download size, easy to get started with
- has a pretty shallow learning curve
- decent documentation and tutorials: https://docs.godotengine.org/en/stable/
- their GDScript language is pretty reasonable: https://docs.godotengine.org/en/stable/getting_started/scripting/gdscript/gdscript_basics.html
- they also support C# (even though less convenient than Unity), the performance of which is better
- they also support C++, if need be (though probably a bit less convenient than in Unreal)
- really good for 2D games, more convenient than Unity
- unlike certain engines (Unity, which deprecated HLAPI and LLAPI), it seems feasible for multiplayer: https://docs.godotengine.org/en/stable/tutorials/networking/index.html
- the node based approach to scenes composes really well, not the kind of mess that Unity's prefab system is
Its current downsides are:
- current stable versions are underwhelming for 3D games (and no functionality like automatic LOD in the engine, it's really nice in Unity)
- a lot of the development is focused on the upcoming Godot 4 release, which isn't quite ready for being a stable release yet (e.g. wait for using it for 3D in larger projects)
- GDScript is nice to get started with, but the performance can be underwhelming (for certain types of games), it has similar fragmentation to how Unity used to have with C#, Boo and ECMAScript
- if you use GDScript, some patterns might be harder than others to implement, e.g. having game global services and singletons (e.g. like IaC) that handle common logic regardless of what scene is loaded
- if you use GDScript, the ecosystem (e.g. package management) that's available to you is severely limited, you won't be parsing YAML or formats like that anytime soon, nor will you be talking with SOAP/gRPC APIs if the need ever arises, nor will you be sending stuff to RabbitMQ/Kafka or anything else, which in general purpose languages would be a library import (not a dealbreaker, just something to consider)
- the asset store is still new, no realistic chances of being able to earn money from submitting packages there yet: https://godotengine.org/asset-library/asset (it cannot compete with the asset store of Unity)
- their node based model can seem cumbersome and inconvenient for some, where each node can only have a single script: contrast that with Unity where you could have separate components for the same game object, e.g. HealthAndManaContainer, GenericEnemyAIController, SpellCastingAIController, PathfindingController, EnemyVoiceController, ... (just a random example i thought of, thinking in terms of nodes instead of having the separation between objects/behaviour takes some getting used to)
- there is lots of hype surrounding the engine, but it's still relatively new, expect fewer resources than the likes of Unity have and more outdated ones because of the pace it's moving ahead at
- platform support is falling behind the proprietary alternatives in regards to consoles, due to the console publishing landscape being an anti-developer dumpster fire due to the large corporations wanting to protect their IP
Depending on what you want to do, those may or may not be relevant concerns.
Overall, though, it's a lovely engine and i see a bright future ahead of it.
I just wish that other open source engines also got more love, for example, jMonkeyEngine: https://jmonkeyengine.org/
Seeing how underfunded that one is made me throw some money in its direction, too (since there aren't any other 3D Java game engines with high level tooling): https://opencollective.com/jmonkeyengine
Personally, i'm torn. For commercial projects or industry employment prospects, i'd just go with Unity. The other engines are probably good too, especially for smaller indie projects that you develop for your own enjoyment, but other than that i'd maybe revisit Godot in about 5 years, to see how far it has progressed, rather than take the long way round and experience lots of breakages along the way (seeing as how Unity is past that, because they've broken everything that can be broken, from the rendering, to input systems, to networking, to ECS).
Of course, if i wanted to actually be happy, i'd also look at Xenko/Stride, which was extremely promising, yet also half baked because it seems like the financial backing behind the project just died down and therefore it ever getting competitive with the larger engines just wasn't meant to be: https://www.stride3d.net/