Game Engine Analysis Paralysis Ends In Orx!

game-engines.jpg


There are a lot of game engines these days. Most people will flock to big and popular options, Unity, Unreal, and maybe Godot. There are also less known but still proven and common options like GameMaker and MonoGame. There are so many game engines that people actually argue about what is a game engine and try to come up with other ways to label things to differentiate some from others. A common one is saying some things aren't game engines, they're frameworks, because they don't provide tools. This is ridiculous in my opinion. An engine is what is 'under the hood' and makes something 'run'. And so for what I'm about to talk about I consider all of these game engines. Some provide tooling and some don't.

About 6 years ago I was diagnosed with A.D.D. not A.D.H.D. just the plain non-hyperactive attention problems having version. Essentially I am not the cliche bouncing off the wall, high energy kid most people think of, in fact if you met me it is kind of the opposite, I speak slow and deliberate and probably seem quiet and reserved. However, I think about a million things at a time it feels like. This makes it very hard to concentrate but also makes me analyze things over and over.

So when I decided I wanted to make a game, it was not as simple as diving into Unity or Unreal and moving along with my ideas. Me being me, I had to research and find every option, over and over for years. I've heard other people call this 'Analysis Paralysis' and I had it bad. There were times when I felt like I found a winner only to get stuck and go back to just looking for engines again.

Earlier this year I decided, I must choose. The landscape is not actually changing. Each has its pros and cons. Choose one, build a game, move on. And so I narrowed it down as much as I could. The list was huge but I got it down to just 6 options.

Unreal Engine

PROS - Absolute professional grade engine. Blueprints are awesome. Can expand into 3D games in the future. Has console support. Funding sources exist through the Epic MegaGrant system. Established community available for asking questions and finding tutorials. Great asset market and constant freebies. Is free to use, since I doubt I'll ever have over $1,000,000 USD revenue.

CONS - MASSIVE! The engine is gigantic both to download, run, and deploy. Game sizes are unnecessarily large for my purposes and resource intensive. The 2D support is not great, most things require a 3D hacky solution, addons, or a custom solution. Is not open source, only source available. Could cost money in the future. Deploying to platforms is quite a painful experience.

Unity

PROS - Complete 2D tool set and professional grade engine. Can expand into 3D games in the future. Established community available for asking questions and finding tutorials. Huge asset market. Console support. Probably more...

CONS - Not (really) free or open source, likes to mess with license and cause problems. My past experience was not good, very buggy engine. Fairly large tool to use though game sizes are reasonable. Just generally do not want to use it for some reason.

Godot

PROS - Free and open source. Great 2D tool set. Can expand to 3D games in the future. Establish community, plenty of tutorials. Small and lightweight tools and reasonable game file sizes and performance.

CONS - No console support. Despite having a decent size community, it is not very good in my experience, almost like politics... very divided and adversarial. This really does a lot to turn me away from Godot. Also, despite having reasonable game sizes and capable of achieving some decent performance with custom solutions, generally the performance is not as good as some of the other options in my testing.

Defold

PROS - Free and almost open source (just cannot make a competing engine basically.) Small but helpful and friendly community. Okay 2D tools. Console support. Lua is a nice language but also having access to C/C++ libraries is nice. Deploying to platforms is amazingly easy. Engine is relatively small and lightweight and runs on most platforms. Game sizes are small and performance is good.

CONS - Missing many features and very opinionated API/dev experience. Everything I tried required hours of research and rethinking it felt like. The messaging system is kind of nice when you get the hang of it but it is still missing so many thing and often makes things more difficult. Just one example off the top of my head is no animation events and no clear way to implement such a feature without hacking on the engine itself. No clear path to 3D.

Heaps.io

PROS - Free and open source. Proven engine with games like Dead Cells. Efficient and performant. Haxe is a pretty great language to work with. Console support. Building with the hashlink emulator is a good dev experience (though building/deploying otherwise is not so great.)

CONS - Not much of a community at all. Barely any learning resources. Not super well maintained, some dependencies are deprecated, some require pulling from haxelib, some require pulling from git, who knows which is which and when? Almost no existing features so things have to be developed from scratch. Has some 3D abilities but would not really be ideal IMO.

Orx

PROS - Free and open source. Best community one could ask for, small but friendly, helpful and active. Very small and low(ish) level library so everything is very efficient and performant. Config driven system makes doing a lot of things relatively easy once you understand it. There are surprisingly a lot of features provided that other engines do not have, despite being so small. Once set up, building/deploying so far has been pretty easy.

CONS - No console support or html/webassembly. Is C/C++ based, which is good and bad, but I am not the greatest with these languages.


If you have made it this far, you probably are thinking a lot of my pros/cons are not what is important in an engine choice. Well, I disagree! Sort of. When I got to this point I had decided that pretty much any engine is capable of the essentials. Especially these 6. I could and should be able to simply build a game with any of them. Some are better than others at the dev workflow and experience, some are better at 2D and some can do great 3D. So... I made a list of criteria to help narrow things down even further.

  1. Console Support. I know, I know... build a game already, worry about consoles later, it requires a lot of other factors to get on consoles, etc... well, that is all fine but I don't want to build my game and get to that point and find out my engine cannot support consoles. So I'd rather be prepared now. +1 to Unreal, Unity, Heaps, and Defold.

  2. Performant 2D. My first 3 game ideas are 2D games. While I love 3D and want to build 3D games in the future, I plan to live in the 2D space for a long time and I need to be able to maintain a good framerate, which should be easy in 2D, but you'd be surprised. +1 to Orx and Heaps. Maybe Defold and Unity.

  3. Dev Environment. I wanted something quick to start up, cross-platform (at least Windows and Linux) and fast to iterate/compile/run. +1 Orx, Heaps, Defold, Godot.

  4. Special Features. I also considered a few things that some have and the others do not really. +1 Orx, Defold for community. +1 Unreal for Megagrant opportunity. +1 Orx for by far best performance. +1 Orx, Heaps, Godot for being fully free and open source. Probably others too...

