For this year’s Spring Thing, I decided to make a narrative-free piece of Interactive Fiction. I love Inform 7 and decided to dust off a proof-of-concept I made and turn it into a full work so people could experience it and I could really dig into Inform 7. I learned a lot about Inform 7, some people thought the result really sucked, and some people got what it was about and thought it was really charming.
This postmortem is here for me to tell some people about the game, and summarize some things I learned so maybe some others can learn as well.
Why I made a parser game in 2020
Parser games are still amazing
Parser games are amazing. At one time, in the 80s, they were considered the future of gaming, an advanced, almost Artificial-Intelligence-like, way to interact with computerized worlds.
You read an paragraph in your own language, and then you type commands in your own language. The “parser” cuts up your command and tries to understand it. In spite of the fact that there’s very little AI, the illusion can be incredibly convincing if carefully constructed.
Parser Games: obsolete?
Parser games require players to have or acquire a specific set of skills. Anyone, even someone who has never played a game before, can figure out a choose your own adventure style game.
The Interactive Fiction Competition (IFComp) and The Spring Thing Festival of Interactive Fiction are the two of the main ways to make sure people will look at your totally new, totally non-commercial piece of Interactive fiction.
Once, almost all games in these competitions were natural language parser-based pieces where your environment is described, and you enter mostly English-language commands indicating what you want the protagonist to try.
Now, almost all the pieces are choice-based. Due to Twine and other tools, making an interactive story that offers you a small menu of options every move is much more common. IFComp had about 25 parser games and about 35 choice-based games last year. This year, Spring Thing had about 20 choice-based games and about 5 parser games.
You can make a very cool choice-based game in Twine without knowing ANY programming at all, but to make a parser game, you darn well need to do a little programming. Programming and all its difficulties can get in the way of people’s natural instinct to tell stories and challenge people with narrative games so it makes sense that parse games would eventually get a little rarer once more accessible methods were available.
Inform 7 is a really cool programming language
One of the most common ways nowadays to make parser games is using the odd and beautiful programming language known as Inform 7.
I’m a professional programmer and Inform 7 always captured my heart. Written English (I think it works with some other languages) isn’t the best choice for computer programming in most cases, but for a language designed to create textual worlds and take English commands, it’s a great choice.
Being able to create new verbs and implement what happens before, during, and after them is a special kind of magic to me. Every few years I’d pick up some Inform 7 and try to make something.
However, it really takes some getting used to, the documentation has some real shortcomings that are tough for beginners, and the English language can really throw me because I expect certain sentences to work and only very specific sentence constructions do! So, I got stuck many times.
My Original Idea
I’d made several tries with games trying to come up with cool mechanisms and fresh mechanics and got stuck every time. So I had the idea to keep it very simple, but create the richest world I could, with every detail able to be examined. A kind of brute-force approach to creating a rich world. I created a table with breakfast and lunch and tried to implement it as fully as I could, accounting for everything possible people would look at and try, writing copy for the smells and appearance of each individual piece of antipasto.
Then, I made a new area with a toy box, and tried to make a rideable hobby horse and got stuck. I put it away for a year, before I decided to dust it off, expand my idea and make a Spring Thing entry out of it.
I wanted to create a place that would satisfy some of the itches people have in Interactive Fiction. I wanted to do a bunch of enjoyable short form writing. I wanted people to be able to discover a lot of little interesting surprises. I threw in a few little puzzles with varying levels of difficulty for people who just need things to figure out while they’re exploring.
The Land of Breakfast and Lunch Sucks
My Beta testers appreciated the details of the game, but the moment it launched, I got some really harsh criticism because it wasn’t what people expected.
It’s “a programming exercise”
People saw it was my first Inform 7 game, and so some of the criticism complained it was “just” a programming exercise. There is definitely something to this. I was indeed learning as I went, and I indeed did not have a lot of structure or narrative to my surrealist landscape.
That said, I really did have design goals. I did have a design document. I was trying to create a sense of surprise and evoke a certain feeling. I didn’t do a good enough job of making my choices feel intentional though.
There is almost no narrative of any kind
This was the biggest complaint. I didn’t in any way advertise a narrative as a part of the game, and I did my best to communicate this to potential players. I wanted a surrealistic landscape that people wanted to explore because it was fun, surprising, and funny. I wanted it to evoke some feelings in people.
People really expect a story, however, and I think even if I tried to make a world like this again, I would create at least some symbolic story for people, because of the weight of people’s expectations. I wanted the player to be playing AS THEMSELVES, something I reinforce in several ways in the game, for instance:
> look self
You are a fictional character who looks very much like the non-fictional you looks. Almost exactly, in fact, except the non-fictional you is slightly more attractive, and the fictional you is a slightly better speller.
I underestimated though how invested people are in having a reason to engage other than the general curiosity of picking up a little puzzle or toy just to fiddle with it.
The puzzle design is lame
I added a few little puzzles to the game, one of them quite difficult and unfair in some ways. I thought I included clues to every solution and previous things in the game that would help people understand the possibility space, but I didn’t do a good enough job.
To make good puzzles, I would have needed to think of them as a more integral part of the creation of the world, and if they’re more of an afterthought, people are going to sniff that out. In a review on the IFDB, a reviewer spent 4 of 7 paragraphs about the game explaining why he didn’t like the puzzle design.
Introducing puzzles in the game definitely created a responsibility to allow people to solve them in a way that made sense to them and I didn’t do a good enough job. The puzzle solutions are odd and surreal, and if there are puzzles, people darn well want them to make sense.
It violates the Graham Nelson’s Player’s Bill of Rights for Interactive Fiction
Graham Nelson, the designer of Inform, and writer of some great IF himself enumerated some cardinal “rights” for players of Interactive Fiction, which you can read here:
While I followed many of them, I would say I probably violated:
#6. Not to need to do unlikely things.
This is further about the puzzle design, but I my puzzle solutions were definitely nonsensical in some ways. I didn’t realize that engaging with a puzzle people couldn’t solve would ruin their experience of the game, but definitely lesson learned!
#14. Not to be given too many red herrings.
I wanted to create a world of little toys to fiddle with, which, in the context of puzzles, are definitely red herrings. There’s a barbie doll in the game, and it doesn’t do anything regarding solving puzzles. For me I wanted to create a wistful sense of things you’d find in a toybox and give you some things to do with them:
> bend doll
You twist the doll into a few unlikely positions, as if getting ready to horrify an imaginary younger sister. Then, you are bored and bend her back to her awkwardly stiff standing pose.
But if you were trying to solve the puzzles, having a bunch of items that don’t help with that is going to be painful.
#17. To know how the game is getting on.
The Land of Breakfast and Lunch is not particularly winnable. I have cute messages when people solve puzzles, but I also have cute messages when people smell the individual antipasto items or sing or jump, so it didn’t provide much sense of progress.
I actually tease people attached to a sense of progress with my
score message, providing a random number of points in the hundreds of billions.:
You have 123,635,384 points. You’re really doing great.
So, I see the ways I broke the rules here by having puzzles, but not working to make those puzzles more comfortable for players.
The Land of Breakfast and Lunch is Cool
Even though the game didn’t sit well with people’s expectations, I really tried to set expectations. I called it an interactive diorama. I had detailed help available, (in-game, using the help/about command) and in the description I tried to let people know there was no narrative.
I wanted to make a fun and immersive little interactive puzzle-box with lots of little jokes and surprises and I think I was successful in that. I poured months of my free time into it and I think, for the right kind of person, there’s a lot to love.
It’s well tested
I actively solicited beta testers, and I really listened to them. If a beta-tester tried to do it, or suggested it be fixed, I implemented it, almost without exception. I tried to fix little bugs and ambiguities no matter how trivial. I wanted it to be a really smooth experience with a high level of verisimilitude. By the time the contest opened, I think there was only one known bug that was just too rare and too much trouble for me to fix. I worked hard at that!
It’s packed full of dumb jokes
Sweet little jokes about the world and about Interactive Fiction were at the heart of the game. I wanted people to be able to get a funny little piece of copy about almost anything they could think to try in the game.
I hate to spoil things but one example is:
All the major areas in the game are jokingly called
The Land of "Something" like
The Land of Breakfast and Lunch and between them, they have a path that’s a joke about the two “Lands” it connects. One of the worlds is called
The Land of Unlaunched Vessels, and it has a big sailing ship in it. No matter what you do in the game, it never goes anywhere. If you ask the seafarer character about it, she’ll even joke that if it launched, you’d have to change the name of the land.
Next, you take
The Sequel Path to
The Land of Unlaunched Vessels II: The Launchening, which has a big 1950s rocket, depicted in the cover art. I’m kind of lampooning dumb sequel subtitles.
The rocket, however can be launched. If you do, the title of the land does change, to
The Land of Once Launched Vessels and now the name of the path changes to
The Spiritual Sequel Path, since now it’s not a real sequel, it’s just a “spiritual sequel” which is what they call movies that can’t officially be sequels but are inspired by the original.
If you keep launching the rocket and returning, the land becomes
The Land of Twice Launched Vessels and then
The Land of Thrice Launched Vessels and finally
The Land of Thoroughly-Launched Vessels.
Sure, they’re the kind of jokes that only elicit a smile, probably barely a chuckle, but I hope that through sheer volume they keep people smiling.
I leveraged all the interactive fiction tropes I could
The famous keyword
xyzzy works of course. You can
jump, and all kinds of things people tend to try. I try to put some gentle teasing messages for all the things players of Interactive fiction try.
Someone actually took this even further with the cool Spring Thing game/experiment 77 Verbs which gives reasons to perform every common Interactive Fiction verb. I definitely didn’t go that far, if someone tried something weird during beta testing, I tried to implement it, if only to tease the player.
To some extent my obtuse puzzles were meant to poke fun and people’s single minded focus on “winning” works of Interactive Fiction. I repeatedly play with the idea of people needing to figure out every corner of a game as a condition of enjoying it. After you beat the main puzzle of a game, it hints that there’s an “even harder puzzle”, and that puzzle is ridiculous. I thought people would appreciate this a lot more than they did ;).
I did accomplish a lot of the detail I was trying for
All the food items have unique descriptions and smells, even down the individual items of antipasto. The two characters with dialog respond to
tell for a pretty good amount of topics and objects in the game. I came up with dozens of random TV station names and liquor store signs. If a word is mentioned in the description of anything it has a unique description.
I have custom messages for every object you can throw for the dog to fetch, and all kinds of surprise messages for weird actions that hardly anyone actually tried (just in case). I have some jokes that only exist in the source code, like:
[R.E.L.E.A.S.E., FIND OUT WHAT IT MEANS TO ME] The release number is 12.
To me, all these silly details are what the game is all about, but I definitely learned that you need to allow for people’s expectations about narrative and puzzle design and then also add this type of detail.
The cover art is cool
This was a solo project, but Christopher Hayes, my partner in making the illustrated interactive fiction project Ürs, made the cover. My working cover was a crop of a photo I stole off the internet of a neon sign that said “Breakfast Lunch”.
Chris was playing with a 3-D modeling program called Carrera and at my request made a 1950s Rocket with the neon Breakfast/Lunch sign on a barren landscape just like I was hoping for. I think it came out very well and teased the vibe of the game perfectly.
What I Learned About Inform 7
During this process I went from barely being able to program in Inform 7 to becoming actually decent. One of the things that makes you better at Inform 7 is having your own corpus of working examples.
Problems with the documentation
People say the Inform 7 official documentation is very good, but I have to say, I don’t love it. It can be infuriatingly obtuse in some important places, and it will give you the form of many commands without a working example, which isn’t as helpful as it could be.
Also, there will sometimes be one specific example that is misleading about the potential of a command. It shows one way to use a command, when another quick example or two would show the range of possibilities so much better. The page explaining
if, one of the most important ideas in the game, is a good example.
Some people will say that the cookbook contains examples, and that’s true, but often there is a big gap between the documentation in the cookbook. The documentation doesn’t explain the very basic case very well, and then the cookbook jumps to a much more specialized and advanced case.
I was so convinced Inform 7 needed some better documentation with clearer examples, I started working on my own attempt at Inform 7 documentation called Inform 7 At Play.
Aaron Reed’s Inform 7 Book
The best documentation for Inform 7 is Aaron Reed’s Creating Interactive Fiction with Inform 7, sadly, no longer in print, but still available as an e-book. I wish I had managed to get a copy earlier in my efforts, because Aaron explains a lot of concepts in a way that no other resource does.
It’s not English
Inform 7’s similarities to English is its greatest strength and its greatest challenge. Because English is so familiar, it’s very easy to make assumptions about Inform 7 commands that might work that aren’t in fact valid Inform 7 syntax. I can really take a long time to get used to this.
The many uses of the
understand has multiple uses in Inform 7. I think sorting these out is an extremely important concept when learning.
Understand an alias word or phrase to be a noun
This use of understanding is to let the parser understand a word, or list of words, or phrases, as alternate ways of referring to an object or person in the game.
Understand "prawn" as the fried shrimp.
Understand "tv/telly" and "idiot box" as the television.
Understand "girl" as the lady.
Understand a phrase (with a noun) to be a verb (without a noun)
It took me a long time to understand how to use this construction and all of its variations. It uses the word
understand but behind the scenes it’s doing something very, very different.
Squeezing is a verb applying to one visible thing. Understand "pinch [the noun] as squeezing. Understand "squeeze [the noun] as squeezing. Carry out squeezing: say, "You briefly compress it".
Understand a command to be a mistake
This is also a useful command that can be a simple replacement for
instead of checks.
Understand "squeeze the water" as a mistake ("Too liquidy.")
Understand "jump" as a mistake ("Too heavy.")
Source Code is great for learning Inform 7
Working source code is a great way to learn Inform 7, possibly even better than other languages. I truly wish I had kept a better log of all the source code I read and learned from, but I’d like to mention specifically how much I was inspired by Aaron Reed’s gigantic accomplishment of an interactive novel, Blue Lacuna.
Blue Lacuna is so cool
Blue Lacuna’s source text is hundreds of pages long, and could be a lesson to any game creator. Blue Lacuna creates a huge and immersive world, and rewrites or papers over some of the things that are awkward about parser-based worlds.
Blue Lacuna does some really remarkable things. For instance, it maintains a tide table, so it always knows whether it’s high or low tide. Then, in many locations there are tables of random things you can see, influenced by the tide and time of day. It’s a bit of a thing of beauty to read.
Another cool feature is that, based on how many objects you examine closely, Blue Lacuna decides whether you like puzzles or not. If it determines by a certain point in the game you like puzzles, then you get the fully fiddly version of the game with little puzzles to figure out. If the game doesn’t think you like puzzles it makes a simpler version with all the flavor, but easier-to-figure-out versions of the puzzles. I wish I had followed his lead on this one and probably would in the future.
Another is, Aaron modified travel, so it’s easier to walk around without making a physical map. He also extended Inform to gently guide people who were frustrated. He even has a helpful response if people type “What do I do?”. Now that’s customer service!
What I Learned About Interactive Fiction
I learned that people have a lot of strong ideas about what parser Interactive Fiction should behave like, and informal rules people expect you to adhere to.
If you break any of these rules, you really need to do the work to help people understand why you broke it, and gently lead them to the reality of your game. It’s hard enough to get people to deeply interact with Interactive Fiction and you never get a second chance to make a first impression.
I also learned that I love the kind of micro-writing Interactive Fiction involves and I had many pleasant afternoons exhaustively implementing a block of wood.
Talk to Me
I welcome any criticism, corrections, or questions. Please feel free to point out anything wrong, or anything I could have expanded on. I wrote this to teach and learn and that happens more smoothly when people can criticize. I’m sure I got some things wrong and would love to hear from you.
[[Rabbit,Rabbit]] is what Christopher Hayes and I call our art-team. We made only one other game but have kicked around a LOT of ideas. Our research often involves drinking a lot of beer and playing a lot of pinball.
- The Land of Breakfast and Lunch (play online)
- The Land of Breakfast and Lunch (source code)
- Ürs (an illustrated Twine game made with my IF team [[Rabbit,Rabbit]]
- Inform 7 Website
- Creating Interactive Fiction with Inform 7 by Aaron Reed
- Jim Aiken’s Inform 7 Handbook