Visualizing Procgen Text, Part Two

In a previous post (now several months ago — sorry!) I wrote about visualization strategies for looking at procedurally generated text from The Mary Jane of Tomorrow and determining whether the procedural generation was being used to best effect.

There, I proposed looking at salience (how many aspects of the world model are reflected by this text?), variety (how many options are there to fill this particular slot?) and distribution of varying sections (which parts of a sentence are being looked up elsewhere?)

It’s probably worth having a look back at that post for context if you’re interested in this one, because there’s quite a lot of explanation there which I won’t try to duplicate here. But I’ve taken many of the examples from that post and run them through a Processing script that does the following things:

Underline text that has been expanded from a grammar token.

Underlining is not the prettiest thing, but the intent here is to expose the template-screen-shot-2016-09-11-at-4-45-52-pmstructure of the text. The phrase “diced spam pie” is the result of expanding four layers of grammar tokens; in the last iteration, the Diced Spam is generated by one token that generates meat types, and the Pie by another token that generates types of dish.

This method also draws attention to cases where the chunks of composition are too large or are inconsistent in size, as in the case of the generated limericks for this game:


Though various factors (limerick topic, chosen rhyme scheme) have to be considered in selecting each line, the lines themselves don’t have room for a great deal of variation, and are likely to seem conspicuously same-y after a fairly short period of time. The first line of text locks in the choice of surrounding rhyme, which is part of why the later lines have to operate within a much smaller possibility space.

screen-shot-2016-09-11-at-4-45-36-pmIncrease the font size of text if it is more salient. Here the words “canard” and “braised” appear only because we’re matching a number of different tags in the world model: the character is able to cook, and she’s acquainted with French. By contrast, the phrase “this week” is randomized and does not depend on any world model features in order to appear, so even though there are some variants that could have been slotted in, the particular choice of text is not especially a better fit than another other piece of text.

This particular example came out pretty ugly and looks like bad web-ad text even if you don’t read the actual content. I think that’s not coincidental.

screen-shot-2016-09-11-at-4-45-59-pmColor the font to reflect how much variation was possible. Specifically, what this does is increase the red component of a piece of text to maximum; then the green component; and then the blue component. The input is the log of the number of possible variant texts that were available to be slotted into that position.

This was the trickiest rule to get to where I wanted it. I wanted to suggest that both very high-variance and very low-variance phrases were less juicy than phrases with a moderate number of plausible substitutions. That meant picking a scheme in which low-variance phrases would be very dark red or black; the desirable medium-variance phrases are brighter red or orange; and high-variance phrases turn grey or white.

Here “wordless” and “lusty” are adjectives chosen randomly from a huge adjective list, with no tags connecting them to the model world. As a result, even though there are a lot of possibilities, they’re likely not to resonate much with the reader; they’ll feel obviously just random after a little while. (In the same way, in the Braised Butterflied Canard example above, the word “seraphic” is highly randomized.)

Finally, here’s the visualization result I got for the piece of generated text I liked best in that initial analysis:


We see that this text is more uniform in size and color than most of the others, that the whole thing has a fair degree of salience, and that special substitution words occur about as often as stressed words might in a poem.


There’s another evaluative criterion we don’t get from this strategy, namely the ability to visualize the whole expansion space implicit in a single grammar token.

Continue reading

Aviary Attorney (Sketchy Logic)

Screen Shot 2016-09-07 at 10.22.24 PM.png

Aviary Attorney is a game in which you guide some French lawyers, who happen to be birds, through evidence collection and trial scenes in which they pick holes in the opposing testimony. It owes a great deal to Phoenix Wright: Ace Attorney, emulating its gameplay and in-court responses. People also compare with Hatoful Boyfriend, because both are visual novels with birds who act like humans, but Aviary Attorney owes less of a debt there: the gameplay and style are really rather different.

The art, meanwhile, is lifted from the public domain work of French caricaturist J.J. Grandville, and the game’s narrative takes place against the rising action of the revolutionary year 1848. There are also many current jokes and references: the evidence binder where you store pictures of people you’ve met is your “Face Book,” for instance.

The joke could have been too weak to sustain play through the whole game. But I wound up liking it a lot, and not just because the game only needed a few hours to play through. Sketchy Logic do a good job with the light animation, the soundtrack, the dialogue writing: moment to moment, production values are consistently solid.

More to the point, though, this is not just a grab-bag of goofy cases. The whole piece is addressing themes of justice, rationality, the use of force, and the relationship between the poor and the wealthy. 1848 Paris, as portrayed here, is a place with huge disparities in wealth and class; a place where judges preferentially protect the well-to-do, and where police may arbitrarily shoot the poor. In one of the endings, you are literally assembling evidence to work out whether the victim of a (supposed) police shooting was hit in the front or the back, and under what circumstances.

Continue reading

Lethophobia (Olivia Wood and Jess Mersky)

Screen Shot 2016-09-05 at 5.32.35 PM.png

StoryNexus was meant to be revenue stream for Failbetter Games: the tool available for anyone to use, with an option to publish, monetize and split the profits between author and studio. The existence of Fallen London was one of the selling points — players had been asking for years to be allowed to make their own Fallen-London-alike. The system was also one of the few IF tools to offer a quality-based narrative out of the box, where new pieces of story become available as the player’s stats change.

