ParserComp 2023 (belated): The Fortuna

Admittedly, ParserComp 2023 is old news by now, but I’m not quite done with it. I declared my intention to play all sixteen of its games, and I got through only seven before the judging period’s deadline. My mistake: I got a very late start, but thought I could still get through them all, because I was really thinking in terms of IFComp, which has the famous two-hour rule to encourage smaller games. ParserComp has no such rule, and this year’s entries included two more games by the author of Finn’s Big Adventure. I did consider continuing to play and write up the entries here after the deadline passed, as blogs have no deadline, but I didn’t do that.

Still, there’s one entry that I really want to comment on here, because it’s so of-the-moment. The Fortuna, a thriller set on a cruise ship, uses an LLM to generate text. Now, from where I sit, the judgment I’ve seen passed on LLMs and generative AI in general has mostly been negative: that their lack of any mooring in reality makes them unsuitable for dealing with facts, while applying them to fiction and creative works is a threatens the livelihoods of human artists (whose livelihoods are precarious enough already) while ultimately resting on their labor without fair compensation. But the author of this piece is a true believer in the liberatory potential of the AI revolution. (I thought for a while that they might be pretending, mainly because of the illustrations: these too are AI-generated, and, while the first few shown are reasonable enough that I mistook them for stock photographs, they start turning toward subtle monstrosity before long. I’ve now played enough of the game to be reassured of its sincerity, but it’s conceivable that there’s a twist that I simply haven’t had the patience to reach.)

Now, you may be thinking “LLM-generated IF? Like AI Dungeon, then?” Not quite: the only generated text in the game is NPC dialogue provoked by freeform input. It’s in some ways a natural choice, supplementing one of IF’s traditional weak spots while limiting the damage that the LLM can do to the narrative, but with the current state of the tech, the effect is deeply peculiar. It makes the dialogue unnatural in a characteristically ChatGPT-ish way. Characters don’t really converse so much as use your words as prompts for paragraph-long essays with lots of “I believe” statements:

Journalism is an incredibly important field that allows us to gather, analyze, and share information with the world. It is the perfect blend of storytelling and investigation, allowing journalists like myself to shine a light on important issues and hold those in power accountable. Journalism has the power to shape public opinion, influence policy, and promote social change. As a woman in journalism, I am particularly passionate about using my platform to advocate for women’s rights and to amplify the voices of marginalized communities. It is crucial that we have diverse perspectives and stories represented in the media, and I am determined to be a part of that movement.

The game tells you to befriend these characters to advance the plot — I could comment on how pathologically utilitarian this view of “friendship” is, but that’s really a problem endemic to IF as a whole, not this game in particular. Befriending a character basically means asking them about their pet topics repeatedly. Which they tend to circle back to regardless, often with suspiciously similar verbiage:

> ask nancy “What are you doing here?”

I’m here as a reporter for the New York Times, covering the recent women’s rights rally in the city. It’s important to give a voice to the issues that affect women and make sure their stories are heard. This rally is a powerful platform for women to come together, raise awareness, and fight for their rights. As a journalist, it’s my responsibility to report on these events and shed light on the challenges women face in our society.

> ask nancy “I mean, what are you doing on this deck in particular?”

I’m conducting research for a new article I’m working on. I’m investigating the gender wage gap in the corporate world and the impact it has on women’s rights. I believe it’s important to shed light on these issues and advocate for equality and fair treatment for women in the workplace.

> ask nancy “Why are you on the pool deck?”

I’m on the pool deck because I’m investigating the recent increase in drownings in the area. As a reporter, it’s my job to shed light on important issues and bring attention to them. It’s not enough for me to just report the facts; I want to use my platform to make a difference. I believe that by raising awareness about the importance of water safety and advocating for women’s rights, we can start to address this problem and prevent future tragedies.

For this player, at least, the end result is that I gave up on trying to treat this as anything other than Infocom-style “ASK/TELL” dialogue with unusually elaborate “I don’t understand” messages. The LLM simply doesn’t have enough knowledge about its context within the game to be able to converse about that context meaningfully. It’s been said that the ability to figure out what you do and don’t need to pay attention to, and to filter out the unimportant, is the quintessential skill in all videogames, and it’s possibly even more paramount when the text is being produced in a void of authorial intent, where failing to realize that the nonsense is nonsense has the potential to send you down infinitely-deep but ultimately empty rabbit-holes. So there’s the paradox of this game: the whole thing is a showcase for a feature that it structurally encourages you to ignore! (But I suppose the same could be said of a lot of graphical games…)

