“Moses Ngobeni from South Africa has always dreamed of owning a sports car. So he decided to take matters into his own hands and build one.”
So back in 2015 or so when I started writing my game, after a lot of thought, I decided not to use an off-the-shelf game engine. The jury’s still out on whether that was a wise choice, but I did at least have a couple of reasons which I don’t think are totally crazy.
There are obviously many good/sensible/sane reasons to use an off-the-shelf engine, including stability, features, and multi-platform support. So why would anyone choose not to use one?
If I was making a 3D game with state-of-the-art graphics, I wouldn’t even consider making my own engine for a second – it really would be madness. There is simply no way I could hope to match the feature set of Unity or Unreal even if I had 100 years to work on it. But my requirements are different, and on balance I still feel I made the right choice.
Also, just for clarity, I am using some middleware libraries such as FMOD – just not within Unity.
Some Reasons Not To Use Unity
Learning Unity Takes Time
This wasn’t the deciding factor, but it was an issue. Now don’t get me wrong, I don’t mean the initial curve while getting to understand the basic systems and workflow. I mean the time that would be required for each and every individual feature I wanted to add to the game. Let’s say I want to build a laser cannon – I’ll want to build some sort of triangle strip for the laser, there’s an investigation into how to accomplish that in Unity. Then I want to make the laser damage baddies – there’s another investigation.
It felt like the list of investigations would be never-ending and the whole process would be an endless slog through tutorials and message boards to find out how to accomplish things in Unity that I could easily just build myself. At the end of the process I would no doubt be pretty good at working with Unity, but that’s not really my goal (see below).
Using Unity Might Encourage Me To Make Compromises
I have used a fair amount of game middleware in the past. I used Renderware commercially in the early 2000’s, as well as Ogre3D , XNA and a few others over the years. These were just render libraries however that required the developer to build their own tool set. Game logic, physics and audio were kept separate too.
I naturally like this approach because it’s supremely flexible. I can build tools that are exactly what I need for my project. If I used Unity then even if things went well to begin with I couldn’t be sure that further down the road I’d try to do something and wouldn’t be able to. If/when that situation arose I’d have no choice but to compromise and do things the way Unity wanted me to do it.
Using Unity Might Make Me Lazy
Let’s say I wanted to achieve a very particular visual effect. If I have to build it from scratch then I know I’ll get exactly what I was aiming for, even if it takes some time. What I’d be afraid of with Unity is that I could find a code sample or shader that someone else has written that nearly gives me what I want, and I’d just go with it. Maybe that doesn’t really matter, but I think it probably does.
Investment In Technology
There is a lot to be said for actually owning the technology that you use. If I wanted to write a sequel to The Lost Resort then I’d know the tools and libraries will be right there, and I’ll know them inside-out because, well, I wrote them. If I do manage to take my game development forward then I can build on the foundations I’ve put down to build ever greater things. I won’t have to worry about licensing costs, supporting features or API changes or obsolescence. No 3rd party will be able to pull the rug out from under my feet.
No Deadline, No Costs
When I started this project I had no particular deadline to work to. All of the work was happening in my spare time with no particular end-date in sight. I think a lot of companies will decide to use Unity for two (very sensible) reasons – development cost, and development time. Fortunately neither of these pressures applied to me so I was free to do whatever I wanted.
Building Your Own Engine is Fun!
Really, would you rather spend your evenings watching NCIS re-runs or wrestling with low-level software engineering problems? It’s more fun than any Lego set.
Of course there are many, many good reasons to use Unity, and for many developers that’s the correct and obvious choice for them and I wish them all the best. For me it was a tough decision, and I haven’t gone through any serious testing or bug fixing yet so might live to regret it – let’s see!