Category Archives: text adventures

Development Diary: “The Little Match Girl”

It looks like I was writing this for an audience, so I’ll let it introduce itself.

HEY: Don’t read this if you haven’t played the game yet. Come on.

Friday, December 27, 2019

I saw this YouTube video where this guy had made a mechanical retelling of The Little Match Girl. https://www.youtube.com/watch?v=lzrFVUBpNkY He described it as “Women selling matches on Christmas Eve” because he doesn’t really speak English and he possibly was misremembering the story. But I didn’t know the story at all, so I thought maybe it was a traditional Japanese story. Trying to figure out the inspiration for this Lego narrative automaton, I actually looked at The Little Match Girl for the first time, and noticed what a bizarre story it is. A synopsis if you need it:

A little girl is forced to sell matches in the street on a freezing New Year’s Eve. She burns the matches to keep warm, and in their light she sees visions of Christmas happiness (including a roast goose that climbs off a table and starts walking toward her). Then she has a vision of her grandmother, who carries her up to Heaven. In the morning, people find the girl’s corpse and lament her death, but the narrator indicates that their grief is misplaced don’t know what beautiful visions she saw and how happy she is in Heaven.

I guess Hans Christian Andersen was thinking “Man, it’s not such a bad thing when children freeze to death in the street… but what’s the best way to convince my readers that this is true???”

The derangedness of the story made me want to do my own deranged version, and its structure suggested to me a game structure where burning matches allows the player character to visit different fantasy worlds. This tied into a puzzle I had been playing through in Luigi’s Mansion 3, where Luigi has to carry objects between film sets to solve a chain of puzzles (a torch from a medieval movie burns down a spiderweb in an unrelated basement set). So, a trading sequence hopping between different near-death experiences.

(Wikipedia mentioned that some version of A Christmas Carol has Scrooge be mean and then nice to a Little Match Girl, so I decided to steal that.)

I thought, what are the stupidest places the little match girl could go? Definitely Atlantis. I don’t know why I thought of the tunnels beneath Paris, but I ended up doing way too much research on where these sewers used to be and what this street’s name used to be and from where on the Seine you should be able to see the Eiffel Tower. I never got a firm idea of what year it is in the Paris part of the game though.

A quiet cabin in Japan seemed like a nice contrast to these two more bombastic ideas. Then I wanted a fourth location that would contrast with those three, and I realized it should be dangerously hot (to match the deadly cold of the “real world”). So, the American southwest.

I wanted the four locations to be completely incongruous to each other, and I think conceptually they are, but as I started coming up with the trading sequence, I realized that the connective tissue of this long puzzle would force the four worlds to feel much more cohesive than I intended. Well, what can you do?

Anyway, Friday night I had the basic locations and their inhabitants and some of the trading sequence figured out. I decided that if I could get the design outline finished on Saturday, I’d have a game scoped for writing in three days.

Saturday, December 28, 2019

I got the rest of the trading sequence figured out. I started designing the rooms in my notebook: Sketchy little maps of each region, and then a few lines for each room saying what is in that room.

When those were all done, I opened up Inform, I wrote the rooms in, and then I started outfitting them with objects and descriptions. I did the Cuervo rooms first, because I knew the walk through the desert would be easy. Then I did Atlantis. I started in on Paris before I went to bed.

I added all the people, but none of their behavior. I guess I did write the scene where you get the pirate statue from Nash, because it’s part of the basic looking around part of the player experience. The idea of a trashy nude pirate statue came from a Twitter post of a Reddit post about somebody’s house that amounted to “hey, isn’t it messed up that this guy has a trashy nude pirate statue?”

The vampire character was initially conceived as a man, but became a woman when I was trying to come up with a suitably weird French name and remembered the precieuses from Cyrano de Bergerac. This ends up making femininity and womanhood a bigger focus of the game than I ever intended: The little match girl confronts various women and their various needs (and men whose needs focus on the women in their lives), but she’s a little girl who shouldn’t really have to think about any of this stuff. It would be cruel if we could somehow take any of this seriously.

