:: one bit beyond ::
15Dec/090

The Explodemon Saga – Part Two

In this second part, I look at how I cracked the fundamentals of character control, got addicted to code, and show where my inspirations came from.

Robot12PART TWO

It was November 2005 when I first started writing the player code for Explodemon. After hunting around for some sprites that I could borrow that would do everything I wanted (thanks, Pulseman), I started trying to make the little fella run left and right. I’d always liked how much depth of control the inertia in the 2D Mario games created – the feeling of weight that resulted, combined with the feeling of being just on the edge of control, unable to stop quickly - so I started by emulating that. Pressing in a direction would slowly increase speed up to a maximum, and pressing in the opposite direction (or releasing the stick) would decrease speed until at a standstill. It was easy enough to get working and once I'd matched up the animation and direction with the speed, I was done. Hee hee, there he goes! Easier than I thought! It was my first true taste of the secret Power of Coding; a god in a universe of my own creation. I ran that little guy left and right for ages, slowly tweaking the variables until he was perfect. Now what? Oh yeah, it’s a platform game.

I remember jumping being a bit trickier. Sending him upwards was easy enough, but having to check whether the little guy could fall and to align him to the floor if not, resulted in me constantly sticking him inside it. Once I’d done some brief fixes on that, I spent a while playing with the values for his rise and fall, and also on how holding down the jump button would make you go jump higher and how long you could do so. This, for me, was the crux of the issue. The balance between the running speed and acceleration, how high the player could jump, how you controlled yourself in the air, and how tactile it felt; these elements formed the rhythm of the game, its heartbeat, its soul – and it just had to be perfect. I did some tests on timings in other platform games, but eventually just went with my own gut instincts. I admit to feeling an immense sense of satisfaction when I was done. The control felt solid, responsive and enjoyable, and I’d managed to do it all myself in just a few lunchtimes and evenings. I really felt like I’d cracked some special code, like the mysteries of the ages were laid out before me. All of those games I’d played and revered suddenly seemed within my capabilities. I think that this was the moment that I became totally hooked.

Now that I had the basics, I needed a high concept. The inspiration came from three separate places. The first was Meteor Strike, one of the Superman joystick games we were working on, and a kind of simple evolution on Missile Command. There was a mechanic in it where you could destroy certain enemies that would create an explosion that could then be used to destroy other enemies. A key strategy was to repeatedly chain these explosions together in order to clear the screen. It worked out pretty well in a basic fashion, but I thought it might be nice to see how that would work with a platform game. The second inspiration was a simple block puzzle game I was working on, a match 3-style game whereby you had to clear black blocks by detonating like colours next to them. As you progressed, the explosions ‘levelled up’ and got more powerful so you could clear the black blocks more effectively. (If you're interested, you can download the Windows-only prototype I created here. You can see an early version of Explodemon's levelling mechanic already forming itself). It was the first thing I’d ever coded, which was exciting in itself, but it was a bit dull and I'd kind of lost interest in making it great. Instead, my idea was to transport that mechanic to a platform game. ChainAs for the third inspiration, I used to work with this talented artist called Jamie Turner. Jamie was a bit of a star at Blue52, always churning out great work and great ideas. We had an excellent working relationship too, collaborating together to create the mighty Rock Troll concept, another unsigned gem. However, Jamie was clearly too good to stay in the UK for too long and about 6 or 7 years ago got a job in Tokyo, working at Nintendo second party, Genius Sonority. At GS, he worked his way up from effects gaijin in the corner to game director gaijin, even working with Miyamoto at one point. He’s now working at Pokémon creator, Game Freak, and we’re in touch regularly.

There were always new games concepts bouncing around at Blue, and Jamie had a few, one of which was Exploding Robot 12. Jamie’s concept went something along the lines of humanity’s last hope - a robot that couldn’t stop himself exploding - being sent out to destroy the alien menace that was threatening all of mankind. From what I remember, it wasn’t so much a platform game, as an action puzzler, where you had to navigate sections that you didn’t want to destroy, as well as blow up the enemy spacecraft and whatnot. I always liked the idea, and my recent explosion-based thoughts lead me to wonder if it would translate well to a platform game. I mentioned it to Jamie and he was up for me carrying the idea on. The early builds even had the codename ‘R12’.

Inspired by rocket jumping in FPSs and the physics of the grenades in Halo, I first experimented with using the explosion as a double jump substitute; instead of jumping and then jumping again, the idea would be for the character to jump and then explode, with the explosion’s force propelling you away. Also, with something as fun and destructive as explosions, I wanted them to be unlimited and available at all times - but knew that I needed to nerf it somehow, or risk the player being too powerful. I went for a recharging gauge; exploding would empty the gauge, and you’d have to wait until it filled up before you could explode again. Both of these concepts went in and, well, just worked. I also coded in the ability to double jump, but you could only do it after you’d exploded in the air. This simple feature ended up being quite instrumental in creating some of the unique player character control that we’ve got in Explodemon today. You can play the build as it stood after two weeks here.

Once I had the explosions moving the player around, it was obvious that everything else in the world needed to be moved by them too. I needed something to get me started, and the answer was obvious. I didn’t even flinch. Old Man Murray be damned, it was time for crates.