It has been one year since Good Robot went up on Greenlight, and we are due to launch in a little less than a week. The game has evolved an immense amount in the intermediate time.
Visual changes are easy to show using videos and screenshots. Game design changes, not so much – this is a process of formulating systems, talking to your team, tweaking your design based on feedback, convincing your team why a certain system is the right fit, and then overruling their complaints with an iron fist.
I thought the best way to show just how much Good Robot’s design has evolved is to talk about some of the bigger changes in its design, from when Pyrodactyl started working on it to now. First, I’ll describe the old system, then the problems with it, and then what we did to fix it. Here goes!
Note: Game design is a collaborative process, which is why I use “we” from here on out, even though I did all the work.
In the old version, you would get XP from killing robots, and upon reaching a certain XP threshold, get a skill point to put in one of six trees. Points once spent were not refundable. This system is familiar to players and used in many RPGs.
Since the XP threshold for leveling up kept increasing, level ups got rarer as the game progressed. This was intended, as the player is not supposed to acquire enough skill points to fill out all categories. Unfortunately, this meant that the worth of late-game enemies would feel the same or lower than the earlier ones. Sure, they gave you more XP, but the currency of the upgrade system was not XP – it was skill points.
In the early game, you could survive with any skill point distribution, even though you got more skill points here due to the low level up XP threshold. As you progressed, enemies would get deadlier, which provided a nice and steady increase in difficulty IF you had distributed those points optimally. Unfortunately, some of the upgrade categories were more important than others, and if the player made the mistake of putting too many points in the “wrong” skills, they would get demolished in the late game by robots that were too strong for them. Worse, they couldn’t undo or adapt to their “mistake” without starting a new game.
The upgrade system was less of a tool for players to enhance their play style and more of a right/wrong puzzle. Spending points “correctly” in the early game was extremely important, but you would only know if you were right three levels after it was too late to make a difference. Finding the ideal point distribution was trial and error of the worst kind (old adventure game players know what I’m talking about).
A minor gripe alongside the bigger problems: Upgrades deeper in the skill tree were more powerful than earlier ones, but all of them had a uniform price (one skill point). This is not inherently a bad thing, but it felt like we were doing it just because that’s the way it was done everywhere else.
We decided to remove the skill points system, and renamed XP to money. Every upgrade in the skill tree now has its own price, and buying a level in any skill increases the cost of all future upgrades by a certain amount.
Since skill points are now priced according to their value, the player can choose to diversify at a lower cost later in the game, and can course correct if a combination of upgrades isn’t working out for them. This also makes it so your options increase or stay the same as you move into later game, because you can choose from a higher level in a skill you’re invested in or multiple upgrades in lower levels of other upgrades.
This also allows the player to fill in their weak spots better – if the player finds that they need just a little more speed to dodge enemy bullets better, they can do that at the next upgrade station for a fairer price compared to the early system.
How energy worked was simple: different weapons needed different amounts of energy to fire. If your energy was low, you had to wait for it to recharge before you could shoot again.
The energy system punished you for firing too many bullets in the worst way possible – by making you wait until you could fire again. In a shoot ‘em up, this problem feels even worse because there are a ton of enemies on screen, and players will not be 100% accurate with their shots.
The upgrade system allowed you to increase your energy reserves, but this made the player choose between spending skill points to make the game more fun, and spending skill points to improve their stats. This was a horrible choice, and the optimal way to play was to engage as few robots as possible, wait for energy to refill, and then engage the next bunch of robots, rinse repeat.
Even if you did upgrade your energy reserves, you would still run out of energy eventually, and the same problems would appear. It was clear that the system was not suited to the game at all.
This was one situation where simply removing a bad system did 90% of the job. We already had weapon specific fire rate options, which were brought to the forefront. Later on, we divided the weapons into primary (high rate of fire, low power) and secondary (low rate of fire, high power) to give the player more variety.
More importantly though, we made it so you could shoot as many bullets as you wanted. Because our founding fathers would have wanted it this way.
In the old version, if you died, you just respawned at the start of the level. The enemy bots you had killed stayed dead, and the ones who were hurt-but-not-dead stayed at the same health.
This was not really a system, rather a lack of system to handle death, and resulted in tougher levels becoming a tiresome grind where you chipped away at the enemy over the course of multiple lives. Bioshock suffered from a similar problem. It was clear we needed a better way to handle player death.
Since the levels in Good Robot are procedurally generated and different every time, roguelike-style permadeath was a natural fit for the game. However, we were not opposed to giving the player a way to recover if they messed up – bonus points if it fit the gameplay/story aesthetic we were going for. To that end, we introduced the warranty.
The player can buy a warranty, which is one extra life. If the player dies while they have a warranty, they respawn at the start of the current zone. The warranty gets more expensive for each upgrade your robot has, and for each time you buy it. After a lot of playtesting, we found this to be a good balance of difficulty and convenience.
A few weeks ago, our team meeting was wrapping up as we had finished discussing the important stuff. Then this conversation happened (paraphrased):
Arvind: We’ve been making Good Robot for almost as long as TF2!
(A series of hilarious and original hat jokes ensue)
Shamus: I think I can actually add hats to our game.
Arvind: This confirms my theory that any game in development long enough will end up with hats in it.
Shamus: Who said that?
Arvind: I came up with it. Just now.
Ross: I wouldn’t have guessed, that was almost sort of clever.
Arvind: Meeting over! Bye everyone
Thus, we ended up with hats in the game. Hats were purely cosmetic, which meant that they didn’t integrate with the core systems of the game. Purely cosmetic hats are fine, but could we do something more with them?
We made a hat vending machine that shows up at the start of every zone. Hats are dirt-cheap and absorb the first shot that hits you, after which they fall to the ground. This gave them a small amount of utility. Then we realized that this could potentially add an entirely new layer of challenge to the game.
A normal player will probably find hats funny and buy them once or twice when even one shot saved could make a difference. However, if we added achievements for completing a zone, a level, multiple levels and the ENTIRE GAME while wearing a single hat – they become an entirely different game mode for an experienced player, where they have to avoid being hit at all while completing a section of the game.
Which means that now, if you want to get 100% achievements in Good Robot, you have to be very good at the game. We ended up with this hidden high-difficulty mode in the game, and all because of hats. All hail hats.