April, the year 2000. The COBOL-powered machines that still ran the world had just weathered the storm of the millennium’s crossing over. The first Xbox was more than a year away. And I was eighteen years old, hard at work learning how to write code for video games. Doesn’t that sound sterile to you? It does to me. “Coding games”. “Game programming”.”
It sounded just as bad to me back then, even though I knew it was my only chance to do what I’d always dreamed of – don the metaphorical articulated trumpet, cymbal hat, and bass-drum backpack belonging to the one-man band of game design and coding together, just as I knew my predecessors had done.
Sometime during the spring break of my freshman year at Digipen Institute of Technology – my Alma mater and my only claim to any academic prowess – I had a years-long romance with text-based game design and coding. Maybe it was because text output was the technical limitation I’d started with (Ed Fries, by the way, has a nice piece about the merits of designing for constraints), or perhaps it was a ZZT-laden nostalgic stumble (Tim Sweeney, too, has his own thoughts on design limitations) that left me collapsed, dead-drunk in ASCII alley.
I’d started with something simple in the fall of my first year: a two-person text-based shootout, with a hokey, random-number driven combat system and as much described textual gore as the sixteen colors of the ANSI spectrum would let me emphasize. I remember references like:
[X]‘s head explodes like a melon!
Sadly, that game was lost to the saltating sands of time. Over the next few months along with my official semester project, The Capricorn Document, came a minigame-rich stealth-and-reflex challenge (Covert Ops Simulator), and a Blackjack game with an acerbic, wise-cracking dealer and random sightings of famous celebrities (Blackjack at the Casino Royale).
LOOK OUT, IT’S ELVIS!
But even Capricorn, a six-person effort created as a capstone course our first year at Digipen, and arguably the world’s only real-time stealth-action text adventure, wasn’t to be my crowning achievement. No. That honor was reserved for The Agency: Razor One, which now sits before me, half-finished, abandoned in the darkening autumn days of 2001.
That Was Then…
Thirty-seven-thousand lines of code. Of essentially straight-laced C; no polymorphism, no inheritance, just functions, structs, and pointers to structs, coded almost eleven years ago by a kid in a fugue; God knows what I was thinking.
Poring over the code and fixing it up to VS2010 standards, the realization sinks in – this code is hideous. This was before the Writing Secure Code revolution at MS forced the “_s” secure library updates, and there are easily 1,000 or more of that flavor of warning sprouting up through the cracks of the code now. The most prevalent 2010-era error is the updated standard about variable scope. Apparently, I had a habit of declaring and initializing i in the middle of a for-loop and reusing the i later. That’s a modern no-no (for readability and sanity’s sake, I completely agree). Eighty or ninety manual changes, and I’m compiling.
I start to get an idea of where I was at back then. I had taken copious notes, drafted up a Game Design Document, a presentation slide deck, and more. The code speaks, too, and I think that even back then, I suffered my own foolhardiness with some semblance of good – if gallows – humor. I see some of the little things. The joking typedefs. The hard-coded strings. The ostentatious comment blocks warning of cut-off code in huge swaths that go nowhere, like a hazard sign over exposed, frayed wiring.
Do You Wish To Continue (Y/N)?
I have my reasons for wanting to continue. I admit to myself they’re mostly internal. It seemed like years ago I delivered an early demo to one of my cousins – years later, he asked me when I’d get him a finished copy – apparently, he played the hand-to-hand combat simulator part of the game regularly, and couldn’t wait to play the full game.
I promised him then – in 2006, maybe – that it’d be done sometime. I just didn’t know when.
I wasn’t even twenty years old when I set out to make this game that had no financial future, no portability, no re-use, and no elegance. It was crude, bulky, untested, buggy, and obsolete right out of the box, a needlessly-crafted Victorian Christmas for those gamers that I hadn’t even considered family – I was a light player of text adventures and only a tourist in the then-nascent world of Multi-User Dungeons. Nobody would buy it then, and nobody would even work up the energy to laugh at it now.
And now I’m thirty. Married. Puppied. And the fugue that once overtook me, spurred on by a post-adolescent aesthetic reflection, doesn’t ring true when I ask myself questions befitting a reasonable human: “Is it useful?” “Does it have a chance to sell?” “Will it blend?”
I haven’t a clue, to be honest. The triumvirate gods of good taste, usability, and digital continuity remain silent on the matter also.
I Have a Dream
I dream that one day I won’t feel like an outsider in the grand reciprocal reactor of games; the pure white-hot furnaces of creativity and the soothing coolant of consumerism feel like they spin right around me, somehow perfect, stoichiometric, and untouchable.
I’ve neither made enough of modern-popular or past-cult-favored media nor played enough with the powerful consumer tastemaker communities to speak in any erudite way about where-we-are or where-we’re-going with games, or any one of those million ways we are the art we create, the games we make, the stories we tell.
But when I look at Razor One, those thirty-some-thousand lines of code, I remember that long ago, there used to be a time when I didn’t care. All I had in my head was a game I had dreamed – all I wanted was to see that idea come to life. I’ve thought of picking up that code right where I left off and – for the sake of salvaging some long-lost vial of liquid pride in the collapsed buildings of my history – finishing the son of a bitch, come hell or high water.
But – then what?
I think most of my adult life can be summed up in those two words, the consideration of which has given me most of the breaks that have allowed me to draw together the shreds of a respectable life.
I just wish I didn’t have to listen to it all the time.