AKA The Beauty of Design
Or something like that. Whilst this wasn’t the first game I’d designed by any stretch, it was the first one I’d done where I actually had a strong idea of how I was going to complete and then release it. I even registered for last year’s Dream, Build, Play competition when the game was about halfway done (the easy half, natch) thinking that was a reasonable goal (entering only, not winning, obviously).
As stated previously.I had written a few clones, read a few books and done a bunch of tutorials so I was reasonably confident of the approach. When I laid out the design I was careful that there weren’t any of what we used to call SMHH boxes back in my consulting days. SMHH standing for “Something Magic Happens Here”. I was very conscious of not making the typical noob mistakes of biting off more than I could chew or scope creep. I was far too smart for that! (Yeah, right.) So I drafted out the design and for the most part ruled a line under it. That was the scope of work.
I want to talk more about the philosophy and tools that I use when scoping out a game, but it feels like there is an entire post there, so I’ll hold off for now and talk about that next time.
At it’s core, this game was a retro space shooter. It borrowed gameplay elements heavily from Galaga and 1942.
For game progression, I wanted to take a discrete levels approach. Like in Galaga, the aliens would fly in in groups and form up into a squadron formation prior to commencing their attack. Once the player had killed all of the aliens, the level would be cleared and the player would progress onto the next one.
Back in the day, when I was in the military, we always used to joke that there was a cell at headquarters whose sole job was to think up stupid names for Operations, Exercises and Projects. I mean, there was actually an annual exercise with the US Marines called “Tandem Thrust”! Based on that experience, I thought rather than just having “Level 23”, etc. be displayed when a player started a new level, I’d display “Battle 23, Codename: Operation Desert Credenza” for example. Something that would add some humour and hopefully help encourage the player for ‘one more level’.
One of the things I loved from Galaga was the little insignias on the gameplay screen to denote the current level, and how they ramped up at milestone levels. I decided to leverage this approach also, coding the current level number into variations of military rank insignia and displaying that in the bottom corner of the gameplay screen.
I decided to add the ability to fly up and down, as well as just side to side. I thought this was necessary given my intent to release power ups to be collected by the player.
I wanted to increase the difficulty as the player progressed through levels in different ways. One way was to make the aliens gradually stronger, meaning it took multiple hits to kill them. Incorporating the concept of health or damage in enemies means I needed a way of communicating this information to the player. I didn’t much like the idea of including a little health bar display for each enemy. I thought it would add too much clutter to the screen. The idea I ended up settling on was a simple custom pixel shader where I would pass the health value of the enemy to the shader through the tint alpha channel during the drawing of the associated sprite. The shader would adjust the saturation of the sprite’s colours from full colour down to monochrome, depending on the health of the enemy, i.e. 100% healthy meant full colour and about to die was completely monochrome.
To help the player combat these strengthening enemies, I planned on having a choice of four weapons to be available to the player; normal bullets, spread shot, laser and incendiary. The player would be able to change weapons by collecting a weapon changer power up. The power up would cycle through the four weapons encoded via colour (blue, red, green and yellow) and the displayed colour at the time of collection would determine the weapon now in use.
As well as the weapon changer power up, the game would periodically release power ups for health, 1 up and weapon power up. The weapon power up would increase from an initial level of 1 to a maximum of 10. This would be represented by multiple bullets or more power as appropriate to the weapon type.
In terms of designing how the game releases power ups, I was in multiple minds of which approach to use. I reduced my options to three:
Levels have “magic” enemies. The level design denotes which enemies are magic, being when they are killed they drop a predetermined power up.
Event based manager sub system. A more holistic approach over the entire game, releasing power ups as certain criteria are met. Allows for easier tuning and taking into account player progress for different difficulties.
A Diablo style loot drop algorithm. Each enemy type would define a chance to drop value. Should the number come up, a power up would be dropped. I was leaning in preference of this technique, but that was more because I wanted to try implementing this type of system.
There was a game I remember playing a heap of on the Amiga 500 called “Flood”. One feature of this game was that periodically when you went to shoot, instead of drawing your gun, you would draw a chicken! This concept has stuck with me for the better part of two decades. So I wanted to incorporate some sort of chicken gun, which turned shot enemies into chickens or something.
I wanted to have different types of enemies, each with certain characteristics, e.g. strength, speed, and attack style. All enemies would be based upon the bug theme visually. I figured 10 types would be plenty. If a new enemy type is introduced every five levels, that’s 50 levels before everything is seen!
Typically these types of games use the concept of ‘lives’. The player gets hit, they lose a life. I decided to implement player lives through a continuous health / damage representation to make it more realistic. Yeah, I know.
For explosions I wanted to use a particle engine rather than animations.
Achievements / trophies / awardments are a necessary part of any modern game. I wanted to incorporate some internal ‘cheevo’ system as I think they encourage repeat play. Continuing with the military theme, I designed up each cheevo to be represented by a medal or service ribbon.
I played an awful lot of Diablo 2 over the journey. Having a ‘secret cow level’ seemed like something that would be fun to include as an Easter egg.
I deliberated about including shields and a shield power up for some time. I had it in and out of the design for some time. Eventually I removed it. After all, a shield is essentially identical to a 1-up in terms of game play, so I went ahead with that philosophy.
So there we go. A nice simplistic design with no hint of scope creep. I decided to name the game “Super Space Mega Boom”.