My original design for the game was “2D Descent”. That was the core inspiration for the project: Bright colors, electronic music, shooting lasers at crazy robots in caves. But this design wasn’t working. I didn’t know how to fix it and I was worried I was too close to the project to be able to analyze the thing objectively.
Lots of people offered advice. I had a dozen different, completely contradictory suggestions on how the game might be fixed. Everyone was happy to tell me how to fix the game by making a completely different game, but if I couldn’t realize my own vision then I probably wasn’t qualified to build theirs either. My original vision didn’t work out, and I didn’t know where to go next.
One of the key problems was that I’d never really worked out a proper fail state for the game. I had the moment-to-moment stuff down, but the win / lose states were undefined. If you died you’d just respawn, BioShock-style. It’s not that I thought having a game with no lose state was a good idea, it’s that I’d just never settled on a particular system.
How should death work? Maybe like Borderlands, where you’re taxed 10% of your money / XP when you respawn? Maybe like Dark Souls, where you drop all of your money / XP when you die, but can recover it? Maybe like Pac-Man, where you have a fixed number of deaths before a game over? Maybe like a modern game, where death reloads the last checkpoint? I fiddled with all of these and a few other ideas, but none of them really jumped out as the “correct” solution.
I guess early in the project I sort of assumed the answers to these sorts of questions would become obvious as the game took shape. I expected mechanics to “click” into place, but that never happened. I had a dozen different directions the game could go in and I didn’t have a good sense of which way was best. I was paralyzed by choice. I realized I could spend the rest of my life prototyping stuff without ever moving any closer to my goal.
And so the project stalled.
Then later when I teamed up with Pyrodactyl, we returned to the question of “What does this game need to be fun?” As we began working together the game began moving in a very “roguelike” direction.
Lots of people have said, “I’m surprised you made a game with feature X, Shamus, since you’ve spoken out against it in the past.” But I hope it’s clear at this point that I wasn’t the only person who contributed to the final product. My original idea had failed to produce a viable game. Sure, I could have put my foot down and refused to let the team implement features that fell outside of my personal preferences. Here is how that conversation would go:
Shamus: No! We can't have escalating difficulty mixed with permadeath in my game!
Everyone else: Okay. So what's your suggestion?
Shamus I literally don't have one. That's why I joined up with you guys.
Everyone else: So what are we supposed to do?
Shamus: I don't know what I want but I'll know it when you suggest it. Just keep suggesting ideas for me to shoot down.
I’ve worked with people who behaved this way. It was not fun. More importantly, they didn’t tend to carry projects to victory. Part of being on a team is trusting that the other people know what they’re doing. Whatever faults people may find with our final design (lots of people have offered insightful critiques in the comments) it’s still better than the dead-end shooting gallery I’d put together on my own.
I’ll let Ross talk about how the gameplay took shape…
Coming into Good Robot as a game with its core systems basically completed was an interesting experience. After Unrest and Will Fight For Food it would be the third time starting my job on a game part-way through development, but among them only Good Robot had so much of the base game complete before I got my hands on it. This wasn't so much a project to finish putting together a video game as one to take a game apart and reassemble it, adding on as few new pieces as possible.
Firstly, as might surprise you, I played the game. I played the game a lot. Simple enough, but often underestimated – especially by me, and doubly so in the midst of development. My first thought, after noting and instantly enjoying the thumping, booping soundtrack, was that this game was solid. Levels generated in a reasonably diverse ribbon shape (as Arvind already elaborated on); bullets had punch to them and shooting felt good; power-ups were easily understood; the robot's movement and aiming were precise and challenging enough to feel rewarding. Picking up the Good Robot for the first time was a breeze and a joy. The only immediate lack I felt was variety, with only a single weapon to my name.
Variety is hard to call an easy fix, since the result is cracking down and creating more types of things, but it's certainly a simple one. More weapons! More robots! More levels! It sounds like a mistake in the making, but this wasn't actually wrong – more weapons made more styles of gameplay and gave us another variable to randomize, more enemies extended the shelf life of our shooting mechanics even further, and more levels made good on that promise. Sometimes bigger really is better.
But in spite of all this, a sort of listlessness still hovered over the game after a short bit of play. Even though we had more options than ever, the drive to use or discover them was slipping away once the player was familiar with the game's fundamentals.
So where was the interesting-ness going?
Rhythm. It's not a perfect analogy, but it's close. Every game has a series of core decisions that form a loop which makes up the moment-to-moment play. Survey the environment, see a demon, dodge its fireball, shoot, collect a powerup, repeat. Head towards un-eaten dots, reach branching path, evaluate threat of ghosts vs. potential score, repeat. Depending on the game, these loops can be long or short. Most have several types of loop strung together, or a core loop with wildly divergent branches. Put all of them together and you have a series of repeating actions forming a larger whole – a rhythm. This is where our problems stemmed from.
If you were to somehow graph ten minutes of gameplay in terms of the number, type, and weight of decisions made within that time, the earliest build of Good Robot I played would closely resemble a straight line. You moved horizontally for five screens, shooting the level's enemy type and collecting their score nuggets; as your score increased you bought simple upgrades (damage, speed, rate of fire, shields… and “energy”, but we don't talk about energy); soon enough you dropped down and looped back the other way for another level. The line ticks up once in a great while as a boss appears, but it's not that major a change – and only a brief interlude before the player descends another shaft, reverses direction, and enters the next level. As mad as it sounds, even seamless level transitions were working against us.
What we needed were moments of tension and uncertainty, and instances of downtime where the player could take a breather to juxtapose them with. Rather than a consistent, predictable simmer, our line needed its peaks and valleys. The same principle goes into just about every form of entertainment, from composing music to writing stories. It's amazing how far good rhythm can carry a game – I strongly suspect it's the secret sauce behind a game like Diablo II's success, and the mixed results of its imitators.
With this as a guidepost, it's easy to explain a lot of the changes Good Robot underwent before release: more lethal combat, meaningful death states, hand-designed levels and profiles for the types of robots that could appear in them, weapons as powerups, warranties, randomly-chosen shop types with randomized contents. The goal was to make it possible for a player to fluctuate between being on the ropes and relaxing safely behind their contingency measures over the course of a game; to let them to walk into a seriously bad situation now and again, or catch a lucky break. We engineered breather periods by breaking the game into distinct levels with shops at the start and end, and built bosses and enemies which played with the player's expectations and altered their tactics.
In so many words, we changed up the rhythm to keep it from growing stale or predictable, and this time the interesting-ness hung around for another go.
No Plan Survives The Meta
In what's certain to be the second time I lead an article with a piece of obvious-seeming insight, I offer you this: no game designer in mankind's colourful history has ever been entirely correct about how another human being will play his game.
I stressed the importance of rigorously playing one's own game before (and chided myself for not doing it enough – bad Ross!), and this is the main reason why. No matter how far ahead you think, no matter how predictive or canny your reasoning, the meta will outwit you. It is the gestalt of a hundred thousand minds, pulling in different directions – none of them quite where you intended – and it will eat your carefully-laid strategies for breakfast.
As it turns out, predicting humans is hard. Take a recent game of Pathfinder I ran: a five-man party was working its way through the hallowed crypt of their nation's royal mausoleum, leagues under the earth, having just pulled themselves from a tricky encounter with a legion of ghostly soldiers. They stopped to rest, and the session ended. My dark work began.
I built a long hallway full of corners and alcoves that emptied into a dark, maze-like chamber full of standing pillars. Like any sensible person, I reasoned they would see the superfluity of hiding places and enter with extreme caution, checking every recess… but two dozen fruitless searches later, their guard would drop enough to miss a skulking assassin pressed into the shadows. To extend this time and build out my world a little more, the spirits of two small children would draw the party's attention, and make them doubt the possibility of combat so close by. One of the pair would flee into the darkness at the sight of them, naturally leading the group in that direction. A body with an important item lay squirreled away in an out-of-the-way passage far to the south – something they would be asked to come back for in a future encounter. The stage was set.
As my group assembled for the night, I played out in my head the way this ruse would go down: after confirming nothing was hiding, the party would find the first of the two ghosts and stop to interact, leading into the second's retreat. The band would follow, passing enough of the pillars to get a sense of the place before stumbling upon the little ghost hiding behind one… and the assassin would strike from behind. This would lead them into a cautious advance, fighting through ambushes and uncovering bits and pieces of the room's story. Caution and wit would come to the fore – a stark contrast to the running bedlam of the previous combat encounter. I knew how people thought, you see, and I would use that to build for them the game of their lives.
The fighter – a towering half-demon juggernaut with a maul – entered my first passage, took a single look at the terrain, and proceeded to roll his Perception to look for danger. He repeated this roll every ten steps. The others followed in a tight formation. Peering playfully out from behind a hanging tapestry, the spectre of a small girl beckoned the man's attention. I silently grinned. And then my plans disintegrated.
“I ignore the ghost.”
“I do the same and follow him.”
“I talk to it.”
“I'll listen in.”
Three of my party remained behind – the other two barreled right into the second ghost immediately and led off in pursuit. Careful pursuit. The most deliberate pursuit Torvus had ever seen, featuring torches and night vision and dutiful Perception checks. The pair branched south a corridor later, and branched again. They missed my assassin; they missed the assassin after my assassin. Preternaturally they dodged every threat – every trap – for a solid five minutes, without realizing a thing.
Hundreds of feet from their eagerly-chatting comrades, they found the rare thrice-nested assassin. By rolling max dice on a Perception check. Which they were still doing. They killed him in a single round, never realizing he was an assassin, then walked smack dab into the quest-hook body before knowing why they needed it. They thought this session was even more fun than the last.
Putting aside my pedestrian GMing skills, this is something that happens to every game designer at every level, from multiplayer FPS titles to turn-based card games. You can see it every time Hearthstone prints an Alarm-O-Bot, or a tooltip in Overwatch advises you to shoot Mei's ice walls. Even in games with no multiplayer component like Good Robot, how one expects the game to be played does not resemble the way others will play it. It's only natural – we're not psychic; most of the time we're passing crafty at best. Our planning serves to improve the odds, not eliminate them.
Valve has had this worked out for years – they know that they don't know, so they playtest rigorously and early in development, making changes to their games in progress based on the behaviour they see forming rather than anticipating the reactions of the players in their minds. It shows in their games (now of yore?), that almost every mechanic does what it's intended to… because if it ever didn't, it was probably noticed early on and altered. Even then, their games see regular balance patches and variable tweaks to adapt to the developing meta.
Of course, not everyone can be Valve, and as my anecdote hopefully showed, not every break from the designer's intentions is a bad experience for the players. Whole new genres of game have come to be through some hapless designer's ruined plans, and others are swiftly patched without much issue. It's something that has to be considered on a case-by-case basis.
On the subject of which: Good Robot's meta maladies were enlightening to study. As Shamus has written about before, we considered homing missiles too strong before I started to dodge them laterally rather than break their line of sight. Before release none of us put much weight on the range of weapons as a balancing factor, and after realized that firing from the safest position was literally the most important aspect of the game at high levels, especially in the environment of a no-hit run that we had just constructed. Bouncing projectiles struck me as fun and skillful when I included them on a handful of weapons; they became vital survival tools to kill enemies without danger in the eyes of the playerbase.
Some of these revelations have led to changes in the rules – others have become canonized and remain core parts of the game. The majority of my work on Good Robot post-launch has been dedicated to exactly this: playing a strange game of chicken with the meta, a move at a time – forever trying to outwit the human race.
Juvenile and Proud
Yes, this game is loud, crude, childish, and stupid. But it it knows what it wants to be and nails it. And that's admirable.
Push the Button!
Scenes from Half-Life 2:Episode 2, showing Gordon Freeman being a jerk.
Batman v. Superman Wasn't All Bad
It's not a good movie, but it was made with good intentions and if you look closely you can find a few interesting ideas.
Bethesda felt the need to jam a morality system into Fallout 3, and they blew it. Good and evil make no sense and the moral compass points sideways.
id Software Coding Style
When the source code for Doom 3 was released, we got a look at some of the style conventions used by the developers. Here I analyze this style and explain what it all means.