I like how the final four transactions in the game—Nash’s milk, Kazue’s headache relief, Poseidon’s quest for beauty, and Urimedonte’s death—form a kind of hierarchy of needs, from nourishment to comfort to philosophy to oblivion.

At the end of Saturday, the game was just over 5,000 words long.

Sunday, December 29, 2019

I implemented the basics of Paris and Ogureyama. I started in on the critical path of the trading sequence. I got up to where you get the poem from Yasushi, and then I stopped: I didn’t know how to write the scene where you give the poem to Poseidon.

I added some basic verb response stuff, I added structure for giving items to the wrong people. I did a little bit of the structure for the transition from the “real world” to the “visions,” but I’m a bit intimidated by that right now. I have basically nothing for the “real world” section.

At the end of Sunday, the game is just over 10,000 words long.

Tomorrow I need to finish the trading sequence. Do the mechanics for burning matches to enter visions and waking up to exit them. Write the conversation stuff for all the NPCs. Add the patreoneer names to the busts in Atlantis.

Monday, December 30, 2019

In the morning I did the stuff for the “frame story,” including the text quoted from the original story, the mechanics for burning matches and waking up to enter/exit visions, and some small default response adjustments. I also did all the “give X to NPC” responses. good grief.

The game is 14072 words at noon. I wonder if it can break 20k by tonight! Probably not!

[Editor’s note: The final version of the game comes out to about 18,000 words.]

What I need to do with the rest of the day:

X put the Patreoneers in the busts in the statue gallery.
X write trading Poseidon the poem for the trident.
X write killing Urimedonte with the trident to get violin and cat.
X text for TALK TO each of the NPCs.
X a CRY action
– the text of the poem when Nash translates it.
X The ending of the game (waking up with the violin, playing the violin)

That should be everything!

OH ALSO: It is critical that the game hints you to wake up! You have to know that you can wake up!

5:45 PM: I wrote the ending and it made me laugh so hard. I am so pleased with myself.

All that’s left is to write the poem as Nash translates it and then I can try to get someone to beta test it!

WELL, I copied a Neruda poem and I compiled the dang game. I sent it to Zach, who played through it pretty fast, and I sent it to Yerrik, who took two hours to get through it. I fixed the issues they reported and I ran a new version and I sent it to Emily.

Tuesday, December 31, 2019

Emily only had a few notes so I fixed that and then I got the game ready to send out.

I wanted the “PARIS, FRANCE” text to be really big. It didn’t work in Lectrote for some reason so I had to compile separately for the Quixe version and the bare gblorb.

I am frustrated because none of the testers seemed to find the drastic changes to the original story particularly funny. BUT I wrote the game in three days so it doesn’t have to be extra super good. And I think it’s hilarious.

BONUS: “PREWRITING”

Along with the development diary, my files include “prewriting.txt,” which is just a little brainstorming document, and I guess I’ll just paste it here:

The Little Match Girl
by Hans Christian Andersen

  • you have four matches
  • you are supposed to sell the matches
  • but if you don’t burn them you’ll die
  • burning a match makes you go to a vision
  • take items between visions to solve puzzle
  • the end

ATLANTIS
meet the little mermaid
JAPANESE VILLAGE
buddhist bells, 108
CATACOMBS
beneath paris? vampire?
dark
GAS STATION

bring source of fire, because matches don’t travel with you

little doll
shells
torch
book in foreign language
kitten
mask
blanket
dagger
flint
jewel glitters, light source
bean
cow
pitchfork/trident
beaded necklace
bottle of glue
bottle of milk

light source for cave
hook for reaching something
knife for cutting something

finally get ukulele and play on street, get adopted by Ebenezer Scrooge

see paris -> see atlantis -> see ogureyama -> see cuervo ->

get bottle -> fill bottle with milk from cow -> give milk to gas station attendant
Neptune’s trident -> slay vampire

Uncovered! CROCODRACULA: THE BEGINNING

