Category Archives: Interactive Fiction

Making Fragile Shells

When the 7th Casual Game Design Competition was announced, I had no intention of entering it. While all of the competition entries were supposed to be text adventures (yay!), the competition’s theme was “Escape” (sigh), and authors were encouraged to set the entire game in a single room (boo!). At the time I was in the middle of playing a lot of “Escape the Room” games because Eli demanded them. There was no way I was going to write one of those. What frustrates me most about Escape the Room games is their illogic and their story-less, motivation-less settings. You’re in a room; fiddle with objects until you find the way out. Bleah. No thank you.

Fragile Shells, new interactive fiction by Stephen GranadeOf course, one week later I had an idea compelling enough that I had to use it: what if the player were trapped on a space station, and had to escape or die? This grabbed me for a couple of reasons. One, I’ve never played any IF set in a real space station in zero-g. Two, a broken space station is one of the most inimical settings I can think of. It would help motivate the player, making them really want to escape. Other than by typing QUIT, I mean.

I spent some time considering the likely audience. The heavily-trafficked website running the competition would likely draw in players who weren’t as familiar with IF and its conventions, so I decided to make a small puzzle-centric game. The size limitation would let me polish the game’s interaction as much as possible and give me enough time to implement newcomer-friendly touches like progressive hints. The focus on puzzles would fit with the Escape the Room genre, making the gameplay more familiar to the audience.

So, then: could I write a good interactive fiction Escape the Room game? There’s already been one attempt at parodying the genre, but I didn’t want to take that approach. I wanted to make the genre’s clichés fit naturally within my chosen setting and add more story, motivation and characterization. I started by listing every Escape the Room cliché I could think of. Codes. Combining items to grab out-of-reach objects. Color-coded DVDs or keys or books. Removing screws with screwdrivers. Computer screens or keypads. It became a challenge to fit in as many tropes as possible, both from Escape the Room games and from IF. Amnesia? Sure! Give the player a concussion with a soup├žon of both post-traumatic amnesia and retrograde amnesia.

Once I had a list of Escape the Room tropes, I expanded the story. I set the game a few decades from now and settled on a team of astronauts from the UK to further tweak expectations. I knew the story would come through in flashes, slowly spooling out until, by the end, players had all of the pieces of that puzzle. Doing so took advantage of IF’s focus on story and provided a second motivation for playing the game: to figure out what the hell was going on. (I didn’t do this as well as I should have, and I left at least two pieces of the story too implicit to be easily understood. Ah, well; next game, perhaps.)

There are roughly seventy ways to write a text adventure for every one author, though Emily Short has enumerated five approaches. I ended up doing two things that made my life much easier: I graphed out the puzzles and I wrote a complete transcript of the game before I began coding.

A puzzle diagram for the game Fragile Shells

The puzzle graph let me see how puzzles linked together and let me tweak dependencies for play balance. Using Lovely Charts I arranged the puzzles and the objects until I was happy with the game’s flow. I knew I wanted the player to be able to work on multiple puzzles at once, so that stuck players could move on to other puzzles. This goes against the usual linear gameplay of Escape the Room games, but I can’t always be a slave to fashion.

Making a transcript first was the best decision I’ve made this year. By writing a transcript, I forced myself to think both as an author and a player. It made it easier for me to anticipate unusual commands and alternate command phrasings that players might use. Instead of writing prose in discrete chunks, coding object after object, I wrote fluidly. I didn’t have to stop writing to think, hey, just how am I going to implement a chain that can be tied at both ends? Overall it made the game far more polished right from the get-go than I was used to. I didn’t hew exactly to the transcript during coding, but it gave me the spine of the game and a lot of usable text.

This level of planning helped me tremendously. Looking at my SVN log, I started coding on December 19th and by January 8th I reached the first beta build. Speaking of SVN, I highly recommend authors use source control. Source control helped me keep track of changes I was making, and at one point let me track down a bug where I had broken previously-working code. I used TortoiseSVN on Windows, though there are plenty of good options. I also placed my SVN repository, the files that keep track of the changes, in a Dropbox-synchronized folder. Dropbox is an online service that synchronizes files among computers that you own and keeps a copy in the cloud. (That sound you hear is Jason Scott grinding his teeth.) Dropbox gave me automated backups not only to Dropbox’s computers but also other computers I had access to. I felt much better knowing that I wasn’t one hard drive crash away from losing all of my work.

