Update (February, 2020): I finally shipped v1.0! Since this post I refactored the engine to support lower-end hardware, finished the macOS and Linux ports, added more characters, items and regions, had another child, and got glandular fever. What a voyage!
It’s been almost 7 years since I quit my last job. Back in 2011 I was a freshly baked postgraduate in Melbourne. I was entering my 30's and the indie game renaissance was in full swing. When my contract ended I decided to leave academia and pursue my own path in game development. I then began working on a game called Moonman. Fast forward some long years and that game, now called MoonQuest, has just been released on Steam Early Access and itch.io.
So how can you take 7 years to make your game? Here are some important tips and tricks for taking your sweet time.
Build Your Own Engine
This is probably the most important part. If you’re a curious soul and need to understand how every little part of a game works, then this step is quite easy. Simply open up your code editor, download a basic windowing layer like SFML (we aren’t savages and this isn’t handmade hero), and then start writing your resource manager, event system, animation system, physics system (which you’ll ultimately throw out and replace with Box2D), scene manager, GUI code, serialisation framework, build tool-chain, entity-component system, and texture manager, to name but a few. By this stage you‘ll have a fully functioning non-game.
To extend your development time even further consider using a language that introduces a major version upgrade (like C++11) partway through your development. Just try to resist refactoring.
Don’t stop at creating your own engine. You can also create your own tools, like a custom sprite editor, because all those other sprite editors out there do not do exactly what you need.
Have An Unclear Game Idea
Before development be sure to have an unclear image about what kind of game you are making. This will lengthen both your engine development time and your game design time.
For instance, say you want to make a game with an infinite world where the player can keep walking in one direction and never reach the edge of the world. You will need to build a decent amount of technology to support that. A couple of years later you realise (from a game design perspective) that, no, you don’t actually need an infinite world. Throw away all those data structures and algorithms that you’ve built. The 3 months you spent building a fluid system that works on an infinite grid? Throw it away! A simple array of fluid cells will work!
Your game idea doesn’t exist in a vacuum, and if it did it’d probably evaporate because it’s so amorphous. This benefits our time-stretching goal in the following way: by constantly monitoring similar games that are released you can simply change your game to be less like them. Do all those games have “sandbox” in the description? Just make yours an anti-sandbox with a specific goal, that’ll surely differentiate your game in the market. Are they all moddable? Throw away any ideas of modding and instead focus on providing more unique content. Or something like that. All that matters is that the idea for the game is in flux, constantly adapting to the market — to the extent that you cannot even write a single paragraph explaining what it is.
Run A Crowdfunding Campaign
Inevitably you’ll run out of money. You could release the game sooner, but that’s the opposite of our goal, and so maybe you could run a crowdfunding campaign?
First set aside 3 months to prepare, it’s very important to get it right. You’ll need a great trailer and to spend a substantial amount of time marketing your campaign. The feedback you get will be fantastic and everyone will be super nice and encouraging. If your campaign succeeds you’ll now be able to spend that money to speed up development and ship the game sooner! But beware! To take 7 years to ship a beta you really should spend that money not on making your game sooner, but making it … better.
Bonus time here can be accrued by offering physical crowdfunding rewards like t-shirts. This is conditional on your perfectionism as you may decide to print them locally so you have more quality control. Definitely do this.
Constantly Blog About Your Game
Forums like TIGsource can be a great way to make friends and get encouragement and feedback on your game. Developing a game by yourself can be lonely work, and thus you may find yourself creating a devlog. Good news! This is a great way to consume all that expendable time you have. Be sure to post frequently and in-depth about your game, to win awards for favourite devlog (because of all that time you are spending not making the game), and to end up with one of the biggest and most viewed devlogs. This is definitely your goal.
Bonus temporal adjustment points can be obtained by posting retrospective parody articles to Hacker News the day before your game comes out.
Do All Your Own Testing
Every product needs testing. Every feature needs to be tested. By you. Under all conditions. On all platforms. Remember: if you change one thing then all other things must be re-tested because you may have broken something.
Warning: Crowdfunders and friends may offer you the opportunity to get some additional testers in. I made this mistake and shortened my development time, but you should definitely not.
Do All The Side Things!
As the years pass you’ll no doubt be very bored working on the same project, day in and day out. To make sure you are working on that same project for many more years it’s imperative that you take on numerous side projects.
With endless game jams now available you could definitely spend a few days working on a side game. Maybe a parody game called No Mario’s Sky? Be careful though, because it’s likely your silly made-in-three-days games will get more press than anything you will ever do commercially.
Game development involves many different disciplines and you should definitely try to master all of them. My preferred way to learn is by finding an online community and involving myself in the competitions and events they hold. If this sounds too simple then you could always start your own community. Maybe it’s called Pixel Dailies and has become so big it requires 2 full-time moderators. Well, I guess you have the time to spare!
Those are just some things a developer can do to delay a project. Some more ideas are running an unconference, releasing an iOS game, making an infinite star wars crawl generator, creating twitter bots, and … well … you get the point.
I hope this article has inspired you to take your sweet time, and I look forward to seeing all your side projects, engine discussion, crowdfunding campaigns, game blogs, and constantly shifting game ideas. Tweet me at eigenbom.
Oh, by the way, I did mention that my game MoonQuest is out now on Steam Early Access and itch.io, didn’t I? I did all those things I mentioned above but I got there in the end. And, in hindsight, I wouldn’t change a thing.
But I promise my next project will be quicker.