Think I'ma just stick with Godot Engine + Blender 3D. The 4.0 release of Godot should be somethin' really worthy, as even the 3.x releases are already amazingly usable and their plans for 4.x and beyond are quite impressive stuff.
Edit: Oh, and Godot already supports all the major platforms right outta the box. Bonus! Totally in favor of another open source 3D engine tho. Can't be a bad thing to have more options available in that space.
Godot is such a pleasure to work with too, compared to other engines I've used. It also depends on the type of game you're creating, but 2D has been a more pleasant experience in Godot vs Unity.
I think that the opinions here will probably be split between the people who enjoy the simpler workflows of Godot (as well as its more reasonable distribution size, somewhat more convenient 2D implementation, amongst other things) and those who are used to the benefits of using Unity, especially in 3D.
For example:
- the ECS and DOTS models in Unity feel way better to work with as a developer, since components can be freely attached to GameObjects to give them behaviours vs the node based structure of Godot, where each object can only have one attached script (though their approach to everything being a scene feels better than prefabs in Unity)
- the support for IDE integrations, such as JetBrains Rider giving code hints about certain API methods being slow, as well as other API things that can sometimes slip by, seems really useful to have in Unity; furthermore the C# API being the primary one feels way more usable and documented than Godot's efforts to add C# support (which, while a great idea, still needs a bit of work to be fully mature)
- Unity also seems way better when it comes to importing assets, such as Blender scenes directly into it, without having to export to Collada, glTF or another format, or having to install a separate exporter for Blender as a plugin which may not be supported in future versions
- on that note, there are also a variety of useful solutions built into the engine, such as light mapping, navigation meshes, pretty optimized occlusion culling, LODs (which i'd say are critical for any larger project, or game genres like RTS) among others, which are either missing from Godot entirely for the time being, or which will need to be installed as separate plugins (like terrain editing functionality, for example)
- the support for a variety of tools and other integrations is pretty great in Unity, thanks to the asset store - for example, if you'd like to automatically generate the aforementioned LODs, then you can just get https://assetstore.unity.com/packages/tools/utilities/poly-few-mesh-simplifier-and-auto-lod-generator-160139
- furthermore, the amount of tutorials and materials for Unity is still probably a bit larger than Unity, as well as its market share will be hard to content with for at least a number of years
That said, Unity also lacks in some other areas, such as there not being a decent networking solution at the time, DOTS not being fully finished, the render pipelines being a bit messy to work with (while there are benefits to using URP and HDRP, it's a bit like the Python 2 vs 3 situation with support varying), as well as Unity just generally trying to implement a whole bunch of functionality that's not exactly production ready. Also, their reliance on Unity Hub doesn't feel like a good sign and it feels like a larger and larger part of their offerings will be cloud based, which is understandable from a business perspective, but also concerning.
I do hope that Godot gets support for the things that i've mentioned that are missing and perhaps even gets things like networking right, rather than going the path of Unity and jumping around various solutions.
Just my 2 cents on those engines, both seem pretty usable!
My own personal experience with Unity tryin'a import models from Blender bein' a huge pain in the butt was what led me to try out Godot after hearin' about but ignoring it for the longest time.
Turns out that Godot ended up auto-importing my Blender models with pretty much zero hassles (drop 'em in a project folder, save 'em back out as a Godot scene), and it was a short time after (under an hour, including the time it took to read some docs to familiarize myself with GDScript) I already had mouse/controller clicky code attached to them and a first person camera controller in place. Since then, the more I learn about Godot the more I enjoy workin' with it, pretty much like my experiences with Blender. :)
Of course a large part of my affinity for Godot could be influenced by my love of Python and the similarity of GDScript to Python code.
Since Blender made Godot its default game engine, their integration really has become almost seamless. I hate to say it, while I learned Godot on GDScript, which is similar to Python, you do get a bit of a performance boost by switching over to C#. I'm not sure it's enough to learn, if it means not making games, don't get me wrong. Hating the language and the process can mean the difference between producing and not producing, so do what you're happy with =)
I've heard and had similar experiences with imports, but nothing major. Right now I'm only working on a 2D side scroller for personal experience. Creating a TileSet, and either using Godot or the Tiled Map Editor and importing back to Godot, everything is a breeze.
I wanted to try Godot for the simplicity, and the ability to use Rust at a later time to experiment with.
Godot's got simplicity in spades, that's for sure. So far I've been nothin' but pleased with my Godot experience. Every time I open it up to learn a new thing about it, it's generally gone pretty much silky smooth. Helps that I've chosen to approach it the way I learned to approach Blender tho. In bite-sized chunks, as I need a new feature, rather than tryin'a learn it all at once. That held me back for the longest time tryin'a learn Blender. Kept overwhelming myself with how crazy powerful it was because I wasn't focusing on just my current need. Kept gettin' sidetracked and lost, and then I'd give up for a while because it felt too complicated. ;)
I'd say Godot is the Unity of Unreal Engine.
It might not have started in the pole position but it's gaining a lot of steam and catching up in strides.
With the new Vulkan renderer in 4.0 the 3D performance should make some leaps as well.
Not sure yet how it will impact the VR performance but hopefully it helps there as well. I can live with the performance for now but I am still staying at the original 72hz on the Quest to keep a performance buffer (especially since high frequency hand tracking limits the available resources even further)
Godot is great for the hobbyist but ECS-based O3DE may be worth a look for ambitious devs or those who want to make a career from it. Godot's strict OOP-style object hierarchy is a practically guaranteed source of friction for more complex game behaviors that touch multiple data/logic domains.
Why would you say something like that? Most of the large and small games of the past 20 years have been built with the kind of composition patterns that Godot favors.
Plenty of successful software, including the currently most popular game engines, are designed with strict OOP principles. That doesn't mean there aren't well-documented flaws with it as behavioral complexity increases.
I'll wager that if O3DE sees an actual release with real documentation, it will herald a new generation of ambitiously-scoped games that actually realize their ambitions instead of crumbling under OOP-induced technical debt.
There are a couple of reasons; performance is one.
Besides that, games have an (un)surpring level of coupling between entities. Even a simple, few hundred lines game, is a tangle. The ECS designs decouples the entities, which is a very significant design improvement.
What has been done in the past is not really indicative, as ECS is relatively new (in the grand scheme of things).
Something that can be said though, is that ECS is frequently considered overkill for small projects.
I can assure you, lots of "classic EC architecture and even OOP architecture" games also have many Systems in the ECS vein, when they need them. Not for the performance (that's tied to memory layout in ECS) but when it's easier to implement a given piece of logic that way. Traffic, pedestrians, opponent AI, weather, mission flow, encounters, are a few typical examples.
I think one doesn't need to reach that complexity in order to benefit from ECS design.
On the other hand, most of the games have somewhat-throwaway code, so the code design may not be so important indeed (VVVVVV was for example discussed on HN).
Edit: Oh, and Godot already supports all the major platforms right outta the box. Bonus! Totally in favor of another open source 3D engine tho. Can't be a bad thing to have more options available in that space.