A Long-Awaited Post-Mortem

First, I would like to say that I’m not entirely happy with Lord’s state.  It has a lot of things wrong with it that are immediately visible to anyone who plays it;  the pacing is the biggest offender here, I think I totally failed to convey the feeling that I was striving for.  But that’s not such a bad thing;  the point, after all, of trying to make a game in a week is to finish a game in a week, not necessarily to have a fantastic game at the end of it.

No, the chief failure of Lord was that it took me more than 7 days to complete.  In fact, it took me 77 days to complete (that number wasn’t planned).  This is the story of what happened, in the hopes that telling the story will help me keep it from happening again.

It was the day after Christmas, 2008.  Picture a younger me, more hale and hardy, his cheeks still flush and aglow, strong in limb and body, his hair not yet gone grey.  Flush with his youthful vigour, he thought, “Why, it’s been a long time since I’ve done a Game in a Week.. and I have a full week of vacation left before I must return to work!  And work will be quite busy, so I should have fun now while I can, for I will not be able to consider a Game in a Week for a long time into the New Year!”

More beneath the fold.

This young me was full of thoughts about revising MMORPG Tycoon, or perhaps even a reworking of Nicholas Spratt for the iPhone.  But such things would be large undertakings;  there was no time to achieve them within the week available, and so he decided to throw caution to the wind, and do another Game in a Week.

And when the theme phrase turned out to include the word “Land”, he thought it was providence.  MMORPG Tycoon was going to need some sort of land rendering, and it seemed like fate;  like a sign that he should make a game to implement and test terrain rendering which later could be used for MMORPG Tycoon..

The game concept came easily, and quickly.  The idea was to have a 3D terrain which wrapped around a sphere.  There were villages on the terrain, and meteors would fall down, hit the terrain, and unleash an infection which would slowly spread over the map;  you had to place walls, to fence in the infection.  It was an epic tale, to be told in about six chapters.  In the first chapter, meteors would strike the planet, and you had to use some sort of fences to keep a resulting infection from reaching your towns.  The idea was that your villages would provide different shaped walls;  they would display a little thought-bubble above themselves, showing what they’d provide, and if you clicked on one, you’d be able to place its shape.  At the start, villages would give you very simple shapes;  straight lines, or with a single bend in them.  The idea was that a certain number of meteors would hit the planet and need to be contained with your walls.  Perhaps about four or five.  Once you had contained them all, you would progress to Chapter Two.

Chapter Two would take place several generations later;  your surviving towns would grow, and you’d earn one new one.  Your energy walls would be gone and the infection would no longer be spreading, but now entities would emerge from the old infections, and begin advancing toward your towns, and you’d have to stop them using the same wall-placement system.  Do that, and you’d advance to Chapter Three.

And this continued, with each chapter taking place a few generations later, introducing a different variant on the “placing walls” play mechanic, and advancing the story toward the eventual destruction of the planet (which would cause the ejection of meteors toward the next planet, thus taking the story full-circle so that it ended exactly where it began, but at a different planet).

Really, it was far too epic a concept to have been feasible within a week.  But that was okay;  after all, Younger-Me had a full week without work to do it in, whereas usually he had to fully implement a “Game in a Week” on the weekend.  He had buckets of coding time for this one!

But it got worse;  it turned out that the 3D code which Younger-Me had added to VectorStorm over the previous week turned out to be extremely buggy and difficult to work with, in ways which hadn’t been noticed in his simple testbed applications.  The first few days were taken just trying to make a camera move the way that the game told it to, and to make terrain actually visible.  But this was no problem, he thought.  “Surely, with a full week on vacation, I can fix the bugs and write a game at the same time,” he reasoned.  And perhaps, just perhaps, he might have.  That is, if it were not for…

On the Wednesday, I visited with an old friend, who talked to me about World of Warcraft, and how a few mutual friends had joined up a while back.  I had played World of Warcraft during its first year or so, and gave it up because I found it to be rather dull (my only character managed to reach level 36 before I quit, a short while after The Burning Crusade was released.. which may give you an idea of how little time I actually spent playing it).  But apparently these mutual friends had just reached the mid-30s, and would I be interested in reactivating my account to go quest with them.  We could, in my friend’s words, “actually do 5-man raids together!”

