Iron ChIF: Season One Episode 1 (lpsmith vs. Afterward, using Inform 7)

People were talking a lot about different writing processes earlier. I couldn’t really weigh in at the time, because I was busy making a game. Well, I have some time now.

Step 0

Last week, I realized I didn’t have a strong idea of what size of game I could make in five days. So I wanted to do an experiment.

I have learned something about myself that I find very important even though it sounds obvious and stupid: It is easy to write when I know what I’m going to write; when I don’t know what I’m going to write, I’m not very productive at all. Maybe it’s a matter of having high degrees of inertia for both “design mode” and “implementation mode.” I can work up a lot of momentum in either gear, but switching between them is rough.

Therefore it would be smart of me to separate my five days of development time into design and implementation phases. I figured, if I spend one day deciding exactly what my game is and choosing all the little details I can stand to choose, then I can spend four days in a state of flow, typing out all those details I chose without pausing to come up with any new ideas.

For purposes of my experiment, I thought I could save myself the trouble of spending one day designing a game if I resolved to implement an existing game instead. I asked my Patreon members what graphical game I should adapt to the text adventure medium. @tvil said “Link’s Awakening,” which is a perfect choice because I have that game more or less memorized. It would be like a Pierre Menard thing!

I guess the initial idea was to find out how much of Link’s Awakening I could write in four days, but pretty soon the goal changed to writing “the first part of the game and the first dungeon” in “a few days.” But I still got useful data: Over this many days, with this many distractions, I wrote this many words, amounting to this many rooms containing this many things—and a puzzly little combat system that I think was pretty neat.

My unfinished Inform 7 port of The Legend of Zelda: Link’s Awakening is a Patreon exclusive for the time being. But anyway that was the prep work.

Step 1

It was Sunday morning in my time zone when the ingredient was finalized. I hope it’s okay if I don’t reveal the whole string of ideas that came out of the prompt; maybe after you’ve had a chance to play the game I can say “well that made me think of THIS which made me think of THIS which made me think of…” I wrote down a bunch of notes.

A while back I made this video for the EnigMarch people, in which I talk about certain elements of the creative process that might be relevant to this step.

Step 2

The writing period started early Sunday night for me, but I was still in pre-prewriting mode at that point. On Monday, I cleared off the dining table, cut myself a huge piece of butcher paper, and started drawing up my Big Board. It looked like this:

With a Big Board, you can see your whole game in a glance. You can write notes as big or as small as you need. You can use markers and colored pencils to indicate regions or phases or whatever. You can stick little tabbies on there to represent short-term tasks. Critically, when you’re done drawing it out on the dining table, you can tape it up on the wall over your desk, and now everything the game needs to be is right there in front of you as you work. Neither a paper notebook, nor a word processor file, nor any fancy computer application can hold a candle to the Big Board for game design work (primarily because no notebook or computer screen is big enough to show me the level of detail I crave).

And yet the Big Board can’t be the first step in the design process. You can’t start drawing the Big Board until you know what your project is, the shape of the information you need to keep track of. For me, this usually involves deciding what all the locations and their relative positions are; that part of the process usually goes in the notebook. In this case, I knew that I had unaltered and altered version of locations to worry about. So I drew out rooms that were four by eight inches, and divided each of them into unaltered and altered squares.

Then I started drilling down and deciding what objects should be in each location, where the puzzles need to be for the gating to work, what the puzzles should be, blah blah blah. I had to change some room names and connections.

When I’m deciding what’s in a location, I think about its functions. A location can have puzzle functions and pacing functions and tonal functions and so on. “This room is supposed to feel like your home base. It’s functional, but it’s also a safe haven.” “This room represents something perpendicular to the player’s experience and the main story.” “This room is just there to facilitate a transition between the tones of those other two rooms.” I guess I never write out that sort of sentence. But I have (or I need to reach) an intuitive understanding of a location’s purpose, and then I can choose details that serve that purpose. Maybe the “home base” location needs a map to help plan your adventure, a trophy case to track your progress, and a sleeping bag that convey how comfortable the character feels. So I write those three things on that square on the Big Board.

By the end of the day Monday, each box on the Big Board had a satisfactory number of details written in it. I think the only code I wrote that day had to do with room connections, and I told you about that at the time.

Step 3

On Tuesday, I taped the Big Board up over my desk. For each room, I now understood its function (if only as a brain-notion) and its contents (as written notes). I wrote some code to generate the code-outline of each room for me:

When play begins:
	let alpha be "ABCDEFGHIJKLMNOPQRSTUVWYZ";
	let current-room be 1;
	repeat with lat running from 1 to 5:
		repeat with long running from 1 to 5:
			say "Part [current-room] - [character number current-room in alpha][paragraph break]Room-[character number current-room in alpha] is a room. Latitude of Room-[character number current-room in alpha] is [lat]. Longitude of Room-[character number current-room in alpha] is [long].[paragraph break]Printed name of Room-[character number current-room in alpha] is 'ROOM[character number current-room in alpha][quotation mark].[paragraph break]Description of Room-[character number current-room in alpha] is 'DESCRIPTION.'[paragraph break]Real description of Room-[character number current-room in alpha] is 'REAL DESCRIPTION.'[paragraph break][paragraph break]";
			increment current-room;

Next I needed to “decorate” the rooms. A room description needs to mention the items the room contains (except the items that are supposed to be harder to find) in a way that executes the purposes of the location. Good sentence.

Once the room description is written, I can write descriptions of scenery items that flow from the broader description in a sensible way. On a broader scale, I try to decorate rooms in roughly the order that the player will/should/might visit them, in the hopes that the player and I will be kind of on the same page.

If an object description invites the player to smell or rotate or switch on the object for incidental purposes, I’ll write that response as part of the same “conversational flow,” but if there’s a puzzle or a complex system or a higher-order thing going on, I’ll leave a comment for myself: [TO BE DONE: COMPLEX SYSTEM.] That way I don’t lose a bunch of momentum by changing gears (unless the complex system is exciting enough that I want to work on it right away).

A room with these basic features, where you can walk around and do a few interactions without accomplishing anything, is “decorated.” I think all my rooms were decorated around the middle of the day yesterday.

Step 4

Then I started implementing all those puzzles and complex systems and higher-order things. I leave this stuff for later on because it seems more difficult than writing descriptions of things, but often it turns out to be pretty easy—because all the simple parts are already in place! I just had to add more complexity to them! Of course.

24 Likes