The Bathtub Curve

There’s a plot that comes up in the field of statistical analysis, typically illustrating the probability of a component failing during the course of its lifetime. Due to its shape it’s known as the Bathtub Curve, and excellently enough it is constructed using something called the WeiBULL Distribution. It looks like this:

The bathtub curve

You may be wondering what this has to do with the development of Polybius, as we’re hopefully not going to be analysing failure modes here. Quite right. It’s just that the shape of the curve for me outlines pretty accurately the stages that you go through during the course of making a game (or any bit of software really, I suppose).

Here’s my version of the curve:

The yay-grunt-phew curve.

Consider how you’ve felt at various times when coding. We’ve all had those times when we’re super keen, when we wake up in the morning and our first thought is how much fun we’re going to be having coding today and how awesome it is to be working on what we’re working on. We’ll call that state “maximum groovosity”.

Conversely we’ve all had days when it’s difficult to brain right and when coding feels like nothing works, nothing flows and it would actually be better for the code if we just did nothing for the day. We’ll call that state “minimum groovosity”.

Our graph here is a plot of groovosity over time for the duration of our project. As you can see there are three distinct phases, as follows:

Yay phase. This occurs right at the outset of the project. This is always a groovy time, as you’re working on something brand new, filled with enthusiasm, and the wins come pretty quickly as the most important basic components of your game design are implemented and become operational. Every day you’re seeing more stuff make the transition from out of your brain into something on the screen, that you can touch and feel with the controller. Working in the Yay phase is pretty effortless as you are having so much fun. Over time though, with the core systems established, the individual wins slow down and you begin to feel aware that there is an awful lot of underlying work that needs done before you can get to the end of the project. You can feel the general level of daily groovosity declining, until eventually you have to grit your teeth and settle in for the next phase:

Grunt phase. This is the part that feels most like real work. When I came back from London with the initial concept approved I was also aware that I had a whole bunch more levels to do, enemies to implement, all that good stuff – it was definitely the start of Grunt phase. Levels in Polybius, although fundamentally simple, still took days each to do, because they had to be fine-tuned so that I knew there was a perfect, exhilarating, no-crash flowing run down each one of them, and that fine tuning means a lot of just going over and over them until it felt right. And doing so in VR, since I wanted the VR experience to be excellent and without any motion sickness to the best of my ability. (It’s a testament to the durability and comfort of the PSVR headset design that I was able to use it comfortably for hours and hours every day, and I must have donned and removed it thousands of times and there’s no sign of any of its components wearing out).

Grunt phase  can be a hard time. It feels like the project stretches out endlessly before you, and things can start to feel a little Sisyphean. You’ll be doing a lot of gruntwork like UI and leaderboard stuff that’s never particularly fun to do but which is absolutely necessary. It’s during this phase that your fears and feelings of inadequacy come out. You’ll have a rubbish coding day and just feel like you’re too rubbish to be attempting what you’re attempting. You’ll have a level design that’s not working out and tell yourself you’re a rubbish game designer and everyone’s going to hate your game. You’ll sometimes feel that the game’s just not “clicking” with you the way you’d hoped and you’ll fret about the possibility that you might be on a hiding to nothing.

This happens to everyone. This is normal. Keep calm and carry on, as they say.

The grunt phase is often what separates hobby projects from professional ones. We all know loads of people who start out on projects, get through the Yay phase, start out on the grunt phase, feel like it’s too much like hard work and end up distracting themselves with something else – often the Yay phase of a new project. And there’s nothing wrong with that, when you’re learning or just out to have some creative fun. That’s why short projects and things like “game jams” are so much fun – you basically move speedily from Yay to Phew without ever having to go near Grunt.

Come the day you sign a contract, though, you’re going to need to be able to have the endurance to get through Grunt, so it’s an important skill to learn if you’re heading in that direction. I’m sometimes asked what I think the most important skill that an aspiring game programmer should learn, and my reply is usually “Completion”.  Having the strength of will to push through the hardest parts of the project even when you feel like smeg and would rather be doing something else is the mark of a professional.

It’ll be worth it, because one day you’ll realise that actually there is light at the end of the tunnel and it’s not even a train – the end is in sight. Rather than stretching out endlessly you can actually start to feel that in a few months, weeks, days the thing could actually be finished. You’ve crossed the desert of Grunt and entered:

Phew Phase. Finally you’re almost there. You’re finishing up all the loose ends now – there are still plenty of those but you work through them and as the list of outstanding issues gets smaller the better everything feels. It begins to look and feel like a well rounded whole; title screens and menus all fully populated and working, levels complete and nicely balanced, score tables functioning, all the little bits and details that go to make a complete game present and correct. As the work crystallises around you into its shiny final form you will find your groovosity level rising day by day.

It’s a great feeling, and it’s well worth the effort it takes to get here; nothing quite beats the onset and experience of the Phew stage. You feel justifiably proud that you had the fortitude to push through to the end despite everything. You realise that your game actually isn’t as bad as you’d feared during the hardest times of the Grunt phase (one developer said something like “our games only finally become good a month before they are finished” and I know I’ve felt the same thing and I think it comes naturally from the feeling of relief that pervades the Phew stage).