It’s got me wondering about other possibilities, though. The dialogue feels meaningless because it’s disconnected from the rest of the game — even the “befriending” mechanic seems like it’s just scanning your input for keywords and ignoring the response:

> tell david “Physics sucks and physicists are bad people. People like you are responsible for Hiroshima. I hate you. I hate you. I hate you.”

I’m sorry if you feel that way, but as a research scientist in the field of physics, my goal is to make a significant contribution to my field and to help others through my work. I understand that there have been events in history, like Hiroshima, that have used scientific discoveries in destructive ways. However, it is important to remember that science itself is not inherently good or bad – it is how we choose to use and apply it that determines the outcome. I am driven by a desire to contribute positively to the world and leave a lasting legacy, and I strive to do so with compassion and responsibility.

David Millman is now your friend!

But what if it didn’t ignore the output? What if it tried to determine whether you had befriended a character on the basis of what they said?

Well, for one thing, you’d have to retune the output considerably to make that work. In this game, I don’t think I’ve seen any character actually express camaraderie or affection (or indeed any emotion at all). But assume that’s a solved problem. Would it make for a better game? I don’t know that it would! It might be more responsive, but it would be less intentional, less about the story the author wants to tell and more about figuring out how to manipulate the LLM.

But on the other hand, game devs routinely let general-purpose libraries handle things like physics and 3D rendering, sometimes with unanticipated effects. Will it someday be possible for developers to simply give an AI actor parameters and direction and motivation, and trust it to ad-lib its lines? I suppose that’s the dream this game represents. And I’m willing to keep an open mind about it. But we’re not there yet, and it’s not at all clear that LLM are anything more than a dead end in its pursuit.

ParserComp 2023: Xenophobic Opposites, Unite!

This is basically a followup to last year’s You Won’t Get Her Back by the same author. Once again, we have a chess problem with a light fiction wrapped around it. This time it’s about checkmating a lone king using just a king and two bishops, the bishop on white and the one on black being the “xenophoboc opposites” of the title, working together to pen the enemy in. I found it fairly easy to get the hang of herding the king around, but it gets difficult at the very end, where you have to get things positioned just right to avoid stalemate.

At first glance, the whole thing seems like just a slight variation on YWGHB, but on reflection, it’s more technically impressive. I commented before on how the position in YWGHB constrained the possibilities, cutting the game short whenever you made a mistake. This game is much freer, letting you play however you want and responding reasonably. It’s not a full-on chess engine — it only has to control one king! — but it’s clear that there’s a bit more than a look-up table in there, something it surfaces in the flavor text between moves, as the game acknowledges the enemy king’s increasing confinement and the bishops tut-tut at your mistakes.

ParserComp 2023: Finn’s Big Adventure

The story here: Finngor Blackmoon, a six-year-old son of a duke in a fantasy kingdom, sneaks out of his castle room at night in pursuit of secret passages and adventure. There’s probably more to it than that, but it looks like I’m not finishing this one. It is big and it is obtuse, and I’ve gotten fairly severely stuck in the game’s third section, the forgotten catacombs, with 95 points out of a maximum of 500. The game has contextual hints, but they mainly just give you gentle nudges about what your goals are. In a lot of games, I’d praise that. Here, it just means they’re not enough.

This game was written in Adrift, which I’ve commented on before in my IFComp posts. It’s never been the most widely-used IF system, especially in today’s age, but it still has its adherents. One thing I’ve always found notable about Adrift games is that they tend to just have lot more stuff in them, more filler rooms and scenery objects, verbosely described in often pointless ways, than is typical for games written other systems. I don’t know if this is the result of a technical difference, like a UI that encourages authors to keep on adding more without asking why, or if it’s just the standards of the Adrift community. Whatever the cause, it certainly affects this game. Every single article of clothing worn by the player character is implemented. It even expects the player to look under furniture and examine walls with no motivation other than a warning in the intro that you’re going to have to do so to solve the puzzles. Kudos for making it clear what to expect.

