The full title is "I Sent My Monkey To The Moon" and is named after a song by a musician friend of ours Loop Aznavvour. We'll include the song in the full version.
The main reason for making ISMMTTM was to see if we could create a jump mechanic that felt like it benefited from the touch screen. Like almost everyone we hate virtual joysticks and aren't especially keen on the gesture control compromises seen in a lot of iOS action games.
I think a touch screen is a pretty decent controller but obviously it has its limitations compared to a traditional joypad + buttons so we need to work out new techniques for controlling action games.
As well as the jump mechanic I had a strong desire to work on something new after Magnetic Billiards so I saw this as an opportunity to try a few things out. I really love the concept of procedurally generated worlds (ever since being amazed by the huge universe of Elite back in the 80's) so I wanted the game map to be generated on the fly.
One of the main influences is a game we developed in the 80's called Zub.
Zub was just a simple platformer with a gimmick of moveable platforms where the aim was simply to reach the top of the playfield. It's not the greatest game in the world but we always wanted to return to the concept and take it a bit further.
ISMMTTM has also been compared to another Spectrum game; Bugaboo The Flea.
The game broadly fits into the same genre as DoodleJump but hopefully it's a bit more interesting in terms of offering the player more options and strategies.
The prototype was developed in two stints. The main engine (lol) was written last year directly after the release of Magnetic Billiards. At this point all the main elements were in place but there wasn't really any game as such - just some platforms, a jump and the turrets. It was finished off and 'made into a game' in February 2012 in order to be part of the second version of MB.
I posted these three videos on Facebook last August and you can see the game taking shape.
The playfield is constructed as a circular array of 'tiles' arranged in concentric rings. The tiles are approximately square with the width of the tile adjusted slightly so there's always a whole number of them on each ring. The further away you go from the centre, the closer a tile is to being square. Each tile has a background (all the same at the moment apart from colours) and some content which is either a platform, a grind rail or a turret. This content is generated procedurally using a seeded random number based on the cell's position and a bit of logic to govern the frequency of turrets and things like the number of gaps in a grind rail. Basically it's just a matter of everything getting harder and faster the further away you get from the centre.
I thought the circular playfield would be fun (with gravity always pointing toward the centre) and meant the game objective could be very simple - jump upwards - and every direction is up when you start in the middle. It also meant we could have fun with grind rails going all the way around.
The playfield is practically infinite in size (within the range of the variable types used to store coordinates) but only a tiny bit more than what you see on screen actually exists at any time. In practice the game gets super hard around the 100th ring and at the time of writing nobody has reached 200. I've tested the engine well into the thousands.
The jump works by turning the entire bottom half of the screen into a touch pad. Direction is governed by the angle of the point you touch to the centre of the screen. Similarly the distance from the centre dictates the power or speed of the jump. A preview trajectory for the jump is displayed as curved line (currently made from MB ball sprites).
This visual feedback allows you to make very precise jumps by sliding your finger around to find the jump which will place the monkey exactly where you want. This is where the touch screen becomes a boon as you can place the monkey pretty much anywhere with great accuracy.
The jump preview is kept active even during a jump so a skilled player can potentially have his next jump already lined up before landing. This technique is really useful for jumping the gaps in the grind rails.
Turrets are the only enemy in the game. They are in fixed locations and cannot be destroyed. Their purpose is to keep the player character moving. Almost everywhere on the playfield is within the range of several turrets so if you stand still too long, one or more of them will find you (green laser means the turret is searching), charge (red laser) and then shoot one or more bullets.
The scanning system worked out really well because the turrets become quite scary - especially when you have five or six red lasers pointing at you - but not particularly dangerous if you keep moving. Well, not in the lower rings at least.
Making A Game
Even though the important part for us was the jump mechanic, we decided to make the prototype into a simple but fully functioning game. Obviously we'll get better feedback if people actually play the prototype so we decided to make something quite tough which could be played in short sessions.
Once all the elements were in place it was fairly straightforward to tie it all together into a simple game. I added a scoring system which awards points for each jump based on the height of the landing spot and the vertical (outward) distance jumped as well as the softness of the landing. Heavy landings cost a small amount of health (as does being hit by a bullet from a turret).
Turrets get faster and fiercer as you move upwards so it gets quite tough beyond ring 50 and very hard beyond 100.
The grind rails allow you to regain health albeit quite slowly. To stay on a rail long enough to completely heal you'll need to master the art of leaping the gaps. So long as you queue up jumps ahead of time it's not too difficult.
Response to the prototype has been fantastic so we'll hopefully develop ISMMTTM into a fully fledged game in its own right.
We have a lot of ideas for the game which I'll discuss in a future blog post.