Completing and releasing a game is an important milestone in a game designer’s career, too. Showing your mates some cool ideas and demos is one thing, but releasing a complete creation to the world is another. It feels excellent and having done it once you now know that you *can* do it, and that makes it a bit easier next time round. And the more times you do it, the more you’ll feel able to completely rely on the belief that you *will* get it done, no matter how hard things get during the Grunt phase  and no matter how your own insecurities will try to bull you off the path.

Of course in real life the profile if your project isn’t quite as pessimistic as it looks on the curve as drawn there. You’re not going to necessarily spend the grunt phase at your lowest ebb of groovosity. Most of the time you’ll be fine, ticking along at medium  groovosity. Yes there will be bad days but there are also great days too, when something you’ve implemented that day adds a vital spark to the design and it makes you grin when you play through a level and reminds you of how you wanted the game to make you feel. But there is that kind of general shape to it – Yay at the incept, Grunt to push through and get the main part of the work done, and Phew the lovely phase where you bring it over the finish line and realise yep, I’m a game designer, I can actually do this.

There is an extended version of the curve though, which applies specifically to those of us who intend to develop on consoles. It’s pretty much the same regardless of which console you’re on; it happens the same way in all cases. The extended curve looks like this:

The extended baa-thtub curve.

You’ll note the addition of two new phases beyond the actual Phew phase of the original curve. These are console specific and we denote them as follows:

Smeg phase. In terms of blood pressure this can be the most demanding stage of the entire project; usually it is relatively brief compared to the grunt phase but by its very nature it will feel unreasonably long. I sometimes also refer to this phase as “the bureaucratic phase of the release” as you will inevitably be filling in loads of forms, many of which require almost but not quite exactly the same information as each other. You’ll be going through arcane procedures, juggling obscure product and service codes, and have to come up with screenshots, videos and marketing-bollocks style descriptions of your own game for the metadata (I always feel like a knob writing stuff that praises my own game to the high heavens).

You’ll also have cert to get through; oh, the joy of cert. I’m sure you’ll think that it won’t be that bad, after all you’re a conscientious developer and you’ve tested and tested and fixed up all the important bugs you can find before you even think about entering cert. Everything looks fine, nothing falls over and the game feels great. Nonetheless, it is quite likely that despite your best efforts you’ll get at least one bounce at cert, and possibly even multiple bounces (see that serrated section of the Smeg phase plot where these occur). You’ll start to feel pissed off and you’ll hear Italian swearing fill the air. In order to survive this phase it’s important to just chill out and remember:

The people doing cert are not looking for the same things that you are.

Consider the following three issues. Which one is the most important and should halt the release process?

(a) Game occasionally crashes during a level.

(b) Sometimes you don’t get an extra life when you should.

(c) On the credits screen a bit of trademarked text is momentarily obscured.

As a developer you’re naturally enough thinking (a) for sure, because nobody wants a crash bug to spoil their game; (b) also because although it’s not a crash it does alter the gameplay in some way. (c) doesn’t matter because who gives a toss about that?

To cert though everything is the other way round. They will of course report any overt crash bugs, but the chances are you’ve nailed those already yourselves. A relatively infrequent crash bug will certainly get reported if it manifests during test but it’s not considered to be the most serious.

So what is the most serious? According to cert it’d be (c). It’ll all be stuff like incorrect use of copyrighted terms, calling things by names that aren’t officially sanctioned, that kind of thing. It’ll drive you nuts because it’ll be things that to you seem utterly trivial but which are OMG MUST FIX in the eyes of cert. Things that we’ve had raised as MUST FIX bugs over the years include:

  • Putting (TM) instead of (R) next to a product name
  • Mentioning the system’s name in the credits
  • Referring to “right joystick” instead of “right stick”
  • Message that we’d put reading FINAL SCORE being read by cert as ANAL SCORE
  • Using the term “d-pad”. Never use the term “d-pad”.
  • Failing to use the word “button”.

And so on. The more you go through the process the more you’ll get used to it but almost inevitably there will be a few gotchas in there. Usually when you get kicked back from cert it’ll halt the process and it’ll take a few days to restart, so even if the list of bugs is entirely trivial to fix (I think the most severe one we had took Giles and I 20 minutes to find; by far most of the rest were literally just text string edits) it’ll cause the release phase to stretch out in a way that can feel agonising.

This is normal. Just remember it’ll pass, you will get through it, it’s not being done to annoy you or hold you back, it’s just that platform holders have to look at things a particular way because they’re in the middle of all kinds of ethical and legal expectations and they can’t just shove any old code out there into the hands of millions of people without checking it against a specific set of rules, and a lot of those rules will seem arbitrary and peculiar to you. Cert is just something you have to do if you want to play on those platforms, is all. Relax, chill, realise it’s just something that needs done with calm. If there are iterations the chances are that the amount of work you have to do to fix any issues will likely be quite small, often literally just text edits. Fix, reiterate, and then go out and spend some time outdoors or something. After all, you’ve been grinding through Grunt phase for months. Get some air.

Eventually you’ll fight your way through the Smeg phase, everything will get approved, and you’ll enter the final phase of console game development:

Pub Phase. In which your game is finally published on the console.

Also your natural destination after having successfully traversed Yay, Grunt, Phew and Smeg phases. Well done. You’ve earned your stripes as a game dev. Get a few pints down you and let the wrinkles in your brain smooth out.

Soon enough you’ll be doing it all again :) .

This entry was posted in Grunting. Bookmark the permalink.

Comments are closed.