It has been used to make The Case of the Golden Idol, Brotato, Cassette Beasts, and Dome Keeper. It's indisputably a production-grade engine.
As a Rust enthusiast and small-time Bevy contributor, I wish I could recommend Bevy in the same way, but Bevy is actually immature, for real. People do make games with it, some even commercial, but it is what it is.
2. Only target one kind of platforms (e.g. only Win+Linux+Mac but no mobile, or only mobile but no desktop/console)
You'll find almost any open source engine works. Rolling your own 2D engine based on a barebone one is just like writing a parser. If you never wrote one it seems like an impossibly hard problem. It's not.
Modern 3D graphics are built upon a lot of algorithms. From TAA to volumetric rendering to cascading shadow maps to SSAO to voxel-based global illumination... the list goes on an on. Surprisingly, none of these algorithm is truly hard. But you need to implement all of them to make things visually match up modern standard.
For 2D it's more like you know how to pass the offset to a shader? Boom you have sprite animation. If you want some super unique effects with clever shaders, yeah that's not easy, but using Unity doesn't make it less hard anyway.
To add to the big pile of options, HaxeFlixel [1] and Defold [2] come to mind as lighter 2D-focused frameworks with web export options and published games
If you’re interested in programming and building things on your own, but want a starting point where you can immediately draw stuff to the screen, then take a look at raylib or LÖVE. They have super straightforward APIs with very minimal ceremony. They aren’t engines but rather libs/frameworks.
Godot is probably the best bet. Unreal is not great for proper 2D, but give it a consideration if you’re considering 2D in a 3D world. It’s the sprite stuff that unreal is worst at.
I would suggest just using Godot for 2D. With time it should be fine.
For 3D, even AAA have been going to Unreal so that may be best. It's not ideal but the business model of 5% works compared to Unity promising to avoid revenue splitting.
I'm not sure about the current TOS of gamemaker. In a sense I think that this is the worst time to start development on a new game: there are some rumors that insiders may actually get Unity to backtrack, and depending on how all this shakes out (and how negatively this ends up affecting Unitys bottom-line), companies like Gamemaker and Unreal may take this as an opportunity to assure their users that they won't make the same mistake, and adjust their own terms. (althought apparently Unreal allready has certain protections in place were you can use any version of their engine under the TOS it was first released under. Obviously that isn't without risks: if you want to develop games for Windows 12 or whatever you'd have to use a new version of Unreal and agree to their newer TOS anyway)
Long story short, you might want to wait 1 or 2 months to let the dust settle before you pick an engine.
- Godot seems immature in many ways (for example, Web export is currently broken on macOS/iOS according to their docs)
- Unreal seems like major overkill and apparently not well suited for 2D
Is there anything else that is a serious contender?
How can you protect yourself to not end up in a similar situation as the author?