"Make a game in a month, with crazy retro-like restrictions, and if you win you we'll put it in a real-life arcade machine in front of the general public." Now that's a pitch that I'd find difficult to walk away from. And so I poured selected parts of my heart and soul into "DIGIBOTS & CO."... a game by Mr Speaker.
Play DIGIBOTS & CO. (requires WebGL)
See the code. (requires a strong stomach)
The story begins with the "No Future Contest" organised by French digital arts centre Visages du monde. It ends there too. In between is 3-and-a-bit weeks of blood, sweat, and tunes. The goal of the competition was to create a game with the theme "Au Travail !" (Work It!) limited by one or more insane constraints. As I'm quite the fan of visual distortion, glitched up music, and digital decay - the constraint choice for me was an easy one:
- My programmer is dead: The game has to operate / use / exploit the concept and/or aesthetics of the bug and glitch
With the guidelines established and motivation high, the next step was blueprinting and carefully architecting the game design specification. These kind of documents can often be filled with far too much detail, so I like to keep mine to the bare minimum. Here is the final product:
%!*(&$@!^$&*!@!%@^&*1)%!*(&$@!^$&*!@!%@^&*1) ^(^^*(&^&*%^&$%^&$%345#$%$#%^$%%^&*%&(%^&*$%^&$% ^&%&*%*&%r 8&^%*%^@!%!$@@%^# 5%^*&%$#@@@!%! !@($*^ 8 !(*$&^!@^%&*!&(^) 8 $%7*%$^*!@$23Y ^$#^ < | @!$!&(^5(&$%@!&%! | %&!@%*5TYU@@#$ #^@* ------| ^@*$167063%!*(&$@ | &*!@!%@^&*1# %^#$ | ^%!@$#^%@!$#^!@$# | !@$#^%!@$#^!@$ | 8 8 | ................ ............................... ................ ............................... ................ ....II......................... ................ ......................... ................$$.... ......................... ................$$.... 8 ...................... ................................................
With the design spec complete, it was time to move on to the nuts and bolts. The game is an HTML5 canvas effort written from scratch (besides my collection of scripts from Ludum Dare that I used as a base). Within the first week of development I had completed the map drawing and Digibot-walking with collision detection - along with a crazy glitchy overlay. Things were lookin' positive.
After the second week I had a bunch of the level mechanics working, and the lemmings-like creatures were coming to life.
After the third week I had improved and cleaned up the code and was enjoying watching the lil' critters playing happily in their natural environment.
At the start of the final week I realised I had to forgotten to add in any bad guys, or any points system. Or any levels, any music, any graphics, any story... any goals at all. Things were looking dire. Time to knuckle down... Firstly (and most importantly given the time pressure) I crafted my very own arcade font from scratch (not being sure of the copyright status of the ones I found on the net):
I plan to expand this and make it into a webfont at some point, so I can use it in every web project I ever do again. I love that font.
I was never going to do much better than my programmer art sprites, so I decided to put some more time into the areas around them. I wanted the story to include a client who comes to you with a request for help. As I can't draw that kind of thing, I instead turned to the real world - conducting a photo shoot with Mrs Speaker (who's a treat to work with) looking sufficiently video-game-client-like. The results were then pain-stakingly filled with pixels, given a tiny bit of shading and highlights... and voilà!
The next step was to vaseline-coat things a bit. As I plan for my masterpiece to win the competition and be displayed in an arcade cabinet, I had to build things in anticipation for the environment. It's no good having a game in a stand up cabinet, and not be displayed on a tube TV screen from 1980. So I wrote a vignette and raster-line shader to give a nice "back to the future" feel. All the effects are done in a single fragment shader - with the whole screen being cut into two triangles for the vertex shader.
I wanted to add a bloom filter, to give a healthy glow to all the entities - but it went bad and instead produced a crazy memory-corruption-like inverse colour effect. Which was weird, but pretty awesome. So it went into the game. @greweb crafted me the "horizontal separation" effect - which is triggered at random times, for small random durations, and tied to the "glitchiness" of the current level.
With all the pieces in place, I put a concerted effort into pushing them all together in a way that kind of looked and felt like a game: faded cut screens, hi-score entry, animated title screen, little tunes, nice sound effects (they took a long time), end sequence, "level clear" screen with animations... they tend to be the areas that get forgotten by most people, so my plan was to get a bit of a boost on the competition.
Unfortunately with all the time I spent polishing the edges, I completely forgot about the game itself. Two days before the the deadline (though, thankfully not work days) and there was still no points, no levels... no goal! This lead me to make a gamedev-newbie mistake: I just tacked any-old thing on. Some points for this, some points for that... some bonus here, some bonus there... annnnnd We're done. Oh, except there IS STILL NO WAY TO DIE! So I invented the glitch monsters. They are tough bastards. I had intended them to be like that thing in Bubble Bobble that comes and eats you when you take too long.
The problem is that in Bubble Bobble, that guy moves really slowly and my glitch monsters move quickly - and there's nothing you can do to stop them. I added a hectic version of the song, and gave the monsters a spooky electric snarl.
People seem to really be freaked out by them. Because you can't beat them they just leave everyone feeling bad. Oops. Still, now we had points and a bad guy... last thing on the list was levels.
After spending all that time creating all the nifty mechanics: platforms, ladders, stairs, rocks, elevators, switches, teleports, optional glitch amounts and glitch-monster spawn rates - I had 3, maybe 3.5, hours to craft them into at least a dozen interesting levels. But I failed. I'm still not even totally sure you can finish them!
No time to bother with things like that... 8 minutes left to get my entry in and I realised there remained one fairly important missing element: a name. I can't believe I didn't have a name! Usually I come up with the clever name first, then half-arse something around that. Not starting with the name. Heh. I feel like I've moved into a new period in my life.
Damn, a lot of work goes into making a game. Even a weird crappy one. But hey, what a learning experience. I certainly learned that you shouldn't leave the point of the game, or level design, or game balancing - until the last half a day before it's due. I also learned it's good fun making up crazy stuff and turning it into a game. I'll let you know how I go in the comp!
lol at the design spec. that’s what they should all be.