Overall, writing Fragile Shells was the smoothest IF-authoring experience I’ve had. I’ll definitely be using a variant on this approach and workflow for my next game.

I Survived PAX East

I made it! I survived several days in Boston without serious incident. I even went for a ride on the MTA, and did I ever return? Yes, I absolutely did.

Enough of that. How was PAX? you ask.

A giant crowd of people from the 2010 US inauguration

The main difference was that the crowds were there to play games and see Gabe and Tycho and wave their Nintendo DSis around instead of to watch Obama be inaugurated. Let me put it this way: the room for the Storytelling in Interactive Fiction panel filled up and was closed some fifteen minutes before the panel started. We packed a room with people to hear about interactive fiction.

I did go to a few other panels and wandered the expo floor, but most of the time I hung out in the IF Suite that Andrew Plotkin conjured up. I saw a lot of old friends and met new people who were entirely wonderful. Seriously, if I started listing all of them I’d be here all day, and who wants that when my lonely XBox 360 is begging me to play with it.

My main takeaway is that I need in-person IF events on a more regular basis. I’ve come back with a head stuffed full of ideas and new directions. I got a chance to be loud and passionate about IF in a way that I haven’t done in years. (Sorry, Nick, Aaron and others who got to hear me declaim loudly until Jason dragged me away. It was late and I was tired!)

Also I played Dragon’s Lair. For free! That’s nearly $1 at 2010 prices I saved!

I Have Many Facets, Like an Onion

Hey, my game Fragile Shells placed second in the Jay is Games Casual Game Design Competition #7. I’m in a three-way tie for second, mind you, but given the other two games (including Andrew Plotkin’s), I’m quite happy with my placement.

I was also pleased by how my game was reviewed. Gruelove, Matt W., and the always-hilarious Jenni Polodna all had positive things to say about it. Jenni even gives a shout-out to the Zune, which I should have done. In my defense, I expect by the late 21st century they’ll only think of them as iPods, even the sad old Creative NOMADs. At least until a NOMAD returns as a giant space probe who can only be stopped by merging with a bald chick.

Where was I? Oh, yes, second place. Yay!

Where I’ve Been the Last Month

Fragile Shells, new interactive fiction by Stephen GranadeI’ve been writing a text adventure!

Fragile Shells is a short, puzzle-centered game. I wrote it for the Jay Is Games 7th Casual Game Design Competition. This 7th CGDC is an all-interactive fiction competition, so how could I resist?

You don’t know how long you’ve been hammering against the station’s wall, but you stop as soon as you realize what you’ve been doing.

If you head to the competition’s page you can play my game through the power of Flash or Javascript and rate it. There are also twenty-nine other games you can play. Why not give them a try and rate them as well?

One Last Post About Child’s Play

In the I-forgot-to-post-about-this department, back at the first of the month my text adventure Child’s Play took home the XYZZY Award for best NPCs. Clearly the route to creating award-winning non-player characters for a work of interactive fiction is to not have them talk.

And in the last week there have been two reviews of the game. Grunion Guy wrote a short but glowing review at the IFDB. Over at IF-Review, Emily Short enjoyed the game, and had kind words both for Zoe and for the mostly non-interactive parents.

Child’s Play, a New Text Adventure

It is playgroup day and playgroup day is normally a good day but ever since that little red-haired girl started coming she always wants your toys.

She shouldn’t get your toys.

You tried telling the mom this but she doesn’t understand you. She mostly ignored you but then she just shoved a pacifier in your mouth and changed your diaper.

Back in 2006 I wrote a playable introduction for a text adventure called Child’s Play. At the end of last year I finished it. It’s finally polished enough that I’m pimping it on the blog.

For those of you unfamiliar with interactive fiction, works of IF are (roughly speaking) text-based games where you play the protagonist in a story and deal with puzzles. In this one you play a baby struggling against another baby for control of your favorite toy during a playdate.

This is a work of fiction.

At any rate, go download Child’s Play and give it a try. You can even play it online if you don’t want to sully your computer with IF just yet. If you’ve not played IF before and would like some guidance, you should read Emily Short’s guide to IF. And if you write IF, why not peruse the source code?