What are the options for game developers looking to migrate away from Unity?
I work as a maintainer for the Open 3D engine. To echo some of the statements in the blog, the engine definitely has a higher learning curve compared to some of the other engines, like Godot, but I've been impressed with the progress being made to improve the engine each release.
For some perspective, the history of O3DE's development involved wrangling the legacy code of CryTek and Lumberyard combined. That is a massive undertaking, and most of the work went into cleaning that up. I think now it's beginning to reach a point where O3DE can start shining on its own. Time will tell though
If anyone has questions for me, feel free to ping! email: tkothadev (at) gmail.com
Also might be worth noting Unreal has a "Unity to Unreal" conversion guide in their documentation: https://docs.unrealengine.com/5.3/en-US/unreal-engine-for-unity-developers/
Here is my experience as a unity developer learning Unreal. https://open.substack.com/pub/nooparmygames/p/learning-unreal-as-a-unity-developer?r=1mevny&utm_campaign=post&utm_medium=web
I've switched over to Godot years ago, and for mobile I roll my own solution using pixijs (a JS rendering engine) with Cordova. I haven't published any games for consoles (yet).
A good option you don't hear that much about: Heaps.io. It's an engine built on the Haxe programming language, and games can be published anywhere. It has been used for some high profile games like Northgard and Dead Cells.
Several years ago I made this game with GameMaker: https://www.youtube.com/watch?v=iNImJi58NIg
It was my first attempt at making an entire game. In the end, I only finished one eighth of what I wanted in over a year, partially because GameMaker doesn't scale very well for larger projects...though admittedly I was also VERY inexperienced.
To anyone wanting to learn how to make 2D games without first having a degree (or the equivalent of one), I would actually still highly recommend GameMaker. As far as I'm aware it has more features now than it used to, some of which seem to fix a lot of the issues I was having like not having structs. People complain about the price, but that's only if you want to release a game, which if you're learning isn't important. Also the free version does let you put your games on this thing called GX.games, which is an improvement over what the free version used to let you do.
That said, I am under the impression that the entire game engine scene is utter garbage, in the sense that every single one tends to stifle creativity and innovation by assuming only common gameplay features. Even the very idea of artificially splitting up a game into objects and scenes is incredibly stifling in that it assumes the programmer doesn't want global control over the entire game. Decades ago, it made sense that different levels/worlds in a game should be kept separate because it wasn't technically feasible to have a completely open world. Nowadays open worlds in games are very common, but even then current engines don't allow for any kind of interesting interaction in those open worlds, so in practice the only difference is games tend to have less loading screens. It's not like what you do in one region of the world can influence what happens somewhere else. This kind of thing is probably why many games like Cyberpunk were originally planned to have an adaptive story where your choices matter, but in the end had a completely linear and unchanging one. People generally assume it was because of greed or whatever; I think they genuinely wanted to have choices and cool nonlinear open world stuff in the story, but couldn't because their engine technology didn't allow it.
Now, I am very early on in my journey to make games the handmade way with Vulkan, but I apparently can't help but continue because no matter how annoying Vulkan gets, I somehow keep figuring out more and more of the API and how to do what OpenGL and D3D11 make much simpler. And I know using an engine is simpler and easier, but I can't get myself interested in any existing engine. They all just seem boring to me now in comparison to the craziness of using a modern graphics API directly.
Ultimately, my end goal is to develop an engine which enables me to make games which defy the problems I outlined above. Who knows how long that will take. Many years probably! So don't get too excited, assuming you care.
edit: I admit I have not worked in the industry and that "utter garbage" is somewhat hyperbolic.
I've been playing around with Bevy, and it's a fun little thing to make stuff with if you're happy to do 99% of your development in a text editor or in other tools. Right now, it is not finished, and a great deal is subject to change. I'd say that it's worth keeping an eye on if you like working with Rust or if using an ECS driven engine is interesting to you, and you can absolutely put out a high quality game with it if it's reasonably small in scope, but I wouldn't recommend it for large scale projects yet. To quote the readme on their github page:
Bevy is still in the early stages of development. Important features are missing. Documentation is sparse. A new version of Bevy containing breaking changes to the API is released approximately once every 3 months. We provide migration guides, but we can't guarantee migrations will always be easy. Use only if you are willing to work in this environment.
I’ve had bad experiences with UNIGINE. It isn’t even that good as a simulation engine. The simulation industry tends to care more about deterministic real-time performance than games do, yet UNIGINE has big stuttering and overall performance problems. I’d stay far away.
All those Steam porn games are made with RenPy.
Pygame is pretty sweet. All you need is a little Python knowledge and a quick tutorial and you'll be up and running! I've heard it's not as performant as other libraries/engines, but I haven't hit that bottleneck just yet.
Also built with XNA: Terraria, one of the best-selling games of all time.
I personally am going to attempt switching to Bevy first because I'd like to use Rust, but if I find it insufficient for my needs, I assume I'll move to Godot and try to use their new(ish) GDExtension feature to try using rust that way. I can't handle writing any more C#
I personally really like Godot, I've made a few small games on it, and it would be my first choice for a game jam. I use the gd script rather than C#
I am also really loving raylib and am using it to learn how to program in C. I spent an entire day just making tetris but along with what I've learned from your lessons and your handmade series I feel like I can really make something in C. Raylib also comes with version of notepad++ that is bundled with gcc and a default build script which really helps with the initial time investment of setting up before you can even start programming in C.
Few words about Tellusim
Started by Unigine's ex CTO, Alexander Zapryagaev, extraordinary talented individual.
Based on modern gpu driven tech. Has a lot of cool lower level APIs that allow you to set up your custom compute rasterization or hierarchical LOD graphs in a hundred lines of cross platform rendering abstractions.
Here is an example of implementing Gaussian Splatting rendering using their SDK
Not for indies, but if you have a challenging project, I'm sure Alexander Zapryagaev have a tech for you to be covered.
For Go aficionados, there is Ebitengine (https://ebitengine.org/) as a 2D game engine.
One thing I don't see mentioned often when stating that "Godot doesn't support consoles" is that there is https://w4games.com, which seem to exist to alleviate this problem. They provide a professional solution for devs that do need to port their game to consoles. The company is run by those who developed godot themselves. Sort of like a "Red Hat" arm to godot's community.
Self plug: my Game Script "engine" on itch.io, it can also code itself on Android: https://galaxystore.samsung.com/detail/com.GameScriptREDGPUVersionForAndroid