Godot:
- completely free and open source, it actually seems viable long term because it has a pretty active community and lots of contributors, which is honestly pretty important
- the best aspect in my eyes is the fact that it can be installed as a single binary and runs really quickly, none of the bloat of needing complex installers and dozens of packages like Unity does
- the language choice is also pretty interesting, their GDScript language being a bit like Python and being integrated pretty well with the engine, as well as other builds support C# and thus switching from Unity is easier (and C# is just a really nice language); there are community bindings or the ability to use C++, but i find those to be less viable, given the lack of ease of use and documentation
- that said, in most cases i'd opt for C#, not just because of its performance being better, but GDScript lacking certain functionality to be able to use design patterns, for example singletons or service patterns or anything else that attempts to centralize bits of game logic into manager classes versus having everything be some distributed mess of interdependent game objects/scripts
- the tools and functionality that is included is pretty good, however there are some things that are lacking, like a terrain system or dynamic render resolution, though thankfully there are community plugins which address the most severe of these shortcomings
- that said, there is not even 1% of the assets that you'd get in other game engines like Unity or packages, because Godot hasn't really figured out the financial incentives and having a marketplace yet - it's great that you can get a variety of free assets, but as a content creator you might not want to expect Godot to be a viable financial venture yet
- currently version 4 is in development, which adds Vulkan support and numerous other quality of life improvements (like automatic LODs), however 3 is also actively supported and functionality is occasionally backported
- also, the asset formats and other imported files (apart from binary data) can be easily versioned with regular Git installs, maybe with LFS for assets if you want
- overall, it's a pretty nice project and one of the few ones that i'd call "production ready"
Suggestion of some Godot videos - GDQuest channel: https://www.youtube.com/c/Gdquest/videos (they have a site as well: https://www.gdquest.com/)Unity:
- wins in regards to job positions available, hands down
- the support for C# is top notch, IDEs also have nice plugins, e.g. JetBrains Rider tells me which methods are likely to be slow and gives me other hints which is really great
- the documentation is pretty good, there is an absolutely staggering amount of quality tutorials and even written guides out there as well
- the amount of both free and paid assets is absolutely amazing, you can solve most programmatic and other problems quickly (need splines? pathing solutions? dynamic LOD? billboarding for objects far away? or maybe models? what about shaders? all of those and more are covered)
- personally, i also think that the GameObject system with components is really nice - you can attach numerous different behaviors to any object that you want (composition) vs needing to either work with inheritance in Godot by extending scripts or having child nodes affect the behavior of parent nodes (which feels odd, maybe i'm just used to how Unity works)
- the performance for exported games is really good, all of the built in rendering solutions are performant and have been tested really widely in the industry
- speaking of tested, it's also been used for a really wide variety of platforms and has support for lots of input devices etc.
- all of that said, it feels like the engine has made a steep nose dive in the last 5 years, DOTS (their new ECS) is being implemented gradually and oftentimes still isn't as stable as it could be
- the build in rendering solutions are problematic (built in render pipeline, Universal Render Pipeline (URP) and High Definition Render Pipeline (HDRP)), since many of the assets clash, projects need to be converted if you ever switch, external assets might not be compatible, shaders break etc.; a demo scene from 2019 had most materials be pink and became invisible after reimport
- the editor has gotten way worse performance wise, a scene with about 1000 assets takes a minute to load and display (wanted a scene with every asset i have displayed side by side for scale comparison), editing scripts and switching to editor lags noticeably, moving stuff around is slow, just horrible performance on a vaguely modern hardware setup
- the situation of the engine and its parts is an utter mess altogether: they have multiple UI solutions, multiple input solutions, no workable multiplayer solutions (they deprecated what they had, replacements are not ready yet)
- because of all of the above i've since moved from Unity to Godot, the engine feels like some mess of trying to add new flashy features without properly testing them before release while at the same time having most of the legacy stuff stick around except for when they pull the rug out from under your feet and break something
- also, its integration with Git isn't too good
Suggestion of some Unity videos - Sebastian Lague: https://www.youtube.com/c/SebastianLague/videos (more about getting things done with the engine)jMonkeyEngine:
- just suggesting this because i like the project but it's also an example of what not to do
- being able to write games in Java is actually a pretty good idea and works decently in practice, regardless of what others say
- being able to export a cross platform .jar file and run it almost anywhere with a JDK/JRE is also really nice in regards to portability
- the engine being free and having vaguely passable docs and some extensions (similarly lacking like Godot's though) is also okay
- it does fail in regards to UI/UX, though, since not having a user friendly visual editor is one of the larger mistakes that you can make
- also, while code-heavy engines definitely have their place, some of the integrated solutions, e.g. the UI ones are a bit of a mess and the docs were incomplete last i checked
- the graphics capabilities are also a bit limited and it seems that the engine never really got off the ground that well
- that said, i wish the engine would become more popular and would find its niche with passionate supporters, though thankfully it's at least more stable than both Godot and Unity are, so there's that
Link to their OpenCollective, to illustrate my point of why you might need a following: https://opencollective.com/jmonkeyengine (contrast that to Godot's budget, which is shown on their site)In summary, i think that Godot has gained the critical following that it needs to be viable for game development and other pursuits (e.g. tool creation) long term.
Unity will keep to being in slow decline until they'll hopefully get their stuff together down the road yet will also be a dependable workhorse for the industry in a professional capacity. I guess you could also mention Unreal in this niche, albeit it's a tad different (better suited for a particular type of game, a bit harder to code in but also capable of really good graphics).
jMonkey engines and other projects like it (e.g. Xenko/Stride) will pop up occasionally but without Godot's following they might survive at best while having one or two nice innovations or features that set them apart and make them decent for some use cases.
Overall, one has to admire that they can get started with game development at almost no expense, since lots of other tools like Blender and GIMP are also free!