I’d like to go on a brief tangent about the description of the player character: it feels a lot like the result of generating a D&D character. That is, you do get a certain amount of narratively-relevant characterization, but it’s nestled in a bunch of details like your height, eye and hair color, and the fact that “[y]ou are also very strong for your age and have unusually high stamina”. The eye color in particular is worth remarking on: this is something that’s impossible for Finn to actually observe without a mirror handy, so it’s kind of implicitly slipping out of his POV for that moment. Again, I blame D&D and similar systems for telling so many young writers that this is just a datum you’re supposed to include. I suppose it’s meant to help us visualize. That’s probably a fair summary of the entire game, and indeed what most Adrift games are going for: it’s all about visualization, and seeking more details to visualize.

ParserComp 2023: The Purple Pearl

The story of this one is pure adventure-gamery, just a bunch of colorful mechanical puzzles in a room as a sort of test of worthiness. Basically an escape room. The puzzles are serviceable, but they’re not what stands out about the game. What stands out is the formal experiment: This is a two-player game. That’s not a new idea, of course; multiplayer IF has been around for ages, from MUDs to Seltani. But this game does it without realtime elements, or a server, or any kind of network linking the executables. Rather, the two players are told to simultaneously play two different executables, a “Player A” game and a “Player B” game, which put them in two different puzzle rooms in the same castle. When a player does something that affects the state of the other player, the game gives them a three-digit code for the other fellow to type in to see the effects. So simple, yet I can’t recall seeing it done before — the author cites a couple of precedents in Twine and graphic adventures, but not in parser IF. Keeping the story and puzzle content fairly generic was probably a smart move, then, as it might otherwise overshadow the central gimmick.

The same post-game notes tell how the author wants there to be more two-player IF because she likes playing IF with her bestie. I don’t have such a gaming partner, and considered just running both Player A and Player B myself (making it kind of like The Knot), but that clearly wasn’t the intended experience. So I managed to rope in a coworker, using a Discord voice channel to communicate. I took Player A, he took Player B. I honestly think we still didn’t have the intended experience. The help menu (which, being proud people, we took a good long time to look at) says “You should be in communication with your partner during your play… It is expected that you will tell each other what you have and what you need.” But playing IF in solitary silence is a hard habit to break, and the fact is, you can pretty much get away with only communicating to send each other those three-digit codes. For example, the very first thing linking the two games is a pneumatic tube, with a cylinder you can use to send small objects to each other. The only things that the game lets you put in the cylinder are the things that the other player will need. So there’s no real need to ask your partner what they need you to send them; the game itself will let you know. I still don’t know much about what’s in the Player B game, but I assume it’s more escape-room nonsense.

Tangentially, it’s worth noting that escape rooms are in part a descendant of Flash room escape games, which were single-player experiences. Bringing it off the computer and into reality turned it into a social activity. So it’s kind of interesting to see it being put back onto the computer while attempting to preserve the social aspect.

ParserComp 2023: Cheree: Remembering My Murder

I should start off by documenting my prejudices: I have never been a fan of the “visual novel” format. This sometimes surprises people who know me as a big IF fan, but your typical VN UI seems to me to just add a lot of pointless friction to the act of reading. Cheree presents itself as a VN, but its UI is less offensive than most: there’s tons of available scrollback, and it provides a welcome helping of agency through freeform text input after every line of output. It does, however, still cram the text of the story into one smallish corner of the screen while the bulk is reserved for illustration — the illustration being a 3D model of an anime-esque gothic lolita (presumably obtained from the Unity Asset Store) running mood-specific idle animations in front of various stock photographs.

This girl is Charity, aka Cheree, the ghost of a talented young Victorian spiritualist medium who died in mysterious circumstances. Now she’s on the opposite end of her own schtick, communicating with you from beyond, because she somehow has spiritual link with you and you alone. Much like in certain other VNs where you’re a long-dead girl’s sole contact with the world, this eventually leads to her asking if you consider her a friend… or more than a friend? To which my immediate reaction was “Ew, no, you are a child!” It strikes me now that I’m being a little hypocritical here: Charity canonically died and stopped aging at 16, and Analogue‘s *Hyun-ae must have been around the same age when she was digitized. But I eagerly accepted *Hyun-ae’s protestations of love! I think this is mostly due to the visuals: *Hyun-ae chooses to appear to you as her idealized adult self throughout her game, while Charity, despite saying she’s 16, looks like she’s three or four years younger than that. Also, *Hyun-ae is a lot more forceful about it, declaring her affection directly instead of hesitantly probing — which reflects their differences in upbringing, really, the modern girl vs the proper Victorian lady. (Eventually, Cheree brings in a second ghost, a modern 15-year-old girl named Mel, to provide a viewpoint that Charity cannot, although Mel can’t speak to you directly and her irreverence is filtered through Charity’s narration.) But there’s one other subtler factor at work, I think: Analogue put the player in the role of a space detective. That’s clearly a character I’m playing, not a representation of myself. Cheree goes to some length to erase that distinction, largely by having Charity ask you a lot of get-to-know-you questions.