You can play this game right now! But you should probably find out where it came from first:

A few months ago, I came into the possession of a copy of a very old, very rare text adventure game. I happened to be poking around in—Well, maybe I should start from further back.

THE STORY SO FAR

A few years ago, I came into the possession of a copy of a very old, very rare text adventure game titled Crocodracula: What Happened to Calvin. Feeling an obligation toward the preservation of an oft-overlooked art form, I—

—Actually, I should go back even further.

Continue reading

The Imitable Process of Ryan Veeder: Additional Autosaving Techniques for Inform 7

There are a few more things I should say about implementing autosaving in Inform 7. In the previous posts I neglected to address how these techniques interact with the default verbs UNDO, SAVE, and RESTORE, which was a bit of an oversight. I’ll get around to that now, and then I’ll show you a couple of other neat things you can do with autosaving.

Continue reading

The Imitable Process of Ryan Veeder: Advanced Autosaving in Inform 7

In a previous post I explicated the basic principles of how to automatically track and restore the player’s progress in an Inform 7 game. What it really comes down to is this:

  • Represent the parameters of your game’s progression in a table.
  • Whenever the player does something worth autosaving, record it in that table, and then write that table to an external file.
  • When play begins, read that external file and use those data to reconstruct the player’s progress.

I said we’d get into some ways of representing progress in a nonlinear game. The first thing that comes to mind is my game The Lurking Horror II: The Lurkening, in which the player character learns various spells that let you manipulate the environment and solve puzzles. Learning certain spells requires you to learn certain other spells first, but the “tech tree” has enough branches that we can’t predict in what order the player will discover everything.

Continue reading

The Imitable Process of Ryan Veeder: Basic Autosaving in Inform 7

Ryan Veeder’s Authentic Fly Fishing autosaves your progress! This is kind of noteworthy, at least in the realm of text adventures. I don’t think Ryan Veeder’s Authentic Fly Fishing is the first text adventure to autosave your progress, but it might be the first game to do it in Inform 7.

Why bother with this feature for this particular game? Well, it was kind of necessary to make another feature work: Ryan Veeder’s Authentic Fly Fishing also uses the real-world date for certain “real-time” elements. The game can’t really keep track of these elements (say, counting how many different days you’ve played) if players are able to “change history” by loading outdated save files.

But there’s another reason, one which may more likely be applicable to your own personal design interests: Ryan Veeder’s Authentic Fly Fishing is supposed to be an extremely casual experience. There is no urgency for the player to reach the ending. (There is no ending.) It’s not supposed to be a battle of wits between the author and the player. You’re meant to visit the world of Ryan Veeder’s Authentic Fly Fishing for however long you want, whenever you feel like it, and maybe you’ll make some “progress” by finding something new, or maybe you won’t. It’s supposed to be very chill.

Requiring players to manually save their state at the end of a play session and then restore their state the next time they show up (being careful not to restore an old file and lose progress!) would detract from the casual experience I wanted to create. So it was doubly important for me to take the burden of progress management off the players’ shoulders.

Maybe you’d like to do something similar with your own Inform 7 project. Here’s how you can do that!

Continue reading

Cragne Manor!

It took longer than we were expecting but it’s done!

