Develop your Discipline

For many years, my video game development experience has adhered to the following (infinitely recursive) formula:

  1. Begin working on project n
  2. After a while, realize project n is not as fun anymore
  3. Get an idea for project (n + 1)
  4. Go to step 1 with project (n + 1)

I’ve since managed to break out of this pattern, and it’s only become apparent to me recently how I did it. Before I explain, I’d like to share some insight from an author I enjoy.

Stephen King featured himself in his own Dark Tower series (this is a literary technique referred to as an author surrogate), in which he imparted to two other characters the difficulty of working on large literary endeavours:

It’s…I don’t know, one day you just start having less fun while you’re sitting there, tapping the keys. Seeing less clearly. Getting less of a buzz from telling yourself the story. And then, to make things worse, you get a new idea, one that’s all bright and shiny, fresh off the showroom floor, not a scratch on her. Completely unfucked-up by you, at least as of yet.

Stephen King, The Dark Tower VI: Song of Susannah

When I encountered this paragraph, I probably re-read it a dozen times. For the first time, I finally felt as if I wasn’t the only one with this problem. This helped me to feel better, but did little to actually solve my problem. Unfortunately, King never elaborated on how he came to a solution. (Although I suspect that the answer is implicit in the final pages of Song of Susannah.)

A few years passed, and I took up a new hobby: robotics and DIY electronics projects.

Those of you who enjoy building things like robots know that this is an expensive hobby. You’d better be damn sure that you know what you’re doing, otherwise you could be out a fair bit of cash. With the added risk of accidentally frying some essential component, I would also order more than one of whatever little trinket I needed to make my current project work. This further added to costs. As a result, I was careful about selecting projects, and strict about completing them. My diligence paid off and after a year or two, I had successfully built a number of things: a few robots, a couple coilguns, LED displays, and more.

The desire to work on video games eventually resurfaced with a fiery vengeance. Without realizing it, I began to take the same approach that I had taken towards my electronics projects: I carefully weighed my project ideas, and made a choice when I was certain that I had a design I could complete. I also stayed fully committed. Through my more expensive hobbies, I had trained myself how to stick with a project. I had learned self-discipline, somewhat by accident.

The thing is, ideas that are perfect in your head sometimes don’t quite live up to expectations when they are transferred to the game screen. Something gets lost in translation, and things don’t look as they should. Compromises are made, and code isn’t as clean as it should be, either. At this point, it can be tempting to drop your current project, because you’re convinced that the new one in your head won’t lose any luster once it turns into real code. This is doubtful. If this ever happens to you, remember that any project can suffer from this, and it doesn’t mean that you should quit. Have you ever heard the phrase, “the grass is always greener”? Do yourself a favour and continue onwards. Stay committed.


Picking a Project

Allow me to introduce Gateway.

Set in a future where the destruction of Earth and the colonization of space are fading images of the past, humanity has spread throughout a galaxy for which they are not prepared. Although their scientific understanding of the universe is not what it once was, humanity has constructed a massive gate network that allows fighters and cruisers to be deployed anywhere in the regions they control. An ongoing civil war only adds to humanity’s stress and amidst the turmoil, nearby regions of space begin showing signs of activity.

Don’t let the story bore you — here are a few screenshots coming from Gateway’s nearly-complete game engine:

Two massive cruisers face off.

Four massive cruisers face off.

An enemy fighter takes laser fire damage.

An enemy fighter takes laser fire damage.

A massive space battle takes place in high orbit over New Röntgen.

A massive space battle takes place in high orbit over New Röntgen.

Friendly reinforcements arrive through the gate system.

Friendly reinforcements arrive through the gate system.

An alien cruiser returns deadly fire.

An alien cruiser returns deadly fire.

This is not a technical blog. Yes, I might mention things such as depth sorting, matrix multiplication, and stack-based menu systems, but I reserve that right at all times. What we will be talking about here is the nature of game dev for the lone developer, with some personal project management tips and the occasional technical detail thrown in for additional flavour. In my opinion, finishing a game is a lot harder than any of its technical implementations.

Ideally, I’d have started this blog at the beginning of Gateway, not somewhere between the middle and the end. I’ve never been this close to finishing such a large project before, but even a few thoughts at this point in my game’s development might be valuable to someone (maybe even myself).

If you know a fair bit of C++ and have a good OpenGL background, it’s tempting to think: “I know how to implement every single one of my game’s subsystems. I can easily write this game.” Perhaps this kind of optimism is the reason why we can be so motivated — if we really knew how much effort or work something meaningful was going to be, we might find it hard to even get started.

Unfortunately, writing a game (yes, even a small one) is much harder than implementing just the sum of its parts. Significant overhead and time must be committed to putting all of these parts together, and it’s laughably easy to underestimate this effort.

This is not meant to discourage anyone, but to provide a note of caution: you don’t have to write the game of a lifetime. Your project doesn’t need to be the single, greatest goal you’ve ever had in mind. Some of the best, most fun projects (not all of them games, either) I’ve ever worked on in my free time have been ones much smaller than I was capable of producing. Don’t worry: the big, unstoppable projects will come, and you’ll be ready for them.

How do you pick a project to work on? Maybe you can make a pros-and-cons list, or write down what you think it would be like to work on it. My own approach, especially when I’m trying to decide between multiple ideas, is to not work on anything. Eventually, perhaps after about a week or two, one of those ideas surfaces higher in my brain than the others, and begins to keep me up at night and distract me while I’m driving. At that point, I know I’ve made up my mind and am ready to begin.