To make a long story very short (because the ending is awfully predictable).. that character is now level 69.  And while I’m relieved to note that others seem much more obsessed with and spend more time on WoW than I do, it doesn’t change that I’ve spent far too much time with it over the past three months.  It’s not all bad, of course;  I’ve been looking rather closely at how the WoW level zones are constructed, and have been devising plans to create similar things procedurally in MMORPG Tycoon..  but that really wasn’t what I was supposed to be doing during that week.

So WoW chewed up a lot of that first week.  But it wasn’t anything to worry about, I told myself;  I had written a full GiaW entirely over the weekend many times before, after all.  But in practice, it didn’t happen;  the bugs in the engine made writing code annoying and painful, instead of fun.  And in the end, I wound up spending more time reading about WoW and chatting with friends than actually coding.  I did briefly consider on the Saturday evening that I could throw it all away and just quickly write a 2D implementation of the initial Chapter One game concept (spreading infection, 2D lines to block its progress toward your villages) on Sunday and still make the deadline.. but I was so wedded to the idea of proving out a terrain rendering solution for MMORPG Tycoon, that I decided to let the game slip, rather than release something smaller on time.  Especially since I’d been posting screenshots of 3D terrain to the site.

Once that first week was over, that was the beginning of the end;  work became so busy that I was generally working 60-80 hour weeks, and never had more than one day off in the weekend (and often worked straight through them).. and since I’m paid to write code, the last thing I wanted to do upon getting home in the evening was to sit down in front of a compiler and struggle with buggy rendering code.  Even when I bought myself a copy of the Wall-E DVD, which I left unopened on my coffee table to bribe myself to finish, I still couldn’t bring myself to actually work on Lord.

Fast-forward to this past weekend, which was the first weekend when I’ve had two days off in a row in an awfully long time, as things have begun to slow back to a more sane pace.  On the Sunday, I was thinking more rationally and began considering cancelling Lord entirely;  just giving it up and moving on with something else.  And then I decided that no, it’d be better to put something out, even if it wasn’t something I was proud of.  Just to have closure.  After all, I’d put up “Nicholas Spratt”, even though that game concept hadn’t worked, and I’d put up “Thunderstorm”, even though I didn’t like it..  and so I started the “what would I have to do in order to release this now, basically as is?” thinking.

I had only ever implemented the basics of the “Chapter One” design, so I threw away all the other chapters.  I had never been able to make the thought bubbles appear at the right places, so I threw those away too;  instead of having cities “grow”, I just linked the more complicated and larger wall shapes to having more surviving towns, instead of to “levels of city development”.   And I quickly plugged in a HUD element that showed number of remaining towns and infection level, set the game to jump to the credits scroll if either number got too bad, and it was basically done.

Oh.  And at the very last moment I added the timer, and linked the rate of meteor spawning to the current time, just to give it a little bit of variation and increased difficulty as you played longer.

So here’s the bottom line:

What went wrong

  • Game concept was much too epic for a “Game in a Week” game.  These games should be about only a single game mechanic!
  • Should not have started a “Game in a Week” without a proven game engine;  proving out basic engine tech should be done in a Testbed game, not in a “Game in a Week”!
  • Should definitely not have started playing WoW again.
  • Weaknesses in the game design.  (In particular:  A game design which requires looking at the floor to see infection spreading, while simultaneously requiring looking up to see where meteors are falling is not a good design.  Didn’t realise this until far too late;  perhaps the day before releasing the game)
  • As it turns out, the “terrain on a sphere which stretches out to become a flat map if you zoom out” concept isn’t particularly cool or useful, and is way, way too computationally expensive, and makes rendering everything else in the world far more tricky.  Lord does use this tech, but I’ll not be using it again.  So even though I developed it here for use in MMORPG Tycoon, and Lord was delayed and delayed for the sake of proving it out for MMORPG Tycoon…. it won’t actually ever be used there.
  • The game doesn’t build up speed properly.  The first minute or two of the game is okay, but then it just kind of drags on and on, and it feels like nothing’s happening.  This is largely because at that point one-to-two minutes in, you were originally supposed to go to Chapter Two, but Chapter Two was never implemented.  So all I could really do was throw more and more meteors at the player.  And the placing of energy walls just isn’t satisfying.  Or at least, I don’t think so.

What went right

  • I’m honestly not sure what to put here.  I messed up a lot of things on this project, and I’m not even convinced that “Clean it up a little and just put it up in its current state” was a better choice than “Just cancel it and move on”, this past weekend.  Except for one thing, which really does belong in the “What went right” list:
  • Wall-E was awesome, and totally worth the pain. Pixar, you have to make more movies to help me bribe myself to finish things!