But enough about Analogue; I’m supposed to be writing about Cheree here. The backbone of the story is of course the mystery of Charity’s death, a mystery that turns out to involve the psychic investigation of the Jack the Ripper murders. (By the time Jack is mentioned, though, it’s clear that he didn’t kill Charity. The MO is all wrong.) But your only means of investigating Charity’s death is by probing her memories. She can teleport all around the globe, but her ability to interact with physical objects is severely limited, and besides, the events in question happened more than a hundred years ago. So what you wind up doing instead is: you visit a pertinent location, Charity chats about it for a bit, maybe you feed her some prompts, and then she starts to remember something. If you’re lucky, it’s a Clue, which takes the form of a cryptogram. Solving it jogs her memory and advances the plot.

Except a lot of the places you visit aren’t pertinent. Charity wants to solve her murder, but she also wants to just show you a bunch of exotic and photogenic locations and quiz you on trivia about them. In one case (that I noticed), one of these vacation spots turns out to advance the investigation anyway: going to Devil’s Tower in Wyoming can prompt some exposition about Devils, what they really are and what they can do, that becomes relevant later. I can kind of see justifying the other such scenes as supporting the Devil’s Tower, making it less out-of-place by turning it into an instance of a pattern, but there’s just too much of this stuff for it to be anything other than self-justifying. I got impatient with it pretty quickly, seeing it as just obstacles that I had to get through to get back to the interesting part, solving the mystery. I guess I’m just not the reader this work was meant for. It was meant for a reader who wants to date an underage dead Victorian girl. If the mystery is the game’s backbone, that’s the meat.

(It’s probably worth mentioning that Charity sometimes randomly walks towards the camera and through the near clipping plane, briefly showing the panties under her poofy black Victorian dress. Is this deliberate? Surely it has to be?)

Interaction in this game is conversation. You type words, it presumably does some pattern matching on them, and if it finds a match, it affects the direction of the conversation. If it doesn’t understand you, it tries to pretend it did. The author cites Starship Titanic as a precedent for this style of interaction, but similar things can be found as far back as 1980. Most of the time, though, I found it best to let Charity drive the conversation and just repeatedly enter a nonsensical command like “z” until she ran out of steam, unless she asked me a question or brought up a topic I wanted more details about. So functionally it’s topic-based dialogue, like Infocom’s ASK/TELL. But the game doesn’t give the player a lot of guidance about how to use it or what sort of input it expects, so it’s entirely possible that I missed out on a lot of content because I drifted towards ASK/TELL out of habit.

ParserComp 2023: Steal 10 Treasures to Win This Game

This is basically a fairly ordinary adventure-gamey treasure hunt in a wacky puzzle castle. The puzzles are generally fair and sometimes clever — sure, some actions result in instant death, but since you can always just undo it, death is kind of meaningless. (In fact, there’s a somewhat meta puzzle that relies on this.) The most technically impressive thing it does is rotate the entire map 180 degrees at one point, leaving the player struggling to reorient everything in their mind (unless you’ve bothered to draw a physical map, I suppose, in which case you can just rotate that too).

The one thing about it that really stands out is the interface. All commands are entered as a single keystroke, like in an early roguelike: x for examine, p for push, l for lick, arrow keys for movement (which took some getting used to, as a player accustomed to n/s/e/w), period to both take and drop objects, and so forth. If a verb needs an object, the game will fill it in with whatever’s relevant and/or available. It reminds me a bit of minimal-command-set games like Inside the Facility — it doesn’t take the minimalism quite that far, recognizing enough verbs to make a decent point-and-click adventure menu, but it has to do a similar kind of extrapolation to read the player’s intentions through a very narrow communication channel. (Fortunately, of course, the game knows what you should be attempting, even if you don’t.)

