Engine choices

· by Steve · Read in about 4 min · (802 Words)

In my recent post A new journey I announced that I was moving into game development. Some people immediately followed up with questions about what engine I was intending to use, because developers 😉

Plot Twist!

So let’s get this out of the way early: I won’t be using Ogre 😱

Hold your incredulity for a moment. 😀 The reason is not because Ogre isn’t great; since I retired, the team has been doing some amazing work. And obviously, Ogre would be by far the easiest engine for me to jump right into; I know it well.

No, the reason I’m not using it is that I need to focus entirely on the end product, and not be drawn in to spending time on the underlying tech again. 🎯

The trap of building tools

Here’s the thing: I’ve been here before. I know exactly what happens when I get involved in engine development while trying to make games; I end up just writing engines and never get around to actually making the games I had in mind. I’ve made this mistake more than once already. 😔

And because I created Ogre, it is infeasible to believe that I won’t be sucked into writing it again if I use it. It’s inevitable; I’ll see something I want to change or improve, or I’ll just feel a responsibility generally to pitch in, and before I know it 6 months will have passed. It’s important to ‘know yourself’, and I know I need to stay far away from that vortex if I want to remain productive. I ❤️ you Ogre, but 10 years was enough.

Over the years I’ve learned how important focus is to delivery. It’s so easy to get distracted making shiny tools; you tell yourself it will save you so much time in the future, but we fail to take into account ‘time inflation’; an hour today is worth three in a year’s time, if it takes you closer to a shipped product. Things change, and exhaustive preparation doesn’t always pay the dividends you think it will. XKCD had it right:

As much as I love Ogre, the best way for me to avoid being distracted making tech is to make sure the engine is “someone else’s problem”.

But but but

Look, building tools is educational, I’ll give you that. 🎓 I’m glad I spent some time doing it, even though I don’t feel the need to do it any more.

And maybe if you have need for some very specific tech which doesn’t fit well into an existing engine, it’s worth building your own. Or maybe you just want to build tech? That’s OK too.

But I want to build games now.

So what WILL you use?

I’m keeping my options open since I have a lot of learning & prototyping to do, but I’m starting with Unity because it’s suited to the kinds of projects I have in mind; some are 2D, some are 3D. It also runs well on my development platform of choice (Mac - I’ll talk about why that is in another post) and is popular enough that probably most issues I’ll encounter will have been seen by someone else already.

It feels a little weird writing C# instead of C/C++ or other native code for games, but I’m going with it and assuming careful coding and IL2CPP makes that mostly a non-issue.

I also like UE4 but last time I tried it the 2D options weren’t as mature and the editor ran much slower on Mac. It also has more of a ‘suited to larger teams vibe’ if you know what I mean. It doesn’t seem such a good fit for my personal circumstances right now, but I’m still keeping it in mind.

Does it feel weird?

A bit, yeah. Knowing absolutely everything that’s going on under the hood gives you so much context that you don’t always appreciate, and right now using another engine does come with distractions of its own, as I start trying one thing out, then immediately go down a rabbit hole of “OK, exactly what does this mean in practice?“. 🔬

I’m sure I’m going to have some frustrating moments where something doesn’t quite work the way I think it should, or is elusive, or I misunderstand.

But, I know that will diminish over time, whereas as I know all too well, engine development can be never-ending. I’m happy to give that responsibility to someone else, and it helps that I know and highly respect quite a few people working on these other engines (👋 hi if you’re reading this 😀).

I still have no idea if I’m going to be any good at making games, but I do know that I’ll have a better chance of finding out this way.