Anyway... in the end I didn't really use any point system or let any specific features win out. I just started trying to build games in them.

I had made a game with Unity a long time ago so I thought it'd be easy to get going in. I also actually worked professionally on a project with it. So I was a little surprised when it took me 3 days to actually get an animated sprite in a world with a few little features I wanted. It was not a fun experience at all and I decided... Unity is not it. So then there was 5.

I had worked on a game in Unreal for months a couple years ago while trying to do the thing with @ChibiTitan. I actually quite enjoy Unreal. The blueprints are a pleasure to work with. It has so many features that getting up and running is a breeze (once you wait the hour to load up the engine! 😅) In the end though, the 2D features were not great. Just building a bare minimum game was gigantic, like 500mb. And trying to deploy that to my Steam Deck NEVER worked out despite days of troubleshooting. I decided to keep Unreal in the running but knew it was likely out.

Godot is a nice engine to work with once you get the hang of a few things. I had accomplished the same things I did in Unity in less than a day. I like the Node system. It has features that the only other option on the list had was Unity, but I actually got them to work in Godot, unlike Unity. I did not like that there was no console support though. I know W4 is working on it but they're going to charge money for it probably. I also built a simple game up that would test performance, in preparation for my first game idea, and it failed pretty bad at it. But probably the biggest thing nagging at me was the community problems. I didn't feel comfortable talking to people in their community. It is weird to explain why but I have some anxiety issues already so I'll just say it was probably mostly me thinking too much but also just the 'vibe' there. Still... Godot was the frontrunner for a while. It did what I needed and only had a few problems to overcome.

I kind of fell in love with Defold for a while. It felt really nice to play around in lua. I had learned most of the engine in no time, including the rendering pipeline and making shaders and such. Deploying to the Steam Deck this time was very simple. Few clicks and done. It was great. Defold also has console support, other than Xbox, which is coming soon and it was free. So Defold was my choice! For a while. I barely got into building a game with it and started to realize how many things it was missing. And not only missing, but implementing something similar was near impossible because of the opinionated structure of the engine. Despite hanging around in the back of my mind for a long time, I knew Defold had lost the battle for me. Down to 2.5 (0.5 being Godot still in the uncertain lead.)

Now I was down to just lower level, no tool engines Heaps and Orx. I had tried Heaps a long while ago when I found out that it was behind Dead Cells. It was pretty fun to work with. So I tried building a game again here. It was going okay until I found myself essentially trying to build an engine on top of the engine. After some basics that went well, I found myself in constant debug mode of what was essentially my own engine. I did not like this. So started bouncing between it and Orx before eliminating it completely.

So it would seem my choice is between Orx and Godot. A full engine with great tools and large community and easy scripting language vs a somewhat obscure C engine I found surfing around Github and had seen in lists here and there in the past.

I went through all the material Orx has, tutorials, videos, etc... and was pretty impressed. Despite being relatively unknown, there was a decent amount of material and a lot of features. I had little mini tutorial games finished in no time. Started playing with shaders and other features. I got pretty easily discouraged multiple times.

Over the course of several months I hopped around again through engines I knew I didn't want to use for one reason or another but there was always a nagging feeling that I need to really stop feeling so stupid and just give Orx more of a shot. C/C++ is intimidating but it isn't that bad... plus a reason I kept in touch with it was the discord community. So if I get stuck I can usually count on them for help!

So finally about a month ago I started a project again. I spent a few days really familiarizing myself with the capabilities and setting up my dev environment exactly how I like it. Now I'm knees deep into my first game and loving the feeling so far. Which means a lot to me.

Sure there are plenty of problems to solve but it is a fun process to do that. I'm getting better at C/C++ every day. I also am able to run games made with Orx on my Steam Deck and they are incredibly performant. And with that I have made my decision. I'm going to make it Orxy!

Other than game specific problems that I would have to figure out no matter what, and I'm sure there are many, the only foreseeable issue with this choice is the lack of Console and Web support. These were some of my 'requirements' from earlier. However, the engine's main developer is very active on Discord and seems like an amazing person. The porting is definitely possible according to him and if I ever make it to that point with my game, I have no doubt he'd help me out. So while it is in the back of my head, this definitely relieves my worry a bit.


Thanks for reading! If you made it this far please drop a comment! Most of my HP is coming off delegation still but I'll upvote any good comments. 😉

If you are interested in my game, feel free to follow me. I am planning to start posting devlogs soon, here on Hive. I posted about some plans before. The game idea I ultimately decided to go with is NOT the one talked about in that post but I will eventually get back to that world as well. But you can consider this thought purge about engines a bit of a precursor to my actual devlogs, which will hopefully be a little shorter and to the point while having some nice eye candy. 😁

Sort:  

Congratulations @pewsplosions! You have completed the following achievement on the Hive blockchain And have been rewarded with New badge(s)

You published more than 50 posts.
Your next target is to reach 60 posts.

You can view your badges on your board and compare yourself to others in the Ranking
If you no longer want to receive notifications, reply to this comment with the word STOP

To support your work, I also upvoted your post!