CRAGNE MANOR, written by Adam Whybray, Adri, Andrew Plotkin, Andy Holloway, Austin Auclair, Baldur Brückner, Ben Collins-Sussman, Bill Maya, Brian Rushton, Buster Hudson, Caleb Wilson, Carl Muckenhoupt, Chandler Groover, Chris Jones, Christopher Conley, Damon L. Wakes, Daniel Ravipinto, Daniel Stelzer, David Jose, David Petrocco, David Sturgis, Drew Mochak, Edward B, Emily Short, Erica Newman, Feneric, Finn Rosenloev, Gary Butterfield, Gavin Inglis, Greg Frost, Hanon Ondricek, Harkness Munt, Harrison Gerard, Ian Holmes, Ivan Roth, Jack Welch, Jacqueline Ashwell, James Eagle, Jason Dyer, Jason Lautzenheiser, Jason Love, Jenni Polodna, Jeremy Freese, Joey Jones, JP, Justin de Vesine, Justin Melvin, Katherine Morayati, Kenneth Pedersen, Lane Puetz, Llew Mason, Lucian Smith, Marco Innocenti, Marius Müller, Mark Britton, Mark Sample, Marshal Tenner Winter, Matt Schneider, Matt Weiner, Matthew Korson, Michael Fessler, Michael Gentry, Michael Hilborn, Michael Lin, Mike Spivey, Molly Ying, Monique Padelis, Naomi Hinchen, Nate Edwards, Petter Sjölund, Q Pheevr, Rachel Spitler, Reed Lockwood, Reina Adair, Riff Conner, Roberto Colnaghi, Rowan Lipkovits, Ryan Veeder, Sam Kabo Ashwell, Scott Hammack, Sean M. Shore, Wade Clarke, Zach Hodgens, and Zack Johnson, is now available for you to play and enjoy/goggle at in abject horror. It is straight up bonkers.

“Organizing this project was quite the crazy trip for Jenni and me” is how I’d describe the experience if I entered some sort of Olympic Understatement Championship. Corralling all these authors and their many, many, many many wildly different rooms was an extremely nutbars undertaking. Many of the individual rooms, as you shall see, are fairly nutbars considered on their own. Taken as a whole, with everybody’s writing styles and puzzle implementations and ideas of what the weather in the game should be bouncing into each other, it’s—it’s—

I mean, just check out the game.

If you’re in the minority of humans who didn’t work on this game and it brings any joy into your life, make sure you extend your appreciation to the people listed above. They worked very hard, created some amazing stuff, and they deserve to know that their work affected you.

Cragne Manor: An Anchorhead Tribute

We are halfway through 2018 but this is still technically the 20th anniversary of Michael Gentry’s Anchorhead. Close enough.

We would like to mark this occasion, pay tribute to one of our favorite games, and have a ton of fun by creating a sort of companion piece/homage/loving parody/grotesque imitation. When I say “we,” I mean all of us, en masse, including you.

I also mean Ryan Veeder and Jenni Polodna, the organizers of this project.

HERE’S HOW IT WORKS:

A strong female character wanders the halls of a decrepit mansion. Her husband is in danger. She has to help him. Each room into which she points her flickering flashlight teems with arcane danger and unspeakable history. Each room has been designed and written by a different author.

If you volunteer to participate, you’ll receive a prompt that goes something like this:

BOILER ROOM: A staircase leads up to the kitchen. The door to the southwest is locked. The rusty key is in here.

Then you’ll have about a month to make this room. You’ll do this by doing whatever the heck you want. Do you want to design a really nasty puzzle standing between the player and the rusty key? You should do that. Do you hate puzzles, so you want the key to just sit there on the floor? Definitely do that. Should there be a nameless horror from beyond space hanging out in the boiler room? No. Or, yes. It’s your call.

What if the details you implement contradict details written by somebody else for a different room? That’s okay. If it somehow renders the game unplayable we’ll figure something out.

What if the prose in your room is tonally or stylistically inconsistent with the prose in other rooms? Good grief I hope so. Otherwise why would we have a bunch of different people doing this?

I mean, this is an homage, so as you’re doing whatever the heck you want, you should do so within the context of Anchorhead-style cosmic horror. Or, if not within the context of, at least with an awareness of.

OKAY BUT SERIOUSLY HOW DOES THIS WORK:

The rooms you design will be stitched together by the organizers in Inform 7, and once we’ve made it work, we’ll unleash the monstrosity that results. That means the rooms themselves will be built in Inform 7.

If you don’t know from Inform 7 because you use some other authoring device or you’re not a programmer, you can still participate: If you draw up a detailed design document for your room with all the necessary prose, the organizers can translate it into I7 for you.