But quality-based narrative is not the easiest kind of interactive narrative to bootstrap. You tend to need a lot of content before the results start feeling like a game. Moreover, a StoryNexus game specifically needs a stock of images as well as a stock of words. SN came with a range of generic icons, but that could just mean that many SN worlds felt rather samey unless the author had put in the extra customization to draw (or have someone else draw) customized card images.

StoryNexus never really took off in the way Failbetter hoped, and the monetization option wasn’t available for long. Officially, StoryNexus is no longer supported. But a small library of sizable or complete SN worlds were written, including Winterstrike, Samsara, Below, Zero Summer, Final Girl, and now Lethophobia. A lot of SN games are loosely structured and have a lot of small anecdotal interactions — sticking with the idea that they’re story worlds, or settings. Lethophobia (like Final Girl) is in a minority: it’s telling one story, and there’s a clear trajectory through that tale. There is also, mercifully, no action limit worth worrying about, so you can play as continuously as you wish without any enforced delays.

Lethophobia is the story of a haunting. The house in question is a very particular one, lovingly described and appealing to every sense. The discoveries you’re assembling about the past are rather looser and less determined: you meet a character, but is he an old friend or your ex-lover? Is this female character your sister, or is she a former piano teacher?

From early on the game communicates that it’s not so much about exactly what happened, but rather about how you orient yourself to those memories, about the process of discovery and reconciliation to trauma.

Lethophobia is also the closest thing to a classic IF puzzle game I’ve seen in StoryNexus form.

Continue reading

September Mail

Hello Emily,

You don’t know me. I read your blog and I actively use Adrift to experiment with make IF games and have tinkered with Twine also.  I know you are super busy so i will get right down to the point, least i start rambling about IF.  

In a brief summary this is about an idea (that may have already been once given to the IF community) of setting up a crowd funding for a prize pool for a IF Creator/Engine competition.

Some might say the best IF creator out there is Inform, i did try it in the past but couldn’t get into it, i tried Quest and that was confusing to use after getting used to using Adrift. I have been tinkering with Adrift on and off for about six years and it has come along way, but falls short in some areas due to only one Dev who adds new features and fixes bugs in his spare time. Adrift does have the ability to use expressions that are close to programming and it is over the last year or so i have learned quite a bit with expressions. I think Adrift is often overlooked (the ability it has with being able to create custom properties for locations, objects and characters. And the ability to create modules to add to your library or share. It still needs lots of polishing).  

I was thinking to myself today, why hasn’t there been a kickstarter (add in other crowd funding options here) on creating the ultimate IF Creator/Engine (that could handle CYOA style games, point and click, IF or all of the above in one game). But then there would be many opinions of what that might be or look like and how it would be internally structured, visually look etc no one would never agree on things. And of course the parser. So what about the next best option;  crowd fund a prize pool for 1st, 2nd and 3rd place for an Interactive Fiction Creator/Engine competition with defined criteria for judging, such as UI, Parser, multimedia support etc you get the idea. I do not know how big the funding would get to make a decent  prize pool worthy to garner attention from programmers around the world. Obviously the bigger the prize pool the more attention and interest in it. I am not a programmer so i do not know what would be a realistic deadline 12 months? 15 Months? for at least a working prototype. Programmers outside the IF world would be at a disadvantage, but could catch up quick reading a number of articles written about IF its weaknesses and strengths with what is currently available to us as tools as well as free content that can be played to see the best of the current crop of IF games in the last ten years. Maybe fresh eyes (programmers outside of the IF community) on the scene might help?

This approach could see some really ingenious ideas that may not win the prize but spark some new ideas to improve on or the winner might have something few didn’t think of that he/she goes on to finish and releases either for free or profit. People tend to be more interested in being in control of their own project and are motivated to be ambitious or think outside the box more this way. I am sure there would be many failed or unfinished entries, but hopefully there might be a small number of really well implemented ideas… 

Continue reading

Nothing for Dinner (Nicolas Szilas et al, IDtension)


“Nothing for Dinner” is an interactive drama released last fall by Nicolas Szilas and collaborators, using a tool called IDtension. Szilas works out of the TECFA Lab at the University of Geneva. If you read my writeup on the book Interactive Digital Narrative, you’ll have seen a mention of Szilas’ article there. Though it would have been out of place in the book overview, I wanted to come back and look more closely at what “Nothing for Dinner” accomplishes.

The premise of the story is that you’re a young man whose father has suffered a stroke that affects his behavior and memory. You need to get something ready for dinner, but your father keeps getting in the way, and other events spontaneously happen — a school friend coming over to get back a textbook she left at your house, your sister’s DVD player breaking, a phone call from your mother with extra chores — to add blocks to your progress.

The system is clearly quite dynamic: I played three times, and the sequence of events was very different each time, with some blockers appearing only in one of the playthroughs. Also, the conversation menus are dynamically generated to let you try various approaches to any of the currently-active problems, or to give emotional feedback to the other characters about what they’ve just done.


If you try to cook dinner alone, your father resentfully complains that you never want to do anything with him; if you try to involve him, he may get annoyed and refuse to help you; if you let him cook by himself, he’ll break things and make a mess. And whenever your father gets upset, your grandmother comes over to chide you for not looking after him.

It’s a very effective mechanism for making me rapidly resent my entire family for offloading all the emotional and practical labor onto me: like a time management game, but with more passive-aggressive commentary, and less opportunity to get anything done.

Continue reading