Game Design Lessons Learned Trying To Write A Cento

10 mins read
A closeup of shredded paper, in focus in the middle, blurry at the edges.

(This project is supported by a grant from the Canadian Council for the Arts.)

In 2015, a wild idea struck me:

What if I wrote a parser game using only sentences taken verbatim from other parser games? Like, a cento for text adventures?

Why? And why me? Well, I’ve found centos fascinating for years. One of my favorite authors as a French kid was Yak Rivais, an Oulipo-adjacent writer who penned a series of children’s books all about playing with language, building a whole world around puns and writing constraints. In 1979 he also wrote a short play in verse where every line was lifted from various plays from one of France’s most famous playwrights, Racine; and in 1980, a novel, “Les demoiselles d’A.” with 750 sentences each taken from a different book. Out of all the works of constrained writing (and you do not grow up as a bookworm in France without exposure to many of those), I’ve always found this one to be a mind-blowing feat, combining obsessive research and deft juxtaposition of meaning to create a whole story out of nothing.

Hang on, this intro is much too French. Let me try a different way:

Remember when on Jimmy Fallon’s show they used to show clips of Brian Williams from NBC News rapping Snoop Dogg songs? But it wasn’t really him rapping, they had just spliced together hundreds of very short clips of Williams’ news so the words, syllables, cadence, and tone/pitch sounded exactly like in the song? (Look it up on Youtube if not.) How did they do this? Isn’t it mind-blowing how someone had to look through a mountain of footage to find specific words said a specific way, and found them? Similar feat, similar curiosity, similar itch.

So then in 2015, when I saw the Vorple tooltip demo – sprinkle a little JavaScript in your parser game and hovering on a sentence can show you footnotes, or even the source for a quoted sentence – it just clicked: I could do a cento, then people could hover over and find out where each sentence comes from. And there were a number of tools to extract sentences from a game file. And I had just done a university project that involved finding sentences in a large corpus of text. The wild idea was here and it wasn’t going to leave me.

Now, 2015 wasn’t the right time for it, but I built a demo to prove out the concept, before moving on. Fast forward to 2022, and I was ready to apply for a grant from the Canadian Arts Council to explore the idea, which I obtained, thus kickstarting the journey in earnest. I hope the project comes out in 2025; but in the meantime, I have found the constraint to have been very interesting and stimulating to work with. As I take a little break in between phases of the project, I figured there were a few lessons learned that could be interesting to other folks who enjoy reading and thinking about IF and its craft. Let’s get started!

Diving into our games

Writing my game is done entirely by pasting the right sentence at the right place to make the text convey what you want to convey. But how do you find the “right sentence” among a sea of games? Perhaps surprisingly, this is easier on a technical level than you might think. There are tools to extract most of the text from a text adventure of a specific format (Inform, TADS, Quill, PAWS, for instance), which worked beautifully; these four engines have been used by thousands of games over the last 50 years, and I was able to extract millions of sentences from over 5000 games. That’s the beauty of stable formats!

This gives the raw matter in a queryable format. I originally used Unix queries, but for convenience have asked a programmer to build a search engine1 with a few nice functionalities, such as IFDB tagging and the ability to further filter the results. This tool is deployed on my server, drawing from the 5,000 files each containing text from publicly-available games. This means I am able to run fun experiments too – have you ever wondered how many IF games reference Margaret Thatcher? (The answer is 10.) What is the only Infocom game featuring the sentence “that’s the way the cookie crumbles”? (“Nord and Bert”.) Or whether you can find a game with cassowaries in it? (You cannot, but there is a game with moas, their ancestor, in it.)

A sidebar has icons for Collapse, New search, and Last search results (97.3 seconds). The main pane contains a list, currently showing sentences #35 to #49 containing "rosebush." Each sentence has a source file and IFDB and Copy buttons.<br><br>From ab_dragon.z5:<br>You can't put that on the rosebush.<br>Their appearance seems to startle the dragons, which, as one, take flight from the rosebush and vanish away into the sky in a beautiful cascade of colours.<br>your hear voices in the front garden, and Martha and her ancient friends appear around the corner to be met with the sight of you, standing next to the utterly destroyed rosebush.<br><br>From zombie.gam: Long ago, someone has planted a rosebush, which has grown willy-nilly into a gnarled, hookthorned scrub bush.<br><br>From halloween.z5: You notice a small rosebush at the base of the stone.<br><br>From source.txt: garden/riot/rose/roses/rosebush/crysanthemum/mum/mums/flower/flowers Nice, ain't they?<br><br>From pythoZcode.z8: (repeated twice) I remember glorious chases through the gardens -- those poor rosebushes -- and whole afternoons spent on hide-and-seek.<br><br>From So, You've Never Played a Text.gblorb: In some places, the weeds and the rosebushes are trying to choke each other out.<br><br>From Mite.z5:<br>(repeated twice) The heavy mist prevents you from seeing beyond the pond and a tall rosebush blocks the view on the other side.<br>(repeated three times) The view from the other side of the tulip is dominated by an overgrown rosebush.<br>A tall rosebush blocks most of the view to the west.