Actually, I’ve told one lie. Entering a command requires not just a single keystroke, but two: the meaningful one that indicates the command, followed by the enter key to execute it. Why? Well, the first key displays a command detailing what you’re doing on a sort of pseudo-command-line, albeit often in a chattier form than you could reasonably expect any parser to accept. At first I thought this was mere frippery, just a way to visibly imitate parser games enough to justify the game’s entry into ParserComp. But after playing for a while, I began to see it as essential as a counter to the ambiguity of the one-keystroke commands. To maintain a sense of agency, you really need to feel like you can anticipate what a command is actually going to do before doing it, and the fake command lines give you that. Sometimes I’d hit a key and only then notice that it would result in something pointless or counterproductive, at which point I could decide to not actually do it.

ParserComp 2023: Dream Fears in a nutshell

The author’s description of this one is simply “shitty game”, and it’s hard to disagree. In form, it’s basically an amateur graphics demo, with blocky people and animals with wacky shaders floating in space in front of a bunch of particle effects, bound together by a story of a dream about a “fear fairy” helping you to conquer your greatest fears (which turn out not to be thematically interesting ones, but, like, fear of spiders and stuff). There are occasional command prompts, but you’re told exactly what to type — anything else is simply unrecognized, even if it varies only in spacing or punctuation. Only one prompt offers you a choice of things to type in. The rest might as well be “click to continue” prompts, except that then it wouldn’t be allowed in ParserComp. Which would be a good thing. I’ve complained before about the sort of Twine piece that’s mostly composed of linear, noninteractive text chunks joined together by hyperlinks without player agency, but now I’ve discovered something worse. At least the pseudo-interactive Twine stuff doesn’t make you type in the text of the links.

ParserComp 2023: Late-Imperial Sky Witches Star In: Meet Cute

And right off the bat, here we have a freestyle entry that’s old-school-IF-like but doesn’t really have a parser (or even a command line): it’s written in Gruescript, Robin Johnson‘s system for hypertext games with an underlying parser-game-like world model. But while Johnson basically uses his system to provide a more modern interface to a traditional rooms-and-inventory adventure game, this piece is entirely about an interrogation, where inventory objects are chiefly topics to be asked about. In fact, it doesn’t distinguish between physical inventory and abstractions like the “her name” and “poetic bullshit” — they all go into the same inventory, and can be dropped. In a less enigmatic game, I’d assume this was a bug. Here, I can believe it’s a deliberate effect, a “this world works differently from yours” thing. For it’s clear from a dozen offhand references that there’s world-building going on just offscreen, where we can barely glimpse it. There’s something to be said for the parallelism of the player character prying into the captive’s secrets while the player effectively interrogates the game, trying every trick to loosen its lips about its setting and mechanics.

It’s very short, and doesn’t have a satisfying ending. I thought for sure that I had gotten the game into a stuck state, from which I could only access inconclusive conclusions, but the source code shows that, while there were in fact some easy-to-miss conditional effects I had failed to find, they don’t have any material effect. I kind of suspect it’s a “Uh-oh, the deadline is almost up, I’d better just slap an ending on and submit what I’ve got” job.

ParserComp 2023

ParserComp is very young, as annual events go, and still experimenting with what it wants to do and how it wants to do it. Its basic mission is to satisfy the curmudgeons who miss how the big IFComp used to be before the influx of Twine, and it’s been something of a failure in that regard so far. Maybe it’s the fact that it’s hosted on itch.io, attracting a different set of authors, who see it as just another jam with a novel constraint. But whatever the reason, ParserComp has attracted a significant number of entries that don’t fit the spirit of the thing — either they’re graphical games that just barely have parsers, or they pretend to have parsers but don’t really. (A parser is not just a command prompt!) But no one’s policing this, probably in part because it’s such a small event that they need the questionable cases to fill out the numbers.

At any rate, this year the organizers decided to deal with it by splitting the event into two categories, “classic” and “freestyle”, with a winner to be declared in each category. There are eleven “classic” and five “freestyle”, which is a small enough total that it’s pointless to try to identify trends and talk about what it means for the future of ParserComp and whether the split is a good idea or not, tempted though I am to do just that. I guess I’ll just have to play some games. I will be playing all sixteen games, in random order, classic and freestyle mixed together.