This confession should come first: I seriously considered making Retrobooster only a single player experience when I started it. As a solo developer, more game modes sounded daunting. Fortunately, all the complaints from friends and my memories of co-op and melee games were too much to bear. In fact, the multiplayer modes in Retrobooster were originally called Co-op and Melee just like on my family's old Atari 800 Asteroids cartridge. Sadly, the first couple dozen people I showed it to had little idea what Co-op meant and no clue what Melee meant. “What's a melee?” I finally resigned that idea and renamed the modes to Cooperative and Deathmatch. At least that only compromises my nostalgia and not the gameplay.
Retrobooster aims to be an old school cave-flyer but with the most nimble ship possible. Unlike most other games in this genre, your ship has no drag and an extremely high top speed. Some late-game levels even demand that you fly at full speed in order to beat them. Retrobooster has the tightest of control schemes that you can keep improving at even after beating the game several times. This style of flying and all the shooting are the central mechanics of the game. It's pure skill.
From a design perspective, I enjoy games that have a thorough exploration of their core mechanics. If a game lets you jump high, it's satisfying to be given a lot of good reasons to jump high and maybe a double-jump and a power-up that lets you jump even higher. This sort of treatment just makes a game feel complete. After mulling this idea over early in the design process, it became the best reason I wanted to keep co-op in Retrobooster. Practicing the game's flying and shooting skills in all its claustrophobic spaces with multiple ships is a fundamental part of the fun. Leaving it out would make the whole game feel incomplete. The other big reason, of course, is that it's loads of fun to jump into an interactive physics playground with your friends and start blasting away.
Retrobooster now has split-screen co-op and deathmatch modes for up to four players. Networked multiplayer would probably be fun too, but, for reasons I can't put my finger on, I prefer split-screen for this style of game. However, the main reason I am leaving networked play out is because programming networked play at high quality is enormously difficult, and I don't want to do it if I can't do it well. Perhaps if this were not my first game and if I were working with another developer I would feel differently.
A New Perspective
A while back I heard some really good advice about game design. I'll probably catch hell later for not remembering where this came from. Every change you make to your design should improve your game for your core audience or for the general gaming audience or both. Changes that improve your game for one audience and hurt it for the other are to be avoided. After trying to apply this rule to different aspects of my game I realized there was a useful variation on it: look for changes that will improve one or more game mode and not hurt any other modes. Suddenly, having multiplayer modes in Retrobooster wasn't just more work--it was also a useful design tool. When I would get stuck trying to solve a problem for single player mode I could switch to looking at the problem from the perspective of co-op or deathmatch.
It was probably this methodology more than any other that shaped the weapon designs. When I was originally thinking of Retrobooster as a single player game, I planned on four weapons with a separate button to activate each one. It wasn't long before I realized that only four weapons was fairly dull in a deathmatch game, so I set a goal of ten weapons instead. There would be some primary weapons and some secondary weapons, and the player would be able to have one of each armed at all times. From the experimentation I had done with co-op, it was clear that it was often difficult to defend another player with regular shooting weapons. This led to the secondary weapons being mostly defensive, area-damage weapons. So when a teammate is in trouble, you don't always have to worry about placing accurate shots to provide some cover.
Now that the game is further along, I'm looking for more detailed ways to manipulate weapons that can improve one or more game modes. One idea that has been prototyped but has not reached testers yet is a “lightning rod” behavior. This allows you to shoot your lightning weapon at a teammate. Instead of damaging that ship, the lightning energy is redirected out of the front of it. This allows an injured player to stay farther from the action but still contribute firepower. From the enemy's point of view, one ship is using two weapons at the same time. Alternatively, if a player is holding down the shield button, his shields will be recharged by the received lightning energy.
Another example of an improvement for multiple game modes is Retrobooster's lack of fuel containers. The central challenge of many a cave-flyer has been to collect containers fast enough that you do not run out of fuel and die. This challenge has been re-created so many times that it probably never needs to be done again. The fast, nimble ship you fly in Retrobooster opens up possibilities for so many more interesting challenges that I was perfectly happy to leave fuel containers out of the game. Every ship just has unlimited fuel. This turned out to actually be a bigger bonus for co-op games than for single player games because it's a resource that tends to inspires competition.
Tokens
There is a straightforward token system in Retrobooster. When you destroy an enemy, a token may be spawned that disappears after a few seconds. You collect these tokens to gain power-ups and ammunition for your various weapons. The token system has been maturing right along with the rest of the game, and one of the finer points I have been trying to tune lately is how to encourage co-op play with the token system.
An important change made recently is an increase in enemy weapons fire and the addition of mini health and shield tokens to balance it out. On the surface, this creates a steadier tug-of-war for health and shields while in battle, and it greatly increases the number of tokens you need to collect which adds to the baseline flying challenge. As for co-op, more frequent tokens means it's good to stay near your teammates. If one of their kills spawns a token they don't need, they can let you grab it instead.
When I first programmed co-op mode, each player started with three ships. It was immediately obvious this would not work because one player would often lose all his ships while the other was still working on his first. The next attempt was a shared pool of ships. Testers hated this even more because they were using up one another's ships. It felt very competitive. Testers all said, “I want a button that lets me give a ship to the other player.” I like the idea of giving ships but resisted the new button for a long time because the interface already already had plenty of buttons. Having one more button that was used very infrequently was inviting confusion, and the interface would need to be complicated even more to let a player decide which teammate would receive a ship.
It is a little sad that it took so long to come up with this idea, but it was the token system to the rescue. Now when a player runs out of ships in a coop game, the remaining players who have extra ships will occasionally see a Give Ship token spawned. Collecting the token donates one of their ships. A Give Ship token can be one of four colors representing any player that is dead, so if multiple players have died you will know exactly which player will be revived by a particular token. There is no fancy new interface for players to learn when giving ships; it drops right out of the game's existing interface. And testers genuinely enjoy giving ships because they are deciding to share instead of being forced to share.
This was also a good opportunity to add some fun voice effects to the game. Some games have voice effects such as “Brutal kill!” and “Head shot!” Retrobooster has “Generosity!” and “Magnanimity!”
Testing
Retrobooster now has a full complement of levels, enemies, and weapons. I have moved on to testing and refinement. One of the big unsolved challenges remaining is how to attract co-op testers. There are many testers currently hammering away at almost every aspect of the game. However, the only feedback coming in so far is for single player mode.
Throughout development I have spent some time playing multiplayer games with in-house testers. I'm generally too good at my own game, so I would take a disadvantage by playing with a game controller (I have much more practice with the keyboard and mouse). Unfortunately, this is only a half-measure. When it comes to proper testing you really need to take the developer out of the mix, but it has been very difficult to get multiple testers together at the same time. Like every other problem faced during development, this one is also solvable. I'll keep at it and find the right solution one of these days.
The plan was to release Retrobooster in 2013, but that goal is looking more unrealistic all the time. It is due to many factors, not the least of which are new-found testing difficulties. The good news is that the end of development is definitely in sight. Hitting the recent milestone of beginning full game testing was incredibly satisfying. There's no stopping Retrobooster now. If this article has piqued your interest, go try the free demo and lend me your support on Steam Greenlight.