An example of the output of my tool, giving me a list of sentences containing “rosebush” and the game in which the sentence appears.

As an aside, but potentially an important one: looking through the corpus, what struck me was the number of times the quote I wanted was taken from a pornographic game. This whole scene is mostly absent from discussions or considerations in mainstream IF forums — very little has been written in terms of retrospectives, interviews, game design, theory, etc. on that front. I myself had no knowledge of it, barring a few examples (such as “Flexible Survival”, the largest Inform game ever written2). In reality, the English-speaking scene for pornographic text adventures was extremely vibrant in the 2000s, with dozens of very long parser games and their own comps and awards; yet this is poorly documented on IFWiki or IFDB, with lots of games and comps missing, and old pages only accessible through the Wayback Machine. In my opinion, this scene is due for some attention!

Familiar vistas

But just because I can search easily across thousands of games, doesn’t mean I’ll find what I want! My game cannot be set in the Kingdom of Wraz, because no game ever has had “wraz” in its text. It cannot have a character named Connie, as this name only appears in 7 sentences (including 2 about her grave and 1 in the help menu of a pornographic game). I just cannot start writing my game, then find sentences that could work; the availability of sentences related to a situation or a setting is something that needs to be taken into account as early as possible.

I could say that I need to check my corpus of sentences every time I’m trying to think of something; but there are obvious issues with this approach (it would be very granular, start-and-stop, and could lead to a disjointed experience, exquisite-corpse style). Instead, I took the approach of asking myself this question: what are the settings and situations for which I could reasonably trust that the universe has got my back? If you ask the question like this, the answer is obvious: I can have whatever cave I want; there’s hundreds of “my crappy apartment”s, and dozens of deceased uncles with mansions full of devilish riddles.

Aerial photo of several giant mansions on smallish square lots.
So many eccentric uncles… so little time…

Now, the risk becomes different: the game could become easier to write, but it could feel very derivative and samey. Are players still excited about caves 50 years later? This is a valid concern, except look at the project: this is a giant “spot the sentence from that game you know” puzzle, specifically built on 50 years of text adventures. I’m not saying that the game should not be made interesting and fresh in its design and story, and employ parody and cheekiness (and it will); but this is a game built on the heritage of 5000+ games, embodying traditions, genres, tropes, discourses, bad habits, inspiration, and parodies of each other. The text adventure scene over the last few decades has been built by playing and discussing each other’s games and proposing new spins on old things, and this game is no different!

Show, don’t tell

That being said, puzzles were a very big challenge. The easy way to do this kind of project is to copy-paste whole sequences from other games — “IFDB Spelunking” style, or “Museum of Mechanics: Lockpicking”. However, I did not want to take this approach: it’s meant to be a cento, where every consecutive sentence is taken from a different game, and that’s the whole point, the whole effect, the “wow!” factor, creating new meaning from splicing together sentences that weren’t meant to be read together. So what does that leave us with? Taking the approach of relying on tropes for puzzles, like for the settings, might be feasible: if you think about it, I might be able to cobble together a Towers of Hanoi puzzle out of the dozens of adventure games that have featured it. But there’s not that many of these near-identical puzzles, really; and having to go through the motions of puzzles you’ve solved dozens of times before is likely to lose the player’s interest.

A long, high-ceilinged videogame wooden hall, dimly lit. Down each side, small spotlights illuminate large green signs where the player can interact with each exhibit.
Museum of Mechanics: Lockpicking” highlights lockpicking mechanics from several games

But how do you create entirely new puzzles, riddles, mechanisms, situations, and hints, out of existing sentences? I struggled for quite some time on that question, before realizing the struggle came from my own limitations in approach as a game designer. See, I’m a point-and-click kid; a “Filaments” scholar; the author of the textdumpy “Life On Mars?” My games so far have always had lots of descriptions and lots of cutscenes;3 I always made sure to give lots of indications of how the pieces relate to each other, my games were always Zarfian Polite, and the crosswords were made to service the narrative.

But there is another approach, of course: one based much more on the implicit, the mysterious, the “spooky action at a distance”. The one where the description changes without you noticing (“Shade”). The one where playing the piano does nothing, except the bathtub is now full (“Finding Martin”). From a player’s perspective, it is maybe a bit more difficult, murkier; but for a cento, it is amazing, as it allows you to decouple cause and consequences. It is much easier to find self-contained sentences (“You turn the switch on.” then later “The motor is humming along.”) than to find a sentence that specifically explains that as soon as you turn the switch on you hear the motor in the other room cough and start. Knowing myself, I’ll still want to sprinkle some hints and indications whenever possible, just to make sure players aren’t getting too frustrated; but it is a much more productive approach to puzzle design when sentences are constrained.