If you do work in Inform 7 you’ll be given a Compliance Sheet with a long list of Best Practices to ensure that your code can be plopped into the main project without breaking anything in anyone else’s rooms—while hopefully not constraining the content of your room, which, as I say, should consist of whatever the heck you want.

The organizers predict that, even if our Compliance Sheet is very well thought out, and even if every participant follows it exactly, combining all these hunks of code into a single working game may possibly turn out to be a nontrivial task. So expect that part of the process to take a while.

Speaking of time, here is our (still fairly malleable) schedule:

June 22 (Today): We are right now calling for your intent to participate. Email cragne@jennipolodna.com and commit to participating.

July 6 (2 weeks from today): This is the deadline for your intent to participate. When we know how many participants we have, we’ll draw up the game’s map and figure out who’s writing what. This might take a few days.

July 9 (A few days after that): You’ll receive your prompt. If you don’t think you can make it work—because you really hate boiler rooms, or something?—we’ll find you a different prompt.

July 13, 20, and 27: We’ll encourage you to submit a draft of your room each week leading up to the deadline. These check-ins aren’t mandatory, and we’re not necessarily expecting you to have anything presentable ready on the 13th. (I know I wouldn’t.) We do want multiple chances to look at your rooms while they’re in progress, though, so we can identify room-to-room conflicts (like two people both writing about “mud-slick galoshes”) and resolve them earlier rather than later.

August 3 (6 weeks from today): This is the deadline for your room. If you can get a couple people to beta test your room before this, that’s great. If you can’t, that’s fine. We want it to be amazing, but we’ll settle for it being playable.

August 31 (10 weeks from today): After a generously-proportioned period of futzing around, the organizers release the finished game—our finished game.

SO HERE’S WHAT YOU DO NOW:

Email cragne@jennipolodna.com and say “Yes, I want to contribute to a massive, ridiculous, collaborative tribute to Anchorhead, and I can get my room done before August 3, if you give me just under 4 weeks notice of what room I’m supposed to do.”

HOLD ON I HAVE TWO MORE THINGS:

Maybe you’re thinking, “Oh, golly, when Ryan and Jenni say ‘including you,’ I’m ever so sure they don’t really mean little old me.” Whoops! You are wrong. We need as many Anchorhead-heads as we can get to help us out. Remember how many rooms Anchorhead had? We want to have a ton of rooms.

Maybe you’re thinking, “Heck and dang! Ryan and Jenni announced this at the worst possible cussin’ time, because I’m a busy individual and don’t have four blasted weeks to make a good room!” Here’s the thing: You don’t have to craft a huge ridiculous room. You can write up a creepy hallway, add a couple moody details, and be finished in an hour. I wouldn’t actively encourage anybody to go small, but if you want to go small, or you need to go small, let us know, and we’ll assign you a little room. Something that’s on the way to something else. Your room’s smallness will magnify the bigness of what lies beyond. As long as that’s what you feel like doing.

TO REITERATE:

Email cragne@jennipolodna.com and let us know you want to contribute.

2018 MIT Mystery Hunt

In 2017, my MIT Mystery Hunt team, Death and Mayhem, found the Coin first. I wasn’t actually at MIT at the time. I was helping out as best I could from the great state of Iowa.

The horrible fate of each winning team is that they have to design the following year’s Hunt. For me this was a dream come true: I admired the Mystery Hunt from afar for years, and it was really exciting just to be on a competing team when I joined D&M in 2015. Over the course of 2017 I got to help make the MIT Mystery Hunt which feels like a fictional sentence even now.

Then MLK Day Weekend of 2018 appeared, and I went to Boston to help with Hunt operations in whatever way I could. That was the plan, anyway.

I must have caught something on the plane ride, which probably interacted with the incredible stress of the epic undertaking I had involved myself in, and I fell ill. I was out of commission for like 70% of the weekend. WHOOPS

So let’s get back to 2017: I got to contribute a whole bunch of different things to this Mystery Hunt, and I’m very proud of them, and now, four months later for some reason, I’m devoting a blog post to bragging about them.

Continue reading