Vaporware
Page 21
One by one the other pilgrims at the caffeine shrine either took their offerings or wandered off as well, finally leaving me face to face with the key to my future productivity. “Which one, which one,” I asked myself, digging into the drawers of single-cup pods. They had different names—Jamaican Blue, Colombian Morning, Kona Aroma—but near as any of us could tell, they all tasted exactly the same. I grabbed one at random, dumped it into the machine, and waited.
“You’re supposed to press the ‘brew’ button, genius,” I heard Michelle say from behind me.
“Just testing you.” I pressed the button, which I’d completely forgotten about.
“Uh huh.” There was a pause. I waited for the inevitable, and counted to three in my head before it arrived. “Ryan, we have to talk.”
I turned to look at her. She looked, by any estimation, like hell. It was the standard “sleepless night” package—bags under bloodshot eyes, messy hair, sallow skin, and mismatched clothes. She stood there, shoulders slumped, eyes on the floor, and waited for me to say something. She was wearing one earring, I noticed. She never wore just one earring.
“About last night?” I gave her a week grin. “Come on, if we phrase it like that, people will think we’re sleeping together again.”
“Cut it out!” Her head snapped up and she glared at me. “You joke, and you joke, and you joke, and this isn’t funny. Last night? Not funny. The other thing you mentioned? Not funny, either. So for the love of God, can you be serious, just once?” Her hands were balled into fists at her side. White knuckles, too, the sort you see on people who are about to go for an axe.
“I’m sorry,” I said. “Look, Michelle, this is not a break room conversation, OK? You’re right, I should be taking it more seriously. I just don’t want to get too freaked out about it and screw up any chance we have of figuring this thing out. And I’m sorry I made the joke. I shouldn’t have.”
“No, you shouldn’t,” she said, but her hands unclenched and she took a long, shuddering breath. “What do you want to do?”
“Right now?” I pointed at the coffeemaker, which had started dribbling thin brown fluid through its innards and out its nozzle. “I want to wait until the coffee finishes brewing. Then I want to finish up the bullshit assignment that Eric just gave me, and maybe by the time that’s done, I’ll have figured out what I want to say about what happened. That’s all I’ve got.”
Michelle stared at me. “You’re kidding me.”
“No.” The coffee machine belched and burbled; we both ignored it. “The last thing I want to do is charge into this half-assed. So let me get this other stuff done and get my head right, and then we can tackle it with our full attention.”
“Fine. Call me when you’re ready.” She stomped past me, out the door.
“OK,” I told her retreating back, but softly. Too softly for her to hear, or at least that was the intention. First things first, though, and that meant trying to track down the source of the screenshot.
* * *
Dennis was mostly at his desk when I poked my head into his office; the rest of him was on it. He was leaning back in his chair, feet up and planted next to his titanic flatscreen monitor, his keyboard in his lap as his onscreen avatar hacked and slashed his way through what looked like another fantasy MMO. I didn’t go any further in; there wasn’t really room, not with the guts and cases of a dozen machines spread out across the floor. Behind him, more equipment sat jammed onto wire racks, boxes of cables and mice with their cords hanging down, speakers in twos and fried motherboards stacked like kindling.
“Hey, what’s up, man?” He flashed me a grin, then turned his attention back to the screen. “Sorry, got some aggro to deal with. Gimme a sec.”
“No worries.” Onscreen, bright green and purple carnage erupted as Dennis tapped away at his keyboard. Strange, gargling howls emerged from the speakers, muted out of courtesy to the rest of the building.
I scanned the rest of the room, wondering how Dennis ever actually made it to his desk in the morning. It looked like a jumping puzzle from an old-school platformer—step here to avoid that empty tower case, then hop this way to avoid the steel lockbox for the offsite backups, then dodge the stack of still-boxed video cards to keep them from toppling over onto the invoices for Microsoft Office upgrades, and….
“So what can I do for you?”
Whatever Dennis’ homicidal dwarf character had been doing, he’d finished doing it, since he stood on top of the fading corpse of something half-dragon, half wild boar. Bright lights chased one another off in the distance, other players doing unspeakable things to each other’s characters or the local virtual ecology.
“I’ve got a challenge for you,” I said. “Eric asked me to track down a leak, and I figure you’re the man to talk to.”
He stretched his arms out and cracked his knuckles melodramatically. “No sweat. What am I looking for?”
I thought for a minute. “Mail logs, to start. Did someone send anything with attachments to Yar’s Vengeance?”
Nodding, he minimized the game window and pulled up a connection to the mail server. “Dunno, but I can check. Anything else you can tell me about it?”
“Start looking after Blue Lightning got cancelled. No one would have had reason to leak anything until then, right?” He nodded. “And you can probably rule out any of the artists. The screenshots aren’t good enough. They would have done touchup before they let them out of the building.”
“What a sad state the world is in when people can’t let the games speak for themselves.” Dennis shook his head, even as his fingers were flying. “What happened to honesty in marketing, man?”
“Didn’t know there ever was any,” I said, and we both laughed. “Anyway, if you come up with anything, let me know.”
“You know it’s a longshot, right? They could have just dropped the images onto a USB drive and mailed them from home, or posted them somewhere the Yar’s guy grabbed them, or, well, there’s a lot of ways they could have gotten out there.”
I grimaced. “I know. But it’s worth checking, at least.”
He swung his feet down onto the floor and leaned forward. “It is. I’ll let you know if I get anything. You’ll be at your desk?”
“Unless Michelle kills me in the meantime, yeah.”
Dennis gave a short bark of laughter. “She ain’t going to kill you. She still likes you a leeetle too much, bro.”
I shook my head. “She and Leon hooked up. I’m just hoping they let the kids call me Unca Ryan.”
He blinked. “Leon and Michelle? No way!”
“Yup.” I looked back out into the hallway for a second. No one was there. “Keep it under your hat, OK? Eric’s not real fond of people fishing off the company pier.”
“That’s ‘cause Eric don’t get laid.” He gave another bellow of laughter. “Well, goddamn. Tell you what—let me get on this for you, and I’ll have something by the end of the day. You think of anything else, let me know, all right?”
“All right.” I pulled myself back out into the hall. Behind me, I could hear him still chortling to himself. “Shelly and Leon? And fucking Leon?”
I shook my head and kept going.
* * *
Talking with Dennis had given me an idea. If it was going to be tough to track down how the images got out, I could at least start by figuring out how they might have been made. Screenshots were, after all, just that—a snapshot someone took with a screen capture utility while playing or pulled from recorded footage of gameplay. And the stuff on Yar’s Vengeance had looked genuine, like it had been pulled from someone’s personal play log and not a carefully choreographed play session designed to show off the game’s best assets.
Back at my desk, I pulled down the last build of Blue Lightning off the network and installed it on my debug kit. I’d had one on there, but like a good soldier I’d wiped it when we switched to Salvador. Now I needed it again.
While it was downloading, I sent a quick email to Sarah asking
if she wanted to go out for dinner, then dealt with a few other issues that all seemed terribly important to somebody.
At last, a ping let me know the build was installed. I picked up the controller and fired the game up.
The screen flickered for a moment, and then the familiar shell appeared. I felt myself grinning at the sight of it and at the memory of what the game was going to be. That faded quickly as I thumbsticked my way through the menus to the Quick Play option, then started scrolling through the maps looking for the one that had so prominently featured my electronic demise.
There were twelve maps in the list, plus a test space that we’d used for testing out features. I scrolled down quickly, past a post-industrial wasteland and a battle-ravaged space station, past a mile-high tower and a burning oil refinery and a nuclear power plant perpetually about to go critical.
And then, there it was—Urbanscape. It was one of my favorite maps, one we’d done strictly for multiplayer. It didn’t quite fit the game’s story, but we didn’t care because it was so much damn fun, a war-ravaged downtown with hunks of architecture liberally appropriated from New York, Chicago, Paris, London, and Poughkeepsie. The central premise, as Michelle had described it, was “blow the crap out of your favorite buildings,” and really, it had been all about the collateral damage.
I selected it, and the game began cycling through load screens. On my laptop, I pulled up the most egregiously offending screenshot and zoomed in for comparison. Finding where the screen capture had been taken might give me a clue to who had taken it.
The loading screen vanished, and in its place was the imaginary cityscape I remembered. I put the game on PAUSE, then inputted a series of cheat codes. One would render me invulnerable to enemy fire, another would let my character run at ten times normal speed, and a third would allow me to fly as needed. All of these had been immensely useful in building and testing the space, letting us get to particular spots on the map to examine them without having to play through again and again. Now, though, they were just helping me get to where I needed to be.
There were enough landmarks in the screenshot to allow me to find the general location easily. I could see a chunk of modified-just-enough-to-not-get-us-sued Sears Tower, which immediately placed the site in the southwest corner of the map. Also visible was a row of brick-fronted shops I’d insisted on, relics of the six years I’d spent growing up in Connecticut. From the relative angle, the shooter on the image had been almost due south of the spot and elevated about thirty meters.
I went hunting. My avatar—faceless as a default, as I hadn’t bothered to go through the customization screens—sprinted through the streets. Generic enemies spawned in and took potshots at her, but they mostly missed, rockets and blasters taking chunks out of the level geometry as I sped past. The few rounds that hit bounced off, leaving explosions hanging in mid-air as my Blue Lightning maneuvered past them, ignoring them.
Within seconds, I’d reached the spot where my avatar had died so spectacularly. I checked the screenshot to double-check, and there it was. Same sidewalk, same steaming manhole in the middle of the street, same storefront with glass as yet unbroken by hostile fire, and same dirty snow-grey sky overhead. All that was missing was my virtual corpse.
With the spot established, I turned to the source of the screenshot. I oriented myself south, guesstimated the angle, and flew along the best-guess vector. After a second, I turned myself around so I could try to match the onscreen image with the screenshot for distance.
And I promptly flew out of the world. One second I was staring at the streetcorner in question, the next I was looking at the untextured back side of one of the buildings that marked the map boundary. The map, in its entirety, sat there floating in space, a titanic playset cast adrift from any context. This was perfectly normal, the standard effect of moving outside of the playable space on a map. After all, the levels really had more in common with Hollywood sets than anything else. They were elaborate fronts and showpieces, but there was no context to them. They just floated in virtual space, until someone found a bad bit of level geometry and fell out of the world.
Like I said, it was normal, except for one thing. The shot on Yar’s Vengeance looked like it had been taken from roughly this distance, far outside the level’s playable boundaries.
“What the hell?” I stopped, then zoomed forward until I was back in playable space. The second I was back in, I checked the image for reference. It was no good; it was too close. A thumbnail guess on the image gave it a range of fifty meters scoped; I was maybe thirty and running up against the map boundary. Maybe unscoped would work, but the image had shown the tell-tale signs of the sniper scope user interface effects around the edges. That meant, in simplest terms, that the screen capture had been taken from outside the map and through a building. It could have been taken from an earlier version of the space, when that building hadn’t been there, except that I knew for a fact that the outside boundary had been one of the first things the level artist had built.
So that, then, was impossible.
Another possibility was that the internal landscape had been re-arranged and that the corner in question had been moved closer to the edge. I shot off an IM to the artist in question, and ten seconds later I got my response. NO CHANGES TO SW CORNER OF THAT MAP—IT PLAYED GR8. Y U ASK?
Just curious, I wrote back, and OKTHX. If the distance didn’t work, maybe I had the angle wrong. If I went up, maybe I’d get the distance I needed to make and take the shot.
I guided my avatar straight up, looking for a spot where the shot might have been taken. There had to be a ledge, a fire escape, something that the shooter could have stood on.
There was nothing. I stopped and thought about it for a minute. If there was nowhere to stand, then they had to be using a cheat code, except that by the time the distance was right, the angle was way off.
In other words, the screen shot was impossible. It couldn’t have been taken, not without a massive rework of the level that had never happened.
Below me, on the street, enemies were gathering, taking potshots into the air where my avatar hovered. As more and more showed up, the game’s frame rate slowed. Missiles crept through the air, their smoke trails burgeoning behind them. Individual bullets whined and nicked off the architecture while more and more AI took up firing positions on the street below.
Impossible. I sat there and thought about it. The explosions and bullet ricochets got more and more infrequent until finally the game locked up, a full sixty or so hostiles frozen in the act of firing. I let it sit there, then turned and tapped out a message to Dennis. Got anything???
There was a long wait, then his response popped up. YEAH U WONT BLEIVE THIS 1.
I sent him back a quick, ??? When that didn’t get a response, I added, won’t believe what?
SOMEONE HACKED THE MAIL SERVER CREATED AN ACCOUNT SENT PIX DELETED IT.
Can you do that? I asked.
U CANT, came back, followed by, DON’T KNOW WHO COULD NO LOGIN ATTACHD 2 HAX
I hesitated for a minute, and then typed leon? terry?
Another window popped open. It was Eric, and he wanted to know how things were going with the hunt for the leak. Just fine, I typed in. Onto something, give me a minute.
His message flashed back an OK, just as a third window, this one from Sarah, winked into existence. I’d rather stay in tonight, if that’s OK with you. Maybe we can order something.
Sure that’s great, I typed back, then bounced over to Dennis’ window, which was now blinking for attention. PARANOID MUCH?
It’s because of who I work with, I dashed off, and went back to Sarah’s window, which was now blinking again.
What do you want? Chinese? Pizza? I could go for Thai. She added a smiley-face emoticon at the end, which told me that she really wanted Thai and she really wanted to talk about it to make sure I did, too, which was exactly what I didn’t have time for with chat windows blowing up all over my screen.
I answered her with, I’m good with whatever you decide, then went back to Dennis just as Eric’s window flared open with a request for details and a new one from Leon took up a chunk of increasingly crowded screen real estate. D00d. Got a minute?
Not right now, I typed back at him, then went back to Dennis, who’d announced, DON’T THINK THEY COULD BUT I COULD BE WRONG.
No, no, I wrote back to him. That’s good to know. Then it was I’m working on it to Eric, a quick look at Sarah’s Is everything OK that required either a thousand word answer or no answer at all, and then can you give me five minutes to Leon.
It’s just a quick thing, he wrote back. OMW.
“No!” I found myself shouting, as the message tag attached to Leon’s window went into AFK mode.
With only a moment’s hesitation, I jumped back to Sarah’s window. Everythings fine, I wrote. Just a little busy.
If you don’t want Thai we don’t have to have it, she wrote back instantly, leading me to believe she’d already typed it in and had just been waiting for a sign of life from me before sending it. In the meantime I’d hopped to Dennis’ window and thanked him, then over to Eric’s to respond to his query about all the busted equipment that had been found on various engineers’ desks. Personal equipment, I wrote back. Leon’s. Trying an experiment with realtime picture-in-picture that we didn’t want to present before we had an idea if it was worth trying. It was a lie, but as the entire point of the exercise had been to shield Terry from Eric, I didn’t want to rat him out at this juncture.
How did it fly? he wrote back, and I cringed. Rather than answer, I jumped back to Sarah’s window, just as Leon walked into my office.
“Hey, man,” he said, and shut the door.
I looked at the chat windows, then at him, then at the windows, then at the door, then back at him. “What’s up?”
Instead of responding, he dropped into a chair. “You got five minutes?”
“If I say no, you’re going to sit there and keep asking me until I do, right?” With an unspoken groan, I pushed back from the desk and folded my hands in front of me. “What’s up?”