This allowed me to design the “meat” of the game (act 3, with the most puzzles) very effectively. I had idly considered making a magic system, which is a classic of IF but doesn’t suit itself well with the cento constraint: do I use FIZMO like everyone else, and make the game extremely Zorkian? Do I use another word — but this would be too constrained, as I wouldn’t find many sentences and they would likely spell out both cause and effect which would be too rigid? Another thing on my to-do list was “systematic mechanics”, i.e. the kind of games where you are given a few very specific skills/tools, and their effects are applied to any object you decide to try them on. This could be a bit easier from a cento perspective (“With an almighty swing you raise the hammer.” from “An Act of Misdirection”, then the consequence “The cornhusk doll crumbles into a pile of dust.” from “Harrington House”), with the challenge being explaining (or not) what an object is supposed to do.

In the end, I found a rather elegant4 solution, that of the invisibility cape. Imagine how you would implement such a cape: sure, you might have a sentence saying “As you don your cape, your body is no longer visible!” if you really want to, but then for the rest of the game your invisibility will likely be just demonstrated (characters pick their nose because they think nobody can see them) instead of stated (nobody would write “Since you are invisible, Peter doesn’t know you are here, and you see him pick his nose.”). That worked beautifully for my purposes: acquire a cape, don it (without necessarily knowing what the effect is), then some of my descriptions will vary enough that you can tell something is obviously different about the world. Once you have figured out what the cape does, they will be useful for a few puzzles — though most puzzles in this section will be able to be solved in numerous ways. I have not implemented the puzzles yet, however the effects are common and obvious enough that I am certain I can eventually figure out what combination of sentences can demonstrate the effect.

Future challenges

At this point, I’m reasonably confident that I will finish this game and release it, since I seem to have found interesting solutions to a few of the big thorny challenges. (Will it be in 2025 though? Fingers crossed is all I’ll say.)

That being said, some challenges remain. Just because I can finish the game, doesn’t mean that it will be a good game, unfortunately! And with rewriting taking potentially much longer than in traditional circumstances, deeper issues that beta testers surface might require a lot of work to address. My main worry is pacing: will the game hold the player’s interest? Will the game be too long? Will the gimmick become tiresome after the first hour of play, or will there still be some curiosity left to look at the text and specific sentence choices that I made? (I intend to sprinkle some interesting or striking passages in every act, but who will notice or want to investigate?) I am relying on my game design chops to make sure the game is interesting enough to play, but nobody’s perfect.

And this ties into the game’s audience, too. Who is this game for? Who is going to enjoy it? Who is going to love it? Young players, or the people who have been there for the whole 50 years? Experimentalists? Parser die-hards? NarraScope goers?

In the end, maybe the right answer is that this game is for me. Don’t get me wrong: I would be thrilled to see the game find a broad audience; and I sure want to document all the interesting things that I find in case someone finds them useful. But this does not fit into the “do small experimental projects, then work on bigger, successful crowd-pleasers to demonstrate quality to the industry” that has sometimes been trotted out as an answer to “how to make money/a career out of IF”. I’ve done small experimental projects; I’ve done “neatly-scoped, IFComp long, ironed out with feedback and several rounds of beta-tests”. This work is about jumping the shark, about the impossible constraint that enraptured my 10-year old mind, about doing too much research and cramming too much in, just to try to make a grandiose Frankenstein monster-like game that embodies all the thousands of others that make our favorite artform, just because it’s fun.

I cannot wait for this game to be born, and I hope you enjoy it when it does!

Footnotes

  1. The ability to search directly in the text of most IF games published in the last 50 years strikes me as potentially very interesting academically; please reach out if such a tool would be of interest to you! ↩︎
  2. Which seemingly uses every word in the English language, given how often it shows up in the results of my queries. ↩︎
  3. “Press a key to see one more paragraph” was the house style of French IF as recently as a few years ago, as noted by bemused anglophone reviewers. ↩︎
  4. Though not entirely surprising for the die-hards who have played my IntroComp entry “Gossip.” ↩︎

Hugo Labrande

Hugo Labrande has been writing parser IF for almost 20 years, mostly in the French scene, where he also authored many articles on IF theory. His latest project was “Tristam Island”, a retro-inspired parser game released on 30+ platforms, now free. His penchant for the obscure and the experimental means he knows too much about French text adventures before 1983; thinks the Tiger 2-XL is due for a rediscovery; still programs in Inform 6; and wrote a parser game in Twine for a live Twitch show.