Authors: Austin Grossman
Tags: #Ghost, #Fiction / Ghost, #Fiction, #Fiction / Thrillers / Technological, #Suspense, #Technological, #Fiction / Thrillers / Suspense
“Let’s just say you don’t have levitate.”
He threw a grappling hook across the river and yanked until the ropes gave way.
“And you don’t have a grappling hook.”
He then froze the river.
“No freeze spells.”
He cast Lava Storm; the flying lava blobs struck the water and congealed. Soon there were stepping-stones of solidified lava.
“No lava!”
He took off his armor and swam. He pushed rocks into the water until he had enough stepping-stones. He cast Three-Second Invulnerability on himself, then cast Fireball; the explosion threw him over
the chasm and a ways down the road. He polymorphed himself into a giant eagle and flew across. I gritted my teeth.
“So what if you didn’t have any items or spells?” I told him. “Just a bow and arrow.”
He thought about it for a while, and then shot arrows across the gap until he’d cut both of the ropes holding it up. The drawbridge wobbled, leaned, then fell with a crash. Problem solved.
“Nice puzzle.” He went back to his desk.
I could see why some designers thought of players as the enemy. As a designer I could see a perfect scenario playing out in my head, but players didn’t care about it in the slightest, they just followed their own script. In the WAFFLE engine, this was more true than elsewhere. It gave players a great many tools that interacted with the world and each other. Used creatively, or in combination, these tools could enable a player to do almost anything. I’d seen a playtester climb into the sky by startling a flock of birds, casting Stop Time, then leaping from bird to bird to land on the back of a dragon that took him so high he could see the false sun was a thin yellow disk pasted to the ceiling of the world.
I made a local copy on my laptop and met Matt in a scrubby café in Davis Square. I ordered a coffee, and he got a large slice of day-old Key lime pie on a paper plate. I showed him the bugs Lisa had assigned me, then he spent half an hour going through the data while I stared at impressionistic paintings of electric guitars. Most of the people there were our age but had apparently learned different lessons about how to spend their lives. Behind me two men and a woman discussed different brands of racing bicycle.
“I don’t suppose—is there any way to just not care about this?” I suggested.
“So I’m going to guess that you haven’t looked at your bug list lately.”
I opened my laptop and looked, and there was a brand-new one.
Reporter: rlamber
Version or Build: e3
Module or component:
Platform / Operating System: whatever was at e3
Type of error: design
Priority: 1
Severity: 1
Status: open
Assigned to: RMarsh
Summary: e3 demo error
Description: fix soonest please
It was now a P1S1, also known as a showstopper. We couldn’t ship with a P1S1 in the active database. In some cases you can’t even leave the building with an open P1S1 attached to your name. And “rlamber” was Ryan Lambert at Focus, which meant I didn’t even have the authority to DNF it. Not even Don did.
“Oh.”
“If it helps, Vorpal’s got it, too.”
“Really?” I said.
“They licensed WAFFLE along with
Clandestine
. Their public event went okay, but I’ve heard there was some epic mayhem in a closed-door press event.”
“More—epic—than ours?” I asked. “How’d you hear about their demo?”
“Some people out there are still big fans of Simon’s. They think Darren’s screwed up a lot of what made Black Arts good.”
“Why didn’t this ever come up before? We can’t be the first ones to see this happening.”
“It’s definitely happening more often, but yeah, that’s one of the mysteries,” Matt said. “QA should have got it if nobody else.”
“Is somebody covering it up? Taking stuff out of the database?”
“It wouldn’t be hard; it’s not like there’s any security. Anyone can delete anything at any time, and playtesters are used to being ignored. But I don’t get the reason.”
“Maybe somebody screwed up and they’re trying to keep from getting fired,” I said.
“I can’t see it. Bugs are just a fact of life. It has to be on purpose, but that’s almost as weird.”
“Sabotage? Or just an odd sense of humor?” I suggested.
“An Easter egg, sure, but usually those don’t actively break a shipping game.”
“What if it was industrial sabotage? Like it was planted there. Somebody at KidBits, even? I was just thinking, it’s a good thing Focus didn’t know about this when they bought the company; they would never have paid that much for it. Maybe Darren cashed out because he knew it’d get found out.”
“Maybe. But remember, all the code got reviewed before it was checked in. So Simon or Darren or Lisa would have had to okay it.”
“Isn’t this the kind of thing Darren likes? People getting killed, blood everywhere, chaos? I thought that was, like, his aesthetic.”
“Yeah, but look at all those
Clandestine
games he made. He likes story. He basically wants to do movies!” Matt said. “And when Mournblade shows up it tends to break the plot. It can kill the character you need to start the next quest, or break the sacred diamond you spent half the game finding. Darren cares a lot about controlling events within a given framework, because that’s what you need to get a story told. You subtly hem players in and push them forward through the story as they play. But you have to keep control of the events around them to do that. The blind seer has to show up on cue to give a speech; a bridge has to break at exactly the right moment—these are the big plot events you plan out in advance. With Mournblade around, everything goes haywire.”
“Maybe that’s what Mournblade is all about,” I said.
“What do you mean? What’s it about?”
“It’s not a weapon for killing characters. It’s a weapon for breaking games. Think of how a griefer plays—they don’t win the game, they play against the game; they break it. The designer sets up constraints—the way you’re supposed to play—and they say no. It’s not just vandalism or perversity, it’s a war of liberation. Whose story gets told—the designer’s or the player’s?”
“Basically, let’s say Simon was going to put something where you can’t get to it, like a room with no doors, a puzzle with no possible solution in the rules. The game just won’t let you, unless you make it, or trick it.”
“So what’s there? What do you find?”
“I don’t know. Whatever the gods have hidden from you. Hidden from themselves, maybe. At the very least there must be an off switch for it. A way to reboot the WAFFLE engine, fix it.”
“Can we do it?”
“Griefers aren’t the only ones who break games,” Matt said. “I used to work for Quality Assurance.”
Beta had its own signature routine, the morning bug meeting, where Don read out whatever inexplicable disaster the QA guys logged the previous day.
July 3: “I went down a particular corridor and turned left. Game froze. Repro x3.”
Data! We’d check out the corridor and report back.
July 8: “I dropped my short bow, then picked it up, then dropped it, then picked it up again. Game froze. Doesn’t work with other objects. Repro x2.”
Art! a programmer would shout, and he might be right—a flaw in the 3-D model.
July 12: “I ran the game and pressed New Game. Game froze.” No repro, but P1S1 anyway.
“…”
“…”
“…”
“I’ll assign it to you for now, Lisa,” Don would say, as kindly as possible.
He tried to keep a light tone at the meetings, but most mornings they went by in an atmosphere of sullen, petulant rage, a roomful of black-T-shirted, pale twentysomethings clinging to self-control, faces puffy and slack with sleep deprivation.
Programmers, designers, and artists had long since learned to hate each other with the pure and unflagging hatred orcs reserved for elves, but they were brought together in their hatred for Quality Assurance. A game tester was obliged to report almost anything that didn’t work right—one measure of their productivity was simply driving up the number of bugs reported. They’d report design flaws, textures that weren’t detailed enough, or anywhere the frame rate lagged a little bit. Better safe than sorry.
But of course the goal of every other department was to lower that number. This was where I most came to admire Don’s seemingly inborn ability to suck the maniacal hatred out of the room when it flared up, or at least to soldier on through the tension until it dissipated.
Insufficiently detailed bugs were ruthlessly kicked back to Quality Assurance. At least a quarter of the time, Don would get only halfway through reading a bug and someone would angrily shout, “Fixed! As of the lunchtime bug.” Or they’d shout, “Dupe!” for “duplicate,” a bug that had had the same root cause as another open bug but manifested in a different context. After weeks, five persistent crashes in five different areas were proved to be the same bug after one tester finally noticed they all took place when the player was carrying one of every type of currency while attempting to switch between primary and secondary weapons within thirty meters of a horse, pony, donkey, or unicorn.
Don congratulated people for particularly clever fixes, or, failing that, for committing particularly colorful errors. The best of these went
into a permanent hall-of-fame list kept in red dry-erase on a superfluous whiteboard. Gallows humor, but hilarious.
July 14: “Texture-mapping error makes Prendar’s pants the same color as his skin ergo appears to be wearing no pants.” 100% repro for that build. “REPEAT PRENDAR HAS NO PANTS.”
July 18: The thermomantic spell Ice Storm had a bug in which it tried to reference the Giant Hailstone object and instead found the Pony object, which resulted in the spell Pony Storm, in which the caster fires a spray of between six and eight ponies at the target. Fixed, although we kept it open as long as we possibly could.
Lisa hid a secret spell in the necromantic arsenal. By combining elements of Poison Fog and a reversed Cure Disease, the caster could initiate a plague that could potentially depopulate the world. Not a bug, we decided, and hid the formula deep in the library of an abandoned castle half consumed by ocean.
Most bugs were more prosaic. “Fell through world (x = 65.7, y = 3809.1).” This one was a constant for months. No one ever stopped falling through the ground. I’d find it, too, constantly—one minute the world is a solid thing, the next you’re watching it disappear into the distance above you while you fall through white space, never to return. For an instant you’d see nearly a whole kingdom above you, then you’d splatter against the ultimate lower elevation limit of the world and the sad truth that all of Endoria lives inside a colorless rectangular box.
I walked by a machine that was doing nothing but showing split-second glimpses of
Realms
levels. It would appear, look around for a second, then vanish and appear somewhere else. I watched it for a while. Forest… dungeon… mountain… too fast to follow. Lisa had written a script to render a single frame of the game, teleport, and render another frame, logging everything that happened until the game crashed. Longest duration so far, sixty-one minutes.
Endoria was being atomized until it was hard to think of it as a place at all—the long, haunted walk north after the mountain pass, which
seemed like an endless, grueling rite of passage in the extended playthroughs, seemed like an obvious trick when you knew you could teleport from one end to another in an instant. There was no ten-league stretch of forest, it reminded you; there was just a set of numbers. It was just data. In the same way, playing hide-and-seek with the marauders who have sailed upriver, it could take hours, days, to find your way through to the Endorian coast, where at last you reach the Lonely Tower and find the eerie Plutonian Dagger still gripped in the dead, unfeeling hand of the wielder who came before you. But the dagger was just a check box on a spreadsheet you could pull up in the editor. A click of a button and it’s yours.
It started to feel like a miracle every time you took a step and found solid ground, or every time anything in Endoria behaved like the coherent reality I once imagined it to be. The secret truth was that the thing we had created had a gossamer delicacy, and any given piece of it had a hundred options as to how to behave in any given situation. It would only pick the correct one if half a dozen different systems coordinated exactly correctly, systems typically maintained by people sitting in different parts of the building who might or might not be speaking to one another on a given day.
The sword was coming more and more often. After E3 we saw it at least once a week. Todd watched it destroy all the life in a crowded city, an hour and fifteen minutes to bare streets and empty houses. Even the rats were gone. Afterward, he reformatted the hard disk twice before reinstalling everything.
“I just… didn’t like it,” he explained.
I came into the playtest room to find them crowded around a single machine; we watched a berserk halfling on the far side of a metal grating; it bobbled back and forth for a few minutes, then chopped through the grating. Everyone flinched as the screen flashed red; another player character down.
“Not supposed to do that,” a long-haired tester muttered.
We had nine weeks to get through beta, which was an arbitrary length of time that had been set with no actual regard for how much work it represented. We fixed hundreds of bugs a day, which seemed impressive until I realized that the number of bugs was still increasing. We couldn’t even think of bringing the bug count down until we tamed the rate at which new bugs were discovered. Black Sword bugs were all assigned to me, as the original owner, but I noticed no one was asking me about it.
M
y bug list was flooded, and it wasn’t until the third weekend in September that I found time to play through the rest of the Nick Prendergast games. I had to; there was no other way to find Mournblade. But it also meant facing the fact that first-person shooters ruined Nick Prendergast. The debonair, slightly hapless spy became a hardened one-man killing machine, fully capable of storming through a division of Russian infantry and leaving behind nothing but well-searched corpses.