There’s almost nothing in the way of story in the game, although it’s not for lack of ideas.
My original idea – which you can still sort of see scraps of here and there – was for an insane world. Since “robots go haywire and kill humans” is such an ever-present trope in fiction, I wanted to create a silly world where the reality was just as common as the trope. A world where homicidal robots were just a fact of life. A world where the solution to killer robots is to build more robots to protect you from the killer robots, and then when those go haywire you get more to protect you from them, and so on, until the air is thick with robo-warfare. The companies that make the robots are terrible at engineering, and the people are all mindless consumers with no sense of self-preservation.
This wasn’t intended to be some heavy-handed social commentary on consumerism or anything. It was really just an excuse to make “crazy robot” jokes and gently poke fun at well-worn genre tropes.
It’s a bit like Saints Row The Third, where the player is encouraged to not feel bad for the idiot civilians they run over, since they’re all shallow and stupid. In Saints Row, people vapidly worship the endlessly destructive, mass-murdering gang. So when they die it’s not an injustice, but comeuppance. Maybe throw in a dash of “Everyone is insane” from Borderlands.
The game would briefly pretend that you were fighting bad robots, but quickly the story would (somehow) hint that you were just the latest in a long line of pedestrian robo-servants turned rampaging killbots. The final level would have you fighting the ARK, which the player might infer was a vessel being used by the last of humanity to escape the mess they’d made.
To be clear, I wasn’t looking to do a “YOU WERE THE VILLAIN ALL ALONG” kind of twist. Yes, you’d wind up genociding the human race and that probably sounds pretty villainous. But my goal wasn’t to condemn the player for playing the game like Spec-Ops: The Line. Rather, the goal was simply to take the absurdity of insane AI to an even more absurd extreme.
The turrets in Portal are always trying to murder you, but people don’t think of them as “evil”. In fact, they’re kind of lovable. I wanted the Good Robot to come across in much the same way. It’s just doing what it does, and you can’t really hate it for that. I didn’t want the player to feel guilty or betrayed, but instead I wanted them to chuckle, “Of course. It HAD to turn out this way.” I wanted them to feel like they were basically giving these idiots (their creators) what they deserved.
Coming up with these kinds of jokes is shooting fish in a barrel. Rutskarn took a lot of these concepts and ran with them, making them darker, yet also funnier. He looked at the Good Robot design and noticed that one of its arms looked kind of like a pizza cutter. So he ran with the idea by suggesting it was literally true: The Good Robot was a pizza cook / delivery robot that went crazy because of course it did.
So that was the story.
That Sounds Fun. So Why isn’t Any of it in the Game?
The problem was: How do we convey this? This is fundamentally an action game, and action games do not mesh well with the little story popups I was using to convey this nonsense. Nobody wants to stop in the middle of a gunfight to read a couple of paragraphs. It was an awkward – even unwelcome – break in the flow.
Originally, there were little icons floating around the levels. If you activated one, you’d get a popup dialog with some text that would reveal a bit more of the world. The icon would also spew out a little XP (later changed to money) to encourage you to seek these things out.
There were several problems with this:
- Since these story nodes were scattered around randomly, the player could easily miss them. This made it hard to tell jokes. Rutskarn could put the set-up for a joke in one node and the punchline in another, but the player might obtain them in the wrong order, or miss one of them. You could put the setup and punchline in the same popup, but that’s inherently less funny. It also makes the dialog longer. It meant that all jokes needed to be fully self-contained and limited the amount of worldbuilding we could do.
- Players don’t want to stop and read things. This is not because today’s youth are illiterate dum-dums who don’t appreciate the rich literary tradition of LOL MURDERBOT jokes. It’s because this is an action game and reading text – even witty, fun, clever text like Rutskarn writes – is fundamentally at odds with this. Walk up to your friend while they’re playing Geometry Wars and shove a couple of really witty paragraphs from a Douglas Adams book in their face. I predict they’re not going to appreciate the humor in that context.
- By delivering XP, we were sending a message “You need to be collecting these things!” They were supposed to be fun and optional, but that’s not really how the gamer mind works. We know a collection quest when we see one, and we’re always wary of missing out on important items, information, or XP. Which means that playtesters would fly around an empty level, making sure they didn’t miss any popups. This was a fun-killer. As a game designer you can’t tell the player, “Don’t do that. You’re playing the game wrong.” If they’re playing the game wrong it’s your fault, and you need to properly guide them to the “correct” way to play. And you guide them through incentives.
- This was supposed to be a game about replay value, and jokes do not fare well under repetition. This is particularly true in the case of a game where you’ll play the starting levels over and over again.
So this wasn’t working. We explored a lot of ways to fix this. We experimented with the ordering of the jokes to make sure that the setup would always precede the punchline. We toyed with the idea of only putting popups in specific tunnels that would be empty of enemies, to encourage players to stop and take a breather. We thought about only putting them in the first and last room of a given section. But all of this still called for the player to stop playing and read some text, which felt fundamentally at odds with the rest of the experience.
We considered the idea of doing a Borderlands-style voice overs. You can still see the remnants of this idea if you look at the Steam trading cards for Good Robot. You’ll see there was a general character, a slimy corporate salesman who was constantly trying to downplay the ridiculous scale and scope of the destruction, an indifferent tech support operator who spends all day fielding calls from people who are trying to fend off the new robot they just unpacked, and a malfunctioning idiot self-aware computer virus that just wants to sell you useless shit.
Basically, each character was a container for a style of joke: So if we had jokes about email scams, virus, anti-virus, transparent phishing scams, or malware, they would go to the Virus. Jokes about marketing, corporate speak, and tone-deaf corporate PR would go to the salesman.
The thinking was that their portrait would appear in the corner and they would talk to the player over the radio. This sort of ran against the initial idea of you being the bad robot. I mean, if you’re that bad robot then why would they be talking to you, a robot who has no money, isn’t a customer, and is causing the problem they’re trying to solve? So the Good Robot was changed from “the robot that thought it was good but was actually crazy” to “the only good robot in a world of killer robots”. That ran against my initial concept and took a little of the the dark edge off the humor, but made it easier to tell jokes.
But voice acting is expensive. And it’s awful if you get it wrong. Badly delivered jokes are far worse than silence. And there’s still the problem of when to do it, since you don’t want these idiots jabbering at the player during tense fights, covering up a corner of the screen with their image and drowning out the game audio. If done well this could be amusing, but done poorly it would be a disaster. And since none of us had done anything like this before, the odds were pretty good that we wouldn’t nail it on our first try.
Voice-over work requires finding voice actors, casting them in parts, recording and directing their performances, and paying them. We were equipped to do exactly zero of those things. We’d never worked with audio vocals before, which meant there probably would have been blunders and false starts. I think we all realized that paying money to voice act a story that was still being changed and re-written every couple of weeks would be a bad idea. On top of this, it was a story that only existed for the sake of tone and texture, and wasn’t required for the core gameplay to work.
Ultimately we decided we didn’t have the time (budget) to risk on something like this. The characters were dropped. The only remnant of them in the game is that their portraits are used on the Steam trading cards.
So in the end, we wound up with no story. That’s a little disappointing, but I’ve always said that games don’t need to have story, only that the story they do have be worth listening to. While I have total confidence in Rutskarn’s ability to tell jokes, I was doubtful we could tell them in a way that didn’t interfere with gameplay. It was a shame to throw out so much good stuff. Rutskarn did a great job, but a lot of his work wound up being cut. It would have been wonderful if we’d found the right way to deliver his material. But I think cutting it was the right call. If you can’t find a way to tell your story gracefully, then it’s better to leave it out than to tell it un-gracefully.
So that’s where the story went. We’ll wrap up this series next week.
Good Robot Dev Blog
An ongoing series where I work on making a 2D action game from scratch.
Bad and Wrong Music Lessons
A music lesson for people who know nothing about music, from someone who barely knows anything about music.
Silent Hill 2 Plot Analysis
A long-form analysis on one of the greatest horror games ever made.
A look at the main Borderlands games. What works, what doesn't, and where the series can go from here.
Quakecon 2012 Annotated
An interesting but technically dense talk about gaming technology. I translate it for the non-coders.