Thursday, August 15, 2013

I Made a Mod

You remember how I played a few Shadowrun Returns campaigns, and thought they were interesting but rather rough? I may have thought, "Oh, I bet I could do something like that." And I did! I whipped up a little module called Antumbra, and tossed it onto the Workshop, and... it's been a really gratifying experience. Fun to work on, and rewarding to hear from people who've played it and enjoyed it.

It felt surprisingly great to get back into modding again. As I was working on Antumbra, I realized that it's been a long time since I've built anything for another game. I think the last serious modding I did was for Civilization 2, back in the mid-to-late 90s. Actually, Civilization was also the first franchise I modded. The original Civilization was one of my favorite games. One day, when I was bored and nerdy, I started opening random files in my computer to see what they looked like. (This was one of the nerdier thing I'd done up to that point, but would pale in comparison to the moment in college when I realized that I could pipe arbitrary files to /dev/dsp in order to find out how they sounded.) Most were gibberish, but I was surprised to see that several of the files for Civilization were viewable in plain text. I recognized some of the statements that other leaders would say during negotiations, a few messages that would pop up on the screen, and so on.

I carefully made a copy of the entire game (which was quite a hit to my 40 megabyte hard drive), and then started editing the files and saving them. I was elated to discover that it worked - I could change some text, then play the game, and immediately see my own words coming back to me from within the game! Wow, how cool! I embarked on my major project: to align the game's cosmology with the Biblical creation story. I carefully edited the text for the opening movie, replacing its description of a five-billion-year-old Earth and a long process of evolution with text from Genesis 1, synchronizing each step of the creation story with the pre-existing graphics. I felt inordinately proud of myself for striking a blow against secular humanism, and reframing the context of the game into a more palatable mode.

When people asked me what my favorite computer game was, I used to tell them, "The original Civilization is the greatest game to ever have been created in the entire history of mankind, and Civilization 2 is even better." Along with the numerous other improvements of the sequel, it was also a bonanza for the nascent modding scene. As with its predecessor, many files shipped in a user-editable version. I was really impressed to see that this was even true of the graphics - a single image file contained frames for each of the different units, so if, for example, you wanted a giant space monster in your game, you could copy over one of the existing units with your new picture, and then it would show up in all future games.

Civ 2 also introduced the idea of a "scenario": a special game mode that used the existing engine, but played out differently than the usual epic 4000-BC-to-2000-AD experience. Each scenario had a unique map (usually on a flat map representing a particular geographic region), large pre-existing civilizations with their own cities and armies, and unique victory conditions. The original Civ 2 shipped with two scenarios: The Rise of Rome, a classical-era game with a fledgling Roman Republic arising in the post-partition Greek world; and World War II, an awesome simulation of the European theater that starts at the moment of the invasion of France.

I think MicroProse figured out that there were a lot of people like me that enjoyed tinkering with their game, because soon after came an expansion titled "Civilization 2: Scenarios". This didn't make any major changes to the core game; instead, it added a slew of new interesting scenarios. There were some more historic ones, like the American Civil War (a focused battle) and the Age of Discovery (a more open-ended experience); some alternate-history ones, like a World War III set in 1979; and my personal favorites, two dystopic sci-fi scenarios, one set in a frighteningly difficult alien invasion of Earth, and the other set in a post-apocalyptic Road Warrior-esque future.

The real prize for me, though, was that this expansion shipped with its very own scenario creator. You could build your own unique map and create custom civilizations and units, bundle them into a new scenario (instead of needing to overwrite your core files), and use a simple scripting language to turn it into a real game. You could create special events, enforce victory conditions, programatically spawn units, enforce diplomatic states... the possibilities seemed limitless!

I spent a lot of time building an enormous and elaborately detailed map of Middle-earth (using the expanded Iron Crown Enterprises map that included the lands east and south of Mordor). Once that was done, I started creating a Bereliand map for a scenario set in the First Age. I got excited when I figured out how to achieve certain fictional effects by using my available tools in unexpected ways, such as creating the Girdle of Melian by making a bunch of invisible units, setting their type to Bomber (so land-based units couldn't attack them), and then setting their movement rate to 0. Now Doriath could wait secure until the time had come to marshal their forces and march into battle.

I then set myself to a more ambitious project, creating a more open-ended scenario that was set in Midkemia after the Ringwar Saga. I'd enjoyed Raymond Feist's early books, but disliked the Serpentwar Saga, so I decided to try and create my own version. I set up the scene as it was right before the latter Saga, with Arutha ruling Krondor and an enormous armada invading from the west. Several other independent nations were in the mix, and it was really fun and interesting to see all the different ways that the conflict could play out. Once again, I got just as much pleasure from figuring out how to accomplish certain effects, such as creating winter storms that would arise in the Bitter Sea, traveling randomly and damaging ships they encountered, only to vanish after the seasons turned.

So, yeah. I had a ton of fun. Modding seemed very different in those days: I didn't have an Internet connection to speak of, and no access to the nascent modding communities, so it was purely something I would do for fun; in the best case, if I really liked something I'd made, I would share it with a few real-life friends who also enjoyed Civilization, but that was about it.

Around the time I went to college I started getting more Internet access, and was stunned at the originality and creativity of other modders. And not just for Civilization, either: games that I would have thought were un-moddable, like Half/Life, had entire conversions available to them like Counter Strike, adding entire new 3D models and completely changing the style of the game.

This was a wonderful trend for me as a gamer, but a disturbing one for me as a wannabe-modder. As modern games got more complex, the skill requirements for making a good mod grew steeper. There's a huge difference between editing a cartoony 32x32 pixel block in a GIF file, and building an entire new wireframe mesh from scratch. Over time I became very accustomed to grabbing the best mods for any new game I got (which is a large part of the reason why I continue to play RPGs exclusively on my PC), but I gave up any hope of modding myself; the most I would ever do was make some edits to an existing mod made by someone else.

In retrospect, I missed a very obvious solution: work with other people. I know, what a crazy concept! There are lots of talented artists out there, and there could have been some fruitful partnerships with someone else producing the art, and me doing some combination of map creation, scripting, and dialogue writing. I'm not sure why that never occurred to me. Maybe because I'd always thought of my modding as a solitary activity, or because I was afraid of letting other people down if my part of a project wasn't up to snuff.

Anyways. Honestly, I haven't thought about making mods for many years now, but that was all rekindled recently with the Shadowrun Returns kickstarter. Pretty early on, the guys at Harebrained Schemes decided that they wanted to put their effort into making a really good editor: the game wouldn't just be about one story they're telling, but them creating the world and giving us the tools to create our own stories. Now, that sounds cool! It seemed perfect for someone like me: I'd be getting a package with a ton of unique character portraits, customizable 3D character models, and a wide array of elements for constructing maps. It seemed like my weakest spots were covered, and I could focus on the stuff that excited me the most.

Certain high-level donors got early access to the editor and a head start on making mods. I didn't have that access, but did pay a bit of attention to the information released about the editor. I started idly thinking about a certain scenario, and jotted down a rough synopsis and several scenes of dialogue.

When the game was actually released, I... totally ignored the editor and just immersed myself in Dead Man's Switch for several days. I'm glad that I did. The final game was different in several small-but-important ways from what I was expecting: it was more linear and less sandbox-y than the SNES or Genesis games. I discovered, though, that I loved the streamlined feel. As I've grown older, I'm increasingly appreciative of games that focus on your character constantly doing cool, interesting stuff, and removing the padding that surrounds major encounters.

Partly based on that, I revisited my original script. I kept the original story intact, but restructured it to have a more DMS-ish sense of constant forward progress, instead of my original plan that involved more backtracking and exploration. I'm really glad that I played the game first. Not only did the resulting mission come out tighter than it would have otherwise, but it was also way easier to make than the way I'd originally planned. (Folks have figured out how to build sandbox Shadowrun missions, but it's a bit hacky and fragile.)

My original inspiration was one of the most vivid memories of my life as a gamer. As a young teen, my family didn't own an SNES, but a junior-high friend of mine did, and I would sometimes go over to his house to play. One of my favorite games of his was Shadowrun. It was my first-ever exposure to cyberpunk, my first exposure to futuristic fantasy, and one of the only dystopic sci-fi settings I'd encountered yet. My little nerd brain was totally blown.

By far the memory that stuck with me most strongly is your entry into The Cage. For much of the game, The Cage taunts you: it's a cool-looking club, and you can hear some neat 16-bit music playing when you enter, but an enormous Troll bouncer blocks your way. In typical adventure game fashion, he demands a Ticket for entry, so you'll need to find that item to proceed. This takes a long time, and so I was left wondering what lay beyond him.

At last, I found the Ticket, returned to the club, and handed it to the troll. He grunted and stepped aside. I ran forward. The music grew louder. I saw other people in the room, dancing wildly. And, then, I saw her. Maria Mercurial herself. Posed triumphantly at the front of the stage, belting out her song into the microphone, while strobe lights flashed all around her and her band rocked out behind her.

I was floored. I'd never seen (or heard!) anything remotely like it in a video game before.

So, yeah. When I thought about creating my own shadowrun, that experience instantly leaped into my mind. I wanted to pay homage to it, and also use it as a jumping-off point for a story of my own. So: I would need a nightclub, obviously. Shadowrun has a very rich and detailed lore, including a whole spectrum of clubs from the very seedy to the very trendy. I was a bit hesitant to borrow one of the existing locations like Penumbra or Dante's Inferno: it's hard to do justice to the versions people have created in their own minds. So, I decided, I would create a new club. And that became the kernel for the plot: yes, this would be a new club. So, it would be an implicit competitor to the existing clubs, and they might be hostile towards it. Land in downtown Seattle is hotly contested, so a new club might need to open closer to the fringes of the Sprawl. I did some research and decided that Everett was a good candidate: it was fairly far away from downtown, and was a poor-but-improving region that fits the profile of a gentrifying neighborhood that could attract a new place like this.

And... well, anyways, it went on from there. You can check out the mission if you want to experience the whole story. (Which, I should warn you, is not terribly long. I know from painful experience that my ambitious projects never get finished, so I deliberately wrote a small, manageable script and then focused entirely on realizing it.)

This post isn't nearly long enough yet! I feel like pompously meditating on the act of creativity.

It's no secret that I became a programmer because I wanted to make games. My very first experiences with BASIC at the keyboard of an 8088 IBM PC were spent recreating the text adventures that I loved playing. I've known for a long time that I wouldn't want to work in today's gaming industry, but the temptation of making my own games kept me motivated through the long process of learning how to program.

I am FAR from unique in this; most of the male programmers I know have similar stories. And it isn't just programmers, either. Practically any gamer you talk with has a few ideas for their own games. Maybe a side-story set in a franchise that they like, or a wholly original concept. Some use their imaginary game as a playground for telling elaborate stories, and others want to wow people with drastic gameplay innovations.

So, if there are approximately 10 billion game ideas out there, how come only a tiny fraction of those ever get made? Well, because making a game is hard. Coming up with an idea feels special, because it's the idea that we remember most when we think about the great games. (Final Fantasy VII: "Futuristic fantasy, Jenova, Sephiroth, fake Cloud." GTA San Andreas: "CJ transcends revenge and builds an empire." Civilization: "Build a civilization that will stand the test of time.") However, the idea (at least in my experience) is by far the easiest part. You can get inspiration in a matter of seconds. You can flesh out that idea into a rough story outline in a few minutes. But then, if you want to actually turn that story into a game? Well, that's where it gets hard.

Using my own personal experiences building Antumbra: like I said, conceiving the overall arc for this (short!) mission took several minutes. Writing the dialogue took about an hour, although I continued to polish it regularly. (As my creative writing teacher once said, "Writing is re-writing.")

With that rough outline in mind, I started translating my concept into editor terms. I would have four maps covering the different geographic regions of the story. I would have five scenes, one for each map and a fifth scene that revisited an earlier one. I looked through the portrait gallery and list of NPC models and outfits to find the correct look for my most plot-critical NPCs.

I'd be very curious to hear how other GMs have approached building their own content (which currently goes by the annoying monicker of UGC for User Generated Content), but my own process went like the following.
  1. I'd start building a map, just roughing out the geometry: laying down floors, streets, walls, and buildings. This will help define the route that the player will take (for a linear combat section), or the area that they will be crossing and re-visiting (for a legwork section). If there are any plot-critical items, I'll place them here.
  2. I then add my gameplay elements. I add the relevant NPCs, including enemies, allies, and quest-related characters.
  3. Next, I wire up the gameplay. There's no scripting language, so instead I use the editor's system of drop-downs to define stuff like different regions, events, and triggers. By this point, the map is somewhat playable, so I'll periodically launch into the game to test stuff out. For example, I might set up a trigger so that when I reach a Lone Star checkpoint, they'll start shooting me unless I have a Lone Star badge in my possession. (Incidentally, that's one of the best things about the editor: how quickly and easily you can jump into the game to try your stuff out. It helps me be way more iterative than I have in the past.)
  4. In conjunction with this, I'll add the dialogue. Due to a weird quirk of my brain, I find it really hard to write dialogue while staring at the conversation editor. Instead, I usually compose it in TextEdit or Google Docs while lying on the couch or riding on BART. Knowing in advance how the conversation editor works, I'll add little annotations in my document that breaks the speech into chunks, explains how they are linked together and/or loop back, and which checks and rewards are associated with each choice. So, when I'm back at my main computer, it's mostly a transcription process to translate the pre-written dialogue into my editor window.
  5. Once a certain scene is done, I'll move onto the next chronological scene, repeating steps 1-3. I'm not worried yet about combat yet, but this is my last good chance to make major changes to a map's layout or friendly NPC configuration. From this point on, making structural changes grows sharply more time-consuming.
  6. After the final scene is complete, I have a playable demo! Huzzah! This is a really, really good feeling. However, it's also very deceptive. At this point, I FEEL like the mission is about 90% complete. However, in reality, I've only spent about 30% of the time I'll invest in making this. As with other creative projects, it's the polishing that will make it good.
  7. I play through the mission a bunch. Is it fun? Does it make sense? How is the pacing? This is a crucial step. In the case of Antumbra, my original design document ended with a mission that was basically, "Kill all the enemies in the location." When I got to the point, I realized, "This is… really, really boring. The level before was way more fun, this just seems like a grind." So, I went back and largely redid it: I added in some puzzles to break up the monotony of fighting, and added a boss encounter at the end to give a more climactic feel. That boss wasn't even in my original script, so I had to write it up on the spot; but by this point I'd gotten a decent feel for the flow of the story, and was able to come up with something that seemed vaguely plausible and challenging.
  8. At this point, I turned to my incredibly awesome brother for some playtesting. Andrew has actually been a professional tester, doing the QA for Saint's Row. He also dug Shadowrun Returns, and so was a doubly-awesome addition. His feedback was unbelievably helpful. First of all, because he gave detailed reports of his own experiences that helped me anticipate how other players would encounter the game. (One fun-but-challenging aspect of letting people build their own characters is that there's a huge variation in the skill sets that a PC can bring into an encounter.) Secondly, he pointed out some important bugs that I had missed because of the different routes I was taking in my own tests. Finally and most importantly, though, he provided positive feedback and encouragement. This is crucially helpful to me at the early stage of creation: it keeps me motivated to keep grinding away and making it good. Negative criticism during creation can kill enthusiasm and doom a project that might otherwise have turned out very well. (Incidentally, this is why I personally am not a huge fan of the release-early-and-often strategy followed by many modders. It can be very efficient, and helps reveal bugs very quickly, but also means you'll be hearing more complaints at an earlier stage of your project. People with thicker skins than me seem to do fine, though.)
  9. While Andrew was conducting his tests, I looped back to the first map and started polishing. My first phase of this focused on filling out the environment with more interesting elements. I added graffiti to walls, installed traffic lights, left out a dumpster, added some vagrants, put in tables, filled them with bottles of booze, put art up on the walls, built a recording studio, laid out offices for junior and senior executives, and so on. This was a different type of process, and actually a lot of fun; I've never played The Sims, but can see now why people would get into it. It's fun to sort of tell a story implicitly through the environment: "This guy is very useful to the business, but Kali doesn't like him personally, so he has a large office on the other side of the building from her." And, for example, I'd work with a "rich" set of props to fill Kali's office, but would only choose the pieces that would match her style and the rest of the decor. (Black lounge chairs and white coffee tables are good; beige armchairs are not.) At the same time, I'm also trying to make sure that everything looks all right. Sometimes you need to fiddle with props and the placement of objects in order for things to look right. This part is more tedious and time-consuming, and sometimes if I couldn't make it look right I'd just get rid of something entirely and replace it with something else.
  10. I then repeated this for the remaining maps, focusing on each one until I liked the look of it: richly detailed and unique without seeming overly fussy or overwhelming.
  11.  Once all the maps were filled out, I did one final pass over all maps adding atmosphere. This involved choosing the lighting for the level, picking out the music to play, placing point lights strategically, and adding non-interactive NPCs to give more flavor to the scene. Placing point lights was one of the most frustrating aspects of the entire process, and required a lot of trial and error.
  12. By this time, I'd received initial feedback from Andrew, so I was able to start fixing bugs that he identified. I also sent him periodic updates as I finished polishing the levels. Once again, his encouragement was really helpful and kept me motivated to finish the time-consuming work of making each map look good.
  13. I'd been running my private beta testing on Steam Workshop. It's a little quirky, but you can publish your content, then quickly edit it to change its visibility to Friends Only. That gave me a really easy way to send builds to Andrew, and also keep track of what had changed since his previous version. (I use a public GitHub repo for my source control, so as long as I know when each build was created, I can easily construct change notes from my commit list.) Once Andrew suggested that the time was ripe to open it up to a larger audience, I flipped the switch from Private to Public, then nervously waited for folks to discover it.
And, fortunately, it's been a pretty good reaction so far! I received some nice compliments about various aspects of the mission (with writing and map design seeming to be high points), and also some very useful constructive criticism. I was glad to not get any notes like, "This mission is no fun," but instead suggestions like adding an auto-save point before the final boss, notes on where certain details of my story didn't mesh well with the Shadowrun universe, and a single (!) typo report.

So, anyways... it's probably implicit in all that text above, but I'll come out and say it: making something is hard work. This isn't unique to games, of course, but I think they're a good example of the incredibly long path from an idea to a completed work. For me, personally, it feels like it takes a fair amount of mental energy to continue working on something, and also a sense of optimism that the results will be worthwhile.

I found myself thinking a lot about art and craft while building Antumbra. Many people automatically associate "arts & crafts" with gluing sequins to pieces of yarn in elementary school. As I see it, though, they're two different schools of tradition that together encompass almost every creative endeavor. An "art", historically, is creating something unique that has never existed before. This includes fine arts like painting, but also activities like writing a novel or composing music. A "craft", in contrast, focuses on making an existing thing very well. A blacksmith is a craftsman, but so is an orchestra conductor or a landscaper.

Based on these working definitions, you can see that whether something is an art or a craft is not automatically determined by its medium; rather, it's determined by the process of its creation. I would argue that books like "The Raw Shark Texts" and "Kafka on the Shore" are examples of art: they feel wholly original, and seem to emerge fully formed into the world. On the other hand, books like the Nancy Drew series are examples of craft: while each particular story is different, they're all built using the same tools, and seek to achieve the same ends.

So, with all that said, I think that the majority of games that are created today are mainly the result of craftsmanship, not art. There's a spark of inspiration that strikes at the beginning of any good game, and that originality is absolutely necessary for a game to be good. But, it is far from sufficient. Much as it pains me to admit, a well-crafted game following a derivative story will be far better than a poorly-executed game with an original idea. (In other words, I'm looking forward greatly to Grand Theft Auto V, and some of my greatest ire is reserved for games like Spore that failed to deliver on great potential. Of course, my favorite games combine unique concepts with great execution, like Rez, ICO, or System Shock 2).

I think part of that is due to the multi-disciplinary aspect of modern game-making. In the early days of PC gaming, a single talented individual could conceive of a game and then create the entire thing. Today, particularly for the best-known games, a game requires the successful cooperation of hundreds of skilled craftspeople: 3D modelers, level designers, voiceover actors, programmers, sound effects engineers, and more. Sometimes a single strong visionary is able to place their stamp over the entire project, but in practice it usually ends up being a collaborative vision, which dilutes the originality but strengthens the project, as each discipline can claim ownership over an aspect of the finished work.

Indie gaming is an obvious exception to this, with weird little independent creations like The Binding of Isaac arriving as strange and wholly self-contained experiences. In a way, mod projects are a kind of corollary as well. In a sense, much of the heavy lifting of craftsmanship has been lifted off of mod creators by the studio who created the game. The modder can then devote more of their time and energies to acts of artistry: dreaming up original stories. However, even then there's still an enormous amount of craftsmanship that is required to make your mod a reality: the sometimes-boring technical tasks of learning the best practices, applying them to your project, then studying the result and making adjustments until it feels fun.

And that's all I have to say about that!


  1. You made a mod, that's awesome!

    Yep, I was no computer programmer, but I definitely wanted to make games at one point. Then I wanted to make pen and paper games. I'm glad I switched over to writing fiction. All that stuff about playtesting and gameplay sounds like no fun at all to me =)

    Why wouldn't you want to work in today's game industry (although I have to say, the more swashbuckling game industry of the 80s and 90s does sound a bit more fun).

  2. Oh, yeah, I'm fascinated by the swashbuckling game industry of the 80s and 90s. I read Steven Levy's book "Hackers" when I was a teen, and its stories of life in Sierra On-Line were fascinating.

    But, today's AAA game industry is an unveiled sweatshop. People work insane hours, receive little pay or praise, and are unceremoniously laid off en masse after a big title ships. Smaller developers have a better quality of life, but few companies last longer than a couple of years. It's way too much stress for me! I'm happy to tinker around with telling digital stories, but I'd hate to have my livelihood depend on it.