The Ink Console

Thursday, February 20, 2025   (updated 2 hours later)

Tagged: if, interactive fiction, crowdfunding, ink console

Got a bunch of hey-have-you-seen-this about the "Ink Console", a prototype tablet which plays choice-based IF. There's also a crowdfunding preview page.

A tablet-like device lying on a table. It appears to have a directional joystick, a button, a volume control, a USB-C port, a power switch, and an SD card slot. The upper half of the display is a monochrome pixel illustration of a theater. The lower half is text: "GRAND HOUDINI: An Unforgettable Night of Magic. The event promises awe and wonder, but there are still a few hours left before the performance begins. To your right, the path slopes gently down toward the port dock. From here, you can hear the soothing rhythm of waves crashing against the orcks, a calm melody that contrasts with the vibrant energy of the eater. BUY A TICKET / SPEAK TO THE GUARD / GO TO THE PORT DOCK." Ink Console photograph from the web site.

Yep, I sure have have seen that. On several different forums.

The response from the IF community has been a mix of "That looks like fun!" and "Um, more market research needed? Maybe?"


Timerkillers round two

Saturday, February 15, 2025

Comments: 3   (latest 23 hours later)

Tagged: citizen sleeper, caravan sandwitch

Two more, in a bit more depth this time.

I see that Stray Gods has a new DLC chapter. Definitely playing that next.

  • Citizen Sleeper 2
  • Caravan SandWitch

Wanderings in the realm of diff

Sunday, February 9, 2025   (updated 2 days later)

Comments: 9   (latest 1 day later)

Tagged: diff, algorithms

So I was thinking about a text game idea where paragraphs of text change between a handful of possibilities as you make choices. Sort of a cycling choices effect.

But maybe instead of just replacing one block of text with another, I could do something visually neat. Like cross-fading. Or, how about this, maybe all the words could rearrange from one text into another. Some of them would move, some would appear, some would disappear...

= The    |  = The
         |  + rough
         |  + beast
         |  + ,
         |  + its
= hour   |  = hour
- is     | 
= come   |  = come
         |  + round
= at     |  = at
= last   |  = last
- ,      | 
- but    | 
- not    | 
- the    | 
- beast  | 
= ...    |  = ...

I'm treating punctuation marks as separate words for this example.

Well, that's just a diff function, right? Sure, you have to do all the animation work on top of that, which means text-layout work for the before-and-after. But the underlying logic is diff on two lists of words. Old-fashioned stuff. Same logic you see every day in version control systems.

("A diff command appeared in VersionĀ 6 AT&T UNIX," says my man page. That would have been 1975, if I'm reading the right timeline.)


Hang on. How does diff work anyway?


Three months ago, I released two new entries in Jason Shiga's AdventureGame Comics series: Leviathan for iPhone/iPad and The Beyond for Mac/PC/Linux (on Steam).

I am happy to say that The Beyond for iPhone/iPad is now available!

A cartoon drawing of a dark-skinned man holding a harpoon. Books flutter by in the background. The Beyond, Adventuregame Comics #2, by Jason Shiga

(Leviathan appeared on Steam back in 2022, and of course Meanwhile has been out on both platforms for years. So the porting matrix is complete.)

(...For these books. Samurai vs Ninja? You'll just have to wait and see!)


And now, a footnote.

One great thing about bringing Jason's comics to iOS is supporting VoiceOver. This makes the games accessible to people with visual problems. I mentioned this feature on social media last week and got quite a few responses! I'd forgotten how much of a draw it is.

I feel I should say more, though. The apps offer VoiceOver support, but I can't claim that it's perfectly supported.

Another great thing about Jason's comics (on screen or on paper!) is the sense of narrative context they provide. As you move through the story -- and the page -- other paths and panels drift through your peripheral vision. These aren't always related to your current state... but they often echo it, contrast with it, or even provide a subtle clue.

Four frames from "The Beyond". The highlighted frame is Mario walking through an amusement park saying "That was fun!" Next to it is Mario walking out of the gate of a real castle. Above that, Mario is looking at a pile of rubble, saying "The portal... it must've disintegrated centuries ago." The fourth panel is a silent close shot of Mario's face.

Unfortunately, I've never come up with a good way to represent this visual context in VoiceOver. The list of active VoiceOver controls includes the current panel ("review"), the next panel or panel choices, and the toolbar buttons. Adding "nearby" panels would bloat up the control list and make it harder to navigate.

Even worse: the narrative context sometimes includes pipes. (I don't want to give anything away, but The Beyond plays with this idea.) Pipes are never VoiceOver controls at all; they're purely visual decoration. Even if I had a VoiceOver representation of "nearby" panels, it would miss this bit out.

So I have a bit of a qualm recommending The Beyond for its VoiceOver support. Don't get me wrong; you can read the whole story and find all the endings. It's all there. But just as The Beyond is a slightly different experience on screen than in the original page-numbered book, it's a slightly different experience on VoiceOver than it is on screen. The adaptation isn't -- pardon the phrase -- perfectly transparent.

I just wanted to be clear about that. Footnote ends. I hope you enjoy The Beyond in whatever form you encounter it!

(And if you have any bright ideas about how to handle this narrative context business -- particularly if you have VoiceOver design experience -- feel free to drop me a line.)


Recent timekillers

Wednesday, January 29, 2025

Comments: 5   (latest 3 days later)

Tagged: reviews, arranger, lok, pine, chroma zero, discolored 2, indiana jones, the great circle

Well, this is certainly a terrible time to play games, isn't it. It's not that I couldn't use the distraction. I need the distraction! The problem is being able to concentrate on the game at all. I want to appreciate these things as the author intended, but wow. Rough.

Here's what I've tried recently.

  • Arranger: A Role-Puzzling Adventure
  • LOK Digital
  • Pine: A Story of Loss
  • Chroma Zero
  • Discolored 2
  • Indiana Jones and the Great Circle

Back to the Labyrinth

Friday, January 24, 2025

Comments: 9   (latest 6 days later)

Tagged: labyrinth, david bowie, jennifer connelly, movies, goblins, wishes, mazes

Look, there is only one thing I want from a Labyrinth sequel, and that's Jennifer Connelly as the Goblin Queen... Mother.

I know, it's tricky. David Bowie was this horny teenage fantasy of Magic and Freedom and Romance; he definitely wasn't a father figure. Do we need a retread of that? No.

So Sarah (Jennifer Connelly) as a single mom, frustrated with her teenage kid, and the kid is frustrated with her. The mom is busy with her job and is never home. The daughter wants to run around the back yard and play with her imaginary friends. Sarah is like "Look, I know! I was your age! The stories are important. But you have to do the laundry and make dinner too! Sorry, I have a late meeting, I have to run."

And the daughter screams "Yeah, go! I wish the goblins would come and take me away forever and ever!"

So they do. Welcome to the Labyrinth. But.

Sarah is the Goblin Queen. She always has been. That's her job. "Away at the office" is "off in the Labyrinth". Ever since Jareth disappeared, Sarah hears the wishes and Sarah cannot leave a wish ungranted. "I have done everything you've asked, turned the world upside down for you..." Only now it's her own kid, and what the teenager wants is for some Mom she doesn't know to save her from the Mom she does know, only they're the same person.

And what Mom wants is for her kid to understand that for sixteen years she has had the power to say "I wish the goblins would free me of this child" and she never said it. But now the kid has said it -- which means it has to happen.

And they're both exhausted by living up to each other's expectations.

Whatever they are to each other, it needs to change.

Sound about right?


IGF finalists were announced yesterday. I don't have a pile of reviews queued up for this year, but I can at least post my quick comments.


Roottrees redux

Wednesday, January 15, 2025

Tagged: the roottrees are dead

I beta-tested, so take this as a promo rather than a full review.

Roottrees! They're back! And more hand-drawn than ever!

A corkboard with three blank cards on it. A scrap of paper above says "Complete the family tree of the Roottree Sisters". This isn't the hand-drawn part.

If you haven't played The Roottrees Are Dead, now's the time to jump in. One of the top static deduction games to follow in the Obra Dinn's wake. Like I said about original free version of Roottrees:

The Roottrees are a five-generation dynasty of candy magnates from western Pennsylvania. Or rather, they were, because the most famous scions of that line just died in a plane crash. You're handed a blank family tree and ordered to fill in the names, faces, and professions of every blood descendant of old Elias Roottree. It's 1998 and you have a state-of-the-art terrible web browser. Get searching.

Now the UI is spruced up, it's got a contextual "ask the rubber duck" hint system, there's more voice acting, and the AI-generated art is gone. The plaid shirt is really plaid now. You have a search history to review your findings; that was my dearest wish from playing the old version.

If you have played Roottrees, now's the time to play it again. It's still a fun puzzle. Really, I found it nearly as much of a challenge the second time around. I'd forgotten a lot of the critical details since last April.

But also, once you complete the original game, a whole new chapter unlocks: Roottreemania! You've found the known descendants -- now hunt for rest!

(You know, the ones born on the wrong side of the sheets. Love-Roottrees. Roottrees bar sinister. Some Roottrees slept around, is what I'm saying.)

The new chapter is as big again as the original. The final sealed-envelope challenge is deeper and asks more deductive twists of you. But like the original, you can't get very stuck on it. Figure out as much as you can, use as many hints as you like, and then hit the "wrap it up" button. You'll get a satisfying story ending even if you haven't figured out every detail.

Did I say recommended? Recommended.


The Visible Zorker

Tuesday, January 14, 2025   (updated 1 day later)

Comments: 33   (latest 2 days later)

Tagged: if, interactive fiction, zork, infocom, zil, zarf

Here's a little something I've been working on: The Visible Zorker!

A screenshot titled "The Visible Zorker". The left side of the window shows the opening of Zork 1, up to the command OPEN WINDOW. The right side shows a list of ZIL function calls and the message "With great effort, you open the window far enough to allow entry." This screenshot has spoilers for Zork 1. This whole project is spoilers for Zork 1. That's the point.

Really, go give it a shot. It's a toy. You can read the rest of this post later.

...Okay, a quick introduction. The left pane is regular old Parchment, the Z-code interpreter, playing Zork 1. You type commands; the game responds.

Just regular old Parchment? Not quite! This is Parchment exposed. The upper right pane shows the stack trace for the current turn. That's all the ZIL functions called, and all the text printed, when executing the most recent command.

And the bottom right pane shows the ZIL source code -- the original text, written by Infocom folks in the 1980s. Click on any function or printed string; it'll show you that code in context.

Now check out the other tabs!

A list of rooms and objects from Zork. A list of variables, starting with "HERE: EAST-OF-HOUSE", "SCORE: 0", "MOVES: 3". A list of timer functions: "I-LANTERN count 200", "I-CANDLES count 40", "I-THIEF count -4", "I-SWORD count 0-1". Only I-THIEF is marked as active. A list of filenames: "zork1.zil", "1actions.zil", "1dungeon.zil", etc.

The "World" tab shows the game world as nested objects. The "State" tab shows ZIL global variables. "Timers" is the table of timers and daemons -- functions called every turn or counting down to a future call.

All of these displays update live, every turn, as you play the game. You can click on any line to see the ZIL source that implements it.

And those green buttons? Those display my comments on the source. ZIL isn't the easiest language to read (it's a Lisp derivative), so I wrote up some helpful footnotes.

Really, go play with it. Run around. See how Zork works. Haven't you always wondered?

(I mean it about the spoilers, though.)


Now that we're past the holidays, here's your reminder that NarraScope is accepting talk proposals. (It's been open for a few weeks, but you know, holidays.) The deadline is February 7th.

This year we also have a track for academic papers. We're trying to do more with Drexel, our host university this year, so this is a bit of crossover. The paper submission form isn't open yet, so keep an eye on that if you're of the academic persuasion.

Oh, there's also a brand-new NarraScope account on Bluesky. So brand-new that we haven't said anything yet, but that will change soon... And all the other contact lines are still open, of course.

See you in June in Philadelphia, I very much hope.