Style | StandardCards

Planet Interactive Fiction

Friday, 03. April 2026

IFTF Blog

2025 Grant Report: “Critical Essays On Interactive Fiction” (Grace Benfell)

In 2025, as part of our micro-grants program, IFTF funded a project from Grace Benfell, co-editor in chief of The Imaginary Engine Review, which was completed last summer! TIER defines itself as an online journal of games criticism - but Grace and Phoenix, the editors, have a very specific goal and outlook for it, described in their manifesto. TIER values the margins, the strange, the hobbyist rel

In 2025, as part of our micro-grants program, IFTF funded a project from Grace Benfell, co-editor in chief of The Imaginary Engine Review, which was completed last summer!

TIER defines itself as an online journal of games criticism - but Grace and Phoenix, the editors, have a very specific goal and outlook for it, described in their manifesto. TIER values the margins, the strange, the hobbyist releases, the experimental, the games that don’t get a lot of critical attention. Prior issues each focused on a specific game, such as thecatamites’ “Anthology of the Killer” or randomnine’s “OVERWHELM”; but things got a little different for their latest issue…

See, their initial proposal envisioned three small issues on three IF games; however, the scope shifted into a larger issue that would offer the opportunity to showcase a wider range of perspectives on IF. And it is a large issue with no less than 6 pieces on various aspects of IF. (We get it! There is so much to talk about in IF!) Grace explains that the grant money was very welcome as it allowed them to commission more ambitious and experimental pieces overall. The issue took overall longer than expected, but with an interview, a retrospective, and four critical perspectives on a variety of IF games, there’s a lot for everyone!

You’ll find this issue on TIER’s website, featuring: - a reflection on “Repeat the Ending” (Best in Show at Spring Thing 2023) as a personal game and the vulnerability it entails - an honest retelling of what it was to be a Twine author participating at their first IFComp in 2017 - a shorter piece on game poems, and the exploration of experimental techniques that have long been part (or precursors?) of IF - a lengthy interview with Nathalie Lawhead, touching on the power of text-based games for effective, personal, touching, and plain weird experiences, in an industry that looks more towards sleek polished spectacles, and an angry world that stifles creativity - a great study of “Horse Master” that made me go, “fine, yes, of course I will play Horse Master for the 12th time” - an exploration of retro interfaces featured as literary devices in a few IF games, and what they point to.

We are very happy to have helped bring into the world these very unique and thoughtful pieces of writing! Good games criticism pieces have always been very important to the IF scene, from long rec.arts.int-fiction pieces to SPAG articles, and even to this day articles from The Rosebush, but it can go through periods of lull - it takes thoughfulness, introspection, and the time to sit with a piece. IFTF is proud to continue to support a vibrant, healthy creative scene in this way!


2025 Grant Report: “Interactive Fiction Workshop for Theatre Practitioners” (Katy Naylor)

One of the projects in the 2025 class of IFTF grants awardees was led by Katy Naylor from the Voidspace. In Katy’s words, the Voidspace is a cross-disciplinary space to bring together practitioners and explore and promote the overlap between the worlds of IF, indie writing, games, and interactive performance to encourage cross pollination. From our experience, notably at Narrascope, those worlds do

One of the projects in the 2025 class of IFTF grants awardees was led by Katy Naylor from the Voidspace. In Katy’s words, the Voidspace is a cross-disciplinary space to bring together practitioners and explore and promote the overlap between the worlds of IF, indie writing, games, and interactive performance to encourage cross pollination. From our experience, notably at Narrascope, those worlds do have quite a bit of overlap that is always interesting to foster! The proposal sought grant money to support the delivery of several interactive fiction workshops and Twine minijams for newcomers as part of the London Games Festival Fringe in April.

The Voidspace successfully managed to run three IF workshops in April, two in person and one online; although they weren’t formally picked as a side event by the London Games Festival, the workshops ran at the same time period. The Void managed to bring together quite a few people from the literary and the interactive performance worlds that form part of the network that Voidspace has created - most of whom had not run into IF before, but had very relevant skills and an interest from their existing practice. The in-person workshops occurred April 5 at Theatre Deli in London, UK, a theatre community hub that frequently partners with the Voidspace. The first workshop focused on Downpour, a very intuitive and accessible tool for hyperlinks-based games created by V Buckenham, who also ran this workshop; and the second one saw Stanley Baxton (who readers of these pages might know from his 2024 IFComp entry) introduce a group to the tool Videotome. As for the online workshop, on April 15 Mark Ward gave and introduction to Twine.

Katy reports that these workshops were very successful! Not only for the attendees - Katy herself reports that the workshops planted several seeds in her minde, helped her shape her approach to advocating for IF and inspired her to use Videotome for an upcoming piece. This also spurred her to create her own introductory IF workshop aimed specifically at theatre makers, which she ran in September at an experimental theatre festival, using physical materials to replicate Twine-like structures - one attendee even said that this broke her writer’s block!

We’re always excited to help introduce more creators to the world of IF, and it sounds like the cross-pollination aspect of this project made it very successful!

PS: when we asked Katy to describe the overlap between IF and interactive theatre, her response was so insightful that we are copying it here verbatim:

The overlap between IF and theater (particularly immersive and interactive theatre, which is the Voidspace’s core interest) is massive!

Immersive theatre often involves audience interacting with environments that are all around them (i.e. inside a big touch real set - see Punchdrunk for the biggest example), choosing which strands of an atomised story to follow (e.g. following different characters or objects), etc. Interactive theatre takes this a stage further and allows audiences to take a direct part in the action - a sort of live action game but with a tight narrative arc. A balance of choice with controlled impact very similar to IF!

IF is well suited for creating environmental narratives - my workshop focuses on the spatial mechanics of “Howling Dogs” - how the degradation of the core space over time tells a story if its own - and encouraged participants to design a story from an environment first perspective. For those interested in interactive theatre you can use dialogue options and variables to create a story that feels responsive in a similar way.

There is also the element of time - even in a linear piece of IF, you can manipulate the flow of time far more than conventional text - by choosing breaks between passages, expanding links, moderated text etc. You can use these simple tools to give a piece of IF a sense of theatricality - landing the timing of ‘beats’ for flow and emphasis. Add the use of variables to build in a sense of time passing and use of environment and you have what I call ‘4d storytelling’. Which if you think about it, is what theatre is… “[Understudied][https://borntopootle.itch.io/understudied]” is a great example - a piece of IF about theatre that uses variables to introduce time pressure, and text effects and structure to choreograph the timing of ‘beats’. Form and content in unity!

Thank you so much Katy!


2023 Grant Report: “Teaching Indonesian Authors to Write Interactive Fiction” (Felicity Banks)

We wrap up this series of grant reports with this fourth and final blog post, on Felicity Banks’ project and how support from IFTF made her able to travel to Indonesia and spread the word about IF! Felicity is a long-time IF author who lives in Australia but has ties to Indonesia, having travelled there over half a dozen times and learned the main language, Bahasa Indonesia. She applied for a micr

We wrap up this series of grant reports with this fourth and final blog post, on Felicity Banks’ project and how support from IFTF made her able to travel to Indonesia and spread the word about IF!

Felicity is a long-time IF author who lives in Australia but has ties to Indonesia, having travelled there over half a dozen times and learned the main language, Bahasa Indonesia. She applied for a microgrant to travel there for the Ubud Writers’ and Readers’ Festival, the largest writing festival in South-East Asia), hoping to offer an IF workshop as part of the official program track. However, after the festival declined the proposal, Felicity instead shifted the project’s focus to connecting with authors in Ubud around the time of the festival and giving a series of workshops. (Oh, and go to cat cafés and monkey forests.)

This proved to be very successful, with Felicity teaching 7 small workshops (focusing on the use of tools such as Twine) involving 18 Indonesian-speaking authors! The workshops went very well, as told by Felicity:

“It is wonderful to see people’s faces light up as they see their words transformed into a game at the touch of a few buttons. They are extremely impressed that volunteers on the other side of the world care so much about inviting Indonesian people into the community.”

Following these workshops, Felicity sought to keep the momentum going - as part of her application, she proposed to stay in touch with participants for two years after the workshops, to follow their progress. A WhatsApp group was created with over a dozen of Indonesian authors joining, and everyone keeps in touch and remains engaged with IF. Felicity also ran, in late 2024/early 2025, a small friendly comp for her students, with small cash prizes for the three best interactive stories.

We love this project - despite the fact that Indonesian is spoken by 200-250 million people, we are not aware of a Indonesian-speaking IF scene, and we would love for one to spring to life! Felicity’s familiarities and ties with Indonesia have allowed her to become an ambassador for IF there, and plant the seed among the community of authors; we are very happy the microgrants program was able to help make it happen!

“This was an incredible journey and I met lots of wonderful writers. Thank you so much.” -Felicity Banks


Announcing the 2025 IFTF Grant Recipients

We are pleased to announce the recipients of the second round of IFTF microgrants, after a successful pilot in 2024. The grants program exists to disburse small-value grants to peer-reviewed projects that benefit a community of interactive fiction makers, players, researchers, or educators. An independent committee of Grant Advisors review each submission and provide recommendations for funding to

We are pleased to announce the recipients of the second round of IFTF microgrants, after a successful pilot in 2024.

The grants program exists to disburse small-value grants to peer-reviewed projects that benefit a community of interactive fiction makers, players, researchers, or educators. An independent committee of Grant Advisors review each submission and provide recommendations for funding to the Grants Committee, who this year have selected four projects to fund.

We saw great diversity again this year in the projects submitted, including a higher number of submissions compared to our pilot year. Thanks to everyone who submitted proposals! Here are the list of grant recipients for 2025.

Critical Essays On Interactive Fiction - Grace Benfell Grace is a co-editor of The Imaginary Engine Review, an online games criticism journal. Grace will receive $500 to commission three articles for the journal on significant interactive fictions written in the 2010s, exploring how these works continue the medium’s tradition of experimentation and introducing modern IF to a broader gaming audience.

No-code IF platform for web using Ink - Mark Davis Mark Davis is developing a web-based tool for interactive fiction builders that allows creators without coding experience to create interactive stories incorporating images and animations, using Ink scripts under the hood. Mark will receive $600 for hosting and branding assets for the in-development platform, crucial steps towards opening it up to outside testers on its road to launch.

Interactive Fiction Workshop for London Games Week - Katy Naylor Katy will receive $716 to host a series of IF writing workshops and Twine mini-jams at the 2025 London Games Festival Fringe, and present resultant works online in a special edition of voidspace zine. The workshops are aimed at people interested in games or interactive writing but who have not coded or designed a piece of IF before, hoping to bring new voices into the community.

Atrament, an Ink-based IF engine - Serhii Serhii is working on an IF engine that combines Ink scripting with Javascript as an alternative to Inky, creating a more full-featured release platform for Ink stories comparable to the mature web deployments for languages like Twine and ChoiceScript. The core of the engine is already complete: Serhii will receive $1000 to fund dev time writing documentation, testing and debugging the engine, and adding improvements focused on easier development and deployment workflows for authors.

We’re thrilled to see so much passion for expanding the audience of IF writers and readers in this year’s awardees. We want to thank all applicants, as well as our Grant Advisors, who volunteered their time to review the projects and formulate a recommendation for IFTF: thank you very much to Grim Baccaris, Kate Compton, Emilia Lazer-Walker, Juhana Leinonen, Colin Post, and Kaitlin Tremblay.

Congrats again to this year’s grant recipients! Check back in the fall for information about next year’s grant cycle. An announcement of the 2024 grant recipients is also available.

And lastly: if you like the grants program and want to see it continue, please consider donating to IFTF! Our Paypal page allows you to specify the program you’d like to see your money fund - you can select the grants program in the dropdown menu if you are so inclined. Thank you to everyone who has been donating to IFTF and allowing us to continue furthering our mission!


IFTF Officer Transition

On February 22, 2025, IFTF elected two new officers to the roles of Treasurer and Technical Officer. The former position is being filled by Colette Zinna, while the latter, a new role, is being filled by Doug Valenta. Previously, these tasks were handled jointly by Andrew Plotkin, whose term on the board finished in March 2024 and whose time as Treasurer has now also ended. The board thanks Andrew

On February 22, 2025, IFTF elected two new officers to the roles of Treasurer and Technical Officer. The former position is being filled by Colette Zinna, while the latter, a new role, is being filled by Doug Valenta. Previously, these tasks were handled jointly by Andrew Plotkin, whose term on the board finished in March 2024 and whose time as Treasurer has now also ended. The board thanks Andrew for his many years of service to the organization’s administration; he will be continuing as the chair of the IFArchive committee and helping with the NarraScope conference.

Colette Zinna is a longtime fan of narrative games and an occasional game developer. She’s attended or volunteered at NarraScope every year since it began.

Doug Valenta is a programmer and creator focusing on games, narrative, language, and the web, and a two-time NarraScope speaker. Doug works as a software engineering manager, leading a platform engineering team at a data management startup. He lives in Portland, Oregon with his partner and two dogs.

As we celebrate our two new officers, we look forward to the organization’s continued growth as we continue to expand our purview, operational activities, and service to the world of interactive fiction and narrative games. You can read more about IFTF’s leadership, and join us on the Intfiction.org Forums to toast the new officers.


New IFTF Committee: Institutional Relations

We are pleased to announce the creation of our new Institutional Relations committee! You can learn more by reading our charter here. The intent behind this committee is to help support IFTF in establishing and nurturing relationships with institutions that align with our vision. Over the years, we have realized there are so many of them! Other non-profits (related to digital arts, video games, op

We are pleased to announce the creation of our new Institutional Relations committee! You can learn more by reading our charter here.

The intent behind this committee is to help support IFTF in establishing and nurturing relationships with institutions that align with our vision. Over the years, we have realized there are so many of them! Other non-profits (related to digital arts, video games, open source, etc.), educational institutions, libraries, museums and other preservation-oriented folks, video game studios, but also government bodies and granting bodies, and everything in between!

While IFTF has established a number of great institutional relationships over the years, there wasn’t necessarily formal internal resources or structures that could help in supporting these relationships; with so many committees with different goals and activities, there was a risk of a lack of coordination or visibility, and missing identifying interesting opportunities or potential synergies. This committee’s goal is to help with this, and also support the org more generally in things like communicating IFTF’s impact to various interested stakeholders more effectively, or having a more structured and more long-term-focused approach towards fundraising. We believe this is an important step in IFTF’s maturation, and we are very excited about it!

Our committee has a few members to get started with, however we’re definitely interested in onboarding more folks! If you like building bridges, or know a few people in fields related to what we do, like to find missing puzzle pieces, enjoy the thrill of finding new partners, have some fundraising experience — or if just like interactive fiction and would love to help us and maybe gain some skills, please get in touch via email and we’d be thrilled to chat!


IFTF 2024 Transparency report now available

IFTF’s 2024 Transparency report is online, summarizing the organization’s activity over the previous calendar year, including its financial income and outflow.

IFTF’s 2024 Transparency report is online, summarizing the organization’s activity over the previous calendar year, including its financial income and outflow.


Announcing the IFTF Patreon

Hello to everybody in the IFTF Community (and beyond!) The Interactive Fiction Technology Foundation’s board of directors is thrilled to announce the creation of a new way that you can help support our mission and get some fun perks in the process. This initiative has been in process for many months and we are delighted to finally launch it for the public. You may now support IFTF on the Patreon

Hello to everybody in the IFTF Community (and beyond!)

The Interactive Fiction Technology Foundation’s board of directors is thrilled to announce the creation of a new way that you can help support our mission and get some fun perks in the process. This initiative has been in process for many months and we are delighted to finally launch it for the public.

You may now support IFTF on the Patreon platform, at the following URL:

https://www.patreon.com/IFTF

Backing IFTF on Patreon provides an additional, accessible route to helping us continue to serve the community of narrative game lovers and its ever-evolving needs. By becoming a member of our Patreon, you can unlock various perks, such as:

• A special role and access to an exclusive channel in the IFTF Discord ($5/month tier)
• A unique profile badge on the Intfiction forums ($5/month tier)
• A scaling discount on NarraScope admission ($10/month tier or higher, after 6 continuous months)
• Access to the Secretest Discord channel ($100/month tier, for you wild and wacky folks!)

We plan to continue to expand the perks over time as each of IFTF’s committees hooks into the system. We also are open to suggestions about additional things we can offer, so if you have ideas, please feel free to contact IFTF.

IFTF Patreon Q & A

Q: I already financially support IFTF another way. Is that changing or being eliminated?

A: No! This is simply another option for helping out.

Q: If I support IFTF via PayPal, it’s considered a tax-exempt donation. Is that still true with Patreon?

A: We advise checking with a tax advisor with expertise in your specific jurisdiction, but Patreon states that “if the creator is a legally recognized not-for-profit company and you receive nothing of value in return for your payment to them, then some jurisdictions allow the patron to take a tax deduction.”

For more information, this is a good place to start: https://support.patreon.com/hc/en-us/articles/207099326-Is-my-payment-to-a-creator-tax-deductible

Q: I have an idea for a perk or feedback about the Patreon!

A: That isn’t a question, but you can still get in contact with us via the many routes outlined on our website: https://iftechfoundation.org/contact/

The Interactive Fiction Technology Foundation is registered in the United States as a 501(c)(3) charitable organization.


2026 IFTF Microgrant Applications Now Open!

IFTF is thrilled to announce the next round of our microgrant program, providing modest grants to folks working on interactive fiction technology, education, preservation, or outreach. Do you have a project in the works that will benefit an interactive fiction community and could use a bit of funds to get it to the finish line? We would love to hear from you: applications for this year’s program ar

IFTF is thrilled to announce the next round of our microgrant program, providing modest grants to folks working on interactive fiction technology, education, preservation, or outreach. Do you have a project in the works that will benefit an interactive fiction community and could use a bit of funds to get it to the finish line? We would love to hear from you: applications for this year’s program are now open.

The goal of the grant program is to support projects that benefit the interactive fiction community at large (rather than funding the commission of new games, for instance). We especially love projects that provide tangible benefits to a community of IF players or makers in their work to preserve, maintain, and inspire the continued growth of this medium. Proposals are evaluated by an independent committee of advisors (distinct from the grant admin committee) for merit, feasibility, and potential impact.

Our budget for the grants program is small: we have $3,000 of funds in total to split between awardees, with a maximum award per application of $1,000. (Requesting a smaller amount is okay and helps us support more projects.) To preserve our volunteer bandwidth, we will not consider funding projects needing less than $150. We will ask you to submit a simple budget to back up the amount you are asking for, as well as a few details about your project and its scope, but we try to keep the application process as simple as possible.

Some fine print: Grant awardees will be asked to submit a report nine months after receiving funds, meaning our funding is best-suited for projects that will be accomplished in under one year. Please note that those directly involved in the grant process (i.e. Grant Admin Committee members, Grant Advisors, IFTF Board Members) cannot apply. Those who have been banned from IFTF activities are not welcome to apply. If you are connected to someone involved in the process, please disclose that in your application so we can make appropriate plans to avoid conflicts of interest.

If you’re interested in applying or learning more about the process, please check out our grant guidelines. Applications will be open until November 15, 2025, and we except to announce accepted projects by January 31, 2026.

Last year, we funded an array of exciting projects focused on accessibility, education, documentation and outreach. And in our most recent funding round, we helped support four exciting projects currently in progress or concluding: Serhii is working on Atrament, an IF engine that combines Ink scripting with Javascript as an alternative to Inky, creating a more full-featured release platform for Ink stories comparable to the mature web deployments for languages like Twine and ChoiceScript. Work is in progress with a launch is expected by the end of the year. Grace Benfell commissioned articles on modern interactive fiction for a special issue of The Imaginary Engine Review, an online games criticism journal, with the goal of introducing modern IF to a broader audience. The special issue is expected to be published shortly. Mark Davis is developing Moving Literature, a web-based platform for interactive fiction builders that allows creators without coding experience to make interactive stories incorporating images and animations. A blog post introducing the platform recently went live. Katy Naylor hosted a series of IF writing workshops earlier this year in London and online, in association with the zine Voidspace, introducing artists from the wider literary and interactive performance worlds to interactive fiction.

We can’t wait to see what ideas you’ve got brewing this year. If you have any questions about the IFTF Microgrants or the application process, please reach out to [email protected]. And if you don’t intend to apply but are still thrilled that IFTF is funding cool projects, you can donate to the grants program directly (choose “IFTF Grants” in the donation page dropdown), or simply to the IFTF General Fund to help us keep this and many other great programs running!


Board Transition Update

At the end of 2025, David Cornelson stepped down from the IFTF board of directors. We would like to thank David for his time and service to the organization during his two years on the board. David will continue to support IFTF, along with former members of the board, on the advisory board.

At the end of 2025, David Cornelson stepped down from the IFTF board of directors. We would like to thank David for his time and service to the organization during his two years on the board. David will continue to support IFTF, along with former members of the board, on the advisory board.


Zarf Updates

The Curse of the Forgotten Adverbs

(My first title for this post was "The Mystery of the Missing Adverbs". That was just too trite. Instead I spun the ol' Stratemeyer Syndicate title wheel and picked different words. Now it's trite and clunky; sorry.) Adverbs are one of the great ...

(My first title for this post was "The Mystery of the Missing Adverbs". That was just too trite. Instead I spun the ol' Stratemeyer Syndicate title wheel and picked different words. Now it's trite and clunky; sorry.)

Adverbs are one of the great Bad Ideas of interactive fiction. Imagine this sort of interaction:

> EXAMINE BRICK WALL At a glance, it's just an ordinary brick wall.

> CAREFULLY EXAMINE BRICK WALL Upon closer inspection, you see some cracks outlining a secret door!

> PUSH WALL The wall creaks and quivers slightly at your touch.

> PUSH WALL FIRMLY The secret door scrapes open, spraying dust and the funk of ages.

We can parse verbs, adjectives, and nouns, so why not adverbs? They provide an additional axis of choice for the player's command. They can be situationally appropriate. (Note how I'm cueing the player to consider alternatives: "At a glance", "at your touch".) Is this a good idea?

Well, no. It's bad. The standard reply is that this is too much choice. It can't be connected to meaningful game responses. That is: 98% of the time, EXAMINE CAREFULLY is going to do exactly the same thing as EXAMINE, so the player will rapidly learn to not bother.

Also, players are used to searching a two-axis space. "Try every verb on every noun" is boring; you don't want the player to go there; but sometimes they get stuck and it happens. Trying every verb/noun/adverb combination isn't practical at all.

(I once tried to equate the two-axis noun-verb searchable space of text IF with the two-dimensional searchable screen space of Myst. I was certainly overstating that connection -- this was before RealMyst -- but it's fun to try.)

This argument is not new in IF circles. In fact it's so well-known that I can't remember the last time someone seriously proposed adding adverbs. They're only hauled out as an example of a Bad Idea!

Except... occasionally, in one of those discussions, someone remembers that Deadline does use adverbs. And they kind of work, right? I mean, the game was playable. We used the right word at the right time and solved the mystery. And yet the idea was never followed up -- outside of Infocom's later mystery games.

What's going on here?

(SPOILER WARNING: Spoilers for the mysteries of Deadline! Some of them, at least.)


First, we note that the manual doesn't clue you in about adverbs at all. Neither the folio-edition instructions nor the grey-box manual (they're slightly different). The sample game in the grey-box manual doesn't use any adverbs either. That's not great! It seems like the game wants you to try a command that you have no way of knowing about.

UPDATE (Apr 3): Aaron Reed points out in comments that the folio manual does mention CAREFULLY. It's buried in the "Time Element" section:

Some actions, such as examinations done CAREFULLY, may take a bit longer [than one minute].

Obviously easy to miss, because I missed it! (So did my PDF search function, because the word CAREFULLY is hyphenated in that sentence, sigh.) And they dropped that line when they wrote the grey-box manual.

But that's just ("just") the manual. Let's look at the parser code that handles adverbs. Here's the entire bit:

 (<OR <EQUAL? .WORD ,W?CAREFULLY ,W?QUIETLY>
  <EQUAL? .WORD ,W?SLOWLY ,W?QUICKLY
            ,W?BRIEFLY>>
  <SETG P-ADVERB .WORD>)

(Side note: Due to the way Infocom pasted parser code from one project to the next, these lines occur in almost every following game. However, they're usually commented out. Only Deadline, Witness, Seastalker, and Moonmist run this code. A few other games detect adverbs and say "Adverbs aren't needed in this game.")

What does these lines do? They simply check for one of the five listed words (CAREFULLY, QUIETLY, SLOWLY, QUICKLY, BRIEFLY), store it in the P-ADVERB global variable, and move on with the parsing. Unlike the verb-noun structure, which is rigid, an adverb can occur anywhere in any command.

However, very few commands care about the P-ADVERB variable. Like I said earlier: almost every action runs the same whether you do it QUICKLY or SLOWLY. Here is everything you can accomplish with an adverb in Deadline:

  • If you CLIMB STAIRS QUIETLY or SLOWLY, you learn that they creak no matter what.
  • You can EXAMINE/READ NEWSPAPER CAREFULLY/SLOWLY to find the business-section article about the Omnidyne merger.
  • You can EXAMINE/READ NOTEPAD CAREFULLY to discover the imprints left from the previous page.
  • You can EXAMINE/SEARCH BOOKSHELF CAREFULLY to notice the books that George moved when he... well, I won't spoil that.

What, Master O'Lochlainn, do we observe here? First, it's a pretty haphazard list. (Why not accept CLIMB STAIRS CAREFULLY too?)

More important: all of these commands are optional.

  • The game tells you that the stairs are creaky; so do the casefile interviews. Knowing that they're inescapably creaky is just a confirmation.
  • READ NEWSPAPER mentions that there are two sections and you've only glanced at one. You can then READ SECOND SECTION.
  • The imprints on the notepad are a detective-story cliche; you might go straight for the pencil. FEEL NOTEPAD gives you a blatant hint too.
  • If you saw George move the books, the adverb is not necessary. A regular EXAMINE will direct your attention to the books you noticed earlier. EXAMINE BOOKSHELF CAREFULLY is an alternate solution if you missed George sneaking around.

Is this on purpose? That is, did the designer deliberately avoid putting any adverbs on the critical path? I don't know for sure, but I suspect the answer is yes.

One pointer is that there is an unusual command form which is critical to finishing the game: SEARCH NEAR/AROUND HOLES. And this one is explicitly called out in the manual.

(I feel like they should have accepted SEARCH HOLES CAREFULLY as an alternate solution... but they don't. Oh well.)

But there's one more game effect that I didn't mention, and I think it's the key:

  • Any EXAMINE or READ command takes 3-6 minutes longer if done CAREFULLY.

This isn't just a matter of bumping the clock. All of Deadline's NPCs move around the house on a schedule, which means they can surprise you in the middle of an action:

> EXAMINE CHANDELIER CAREFULLY You hear a phone ringing in a nearby room. Do you want to continue what you were doing? (Y/N) > Y To the north Mrs. Robner enters the hallway from the west. The phone rings again. Do you want to continue what you were doing? (Y/N) > N You never got to finish looking over the crystal lamp.

If you want to stop Mrs. Robner, or answer the phone yourself, you have to interrupt your EXAMINE. It's a trade-off! And trade-offs are the root of all game agency.

Even if no characters happen by, you're aware of the clock ticking. You're on a schedule too. (The first thing you learn in the game is that the will-reading is at noon.) (For that matter, the game's tagline is "Twelve hours to solve the murder.") Spending several minutes on each EXAMINE is genuinely too much time to waste. You have to pick and choose.

Yes, yes, the game allows arbitrary save and restore. You could search-scum your way around the mansion. But, like the "try every verb on every noun" strategy, it's clearly a tedious last resort.

By placing EXAMINE CAREFULLY into an "economy" of game resources, Deadline breaks the (not-yet-invented) Curse of the Adverb. EXAMINE CAREFULLY is never the same as EXAMINE; it's always a little worse, and sometimes (rarely) a lot better.

Other adverbs don't fit this pattern. But then, none of them do anything interesting, with the very minor exception of CLIMB STAIRS QUIETLY. Anyhow, you're a detective. EXAMINE and SEARCH are really the core actions of the game. Giving them extra flexibility suits the genre.

See also EXAMINE ROOM, the other command which takes several minutes. The game explicitly warns you that it "wouldn't reveal much" -- and indeed it never does. You're supposed to EXAMINE specific objects! But you can see why the game allows EXAMINE ROOM; it's clearly part of both the mystery genre and the time-economy of Deadline.

So perhaps adverbs could be extended to other IF after all. It would require (1) a genre in which some actions require more variety than a raw verb; and (2) a meaningful resource cost for the player to balance. Want to give it a go?

(It would make sense for WALK NORTH SLOWLY/QUIETLY to take extra time as well. Or FOLLOW GEORGE QUIETLY? But NPCs move at a steady one room per turn, for simplicity's sake. Slowing down the player would break the FOLLOW entirely -- not what you want. Maybe some other trade-off...)

Thursday, 02. April 2026

Renga in Blue

Skull Cave: The Mystery of the Mazes

This one was from a while ago, and while I’m not replaying (I beat the game, just not with a full score) I did check a walkthrough that was posted last year (after I had finished) because I was still bothered by the mazes. It was a game on the Sol-20 that was clearly heavily […]

This one was from a while ago, and while I’m not replaying (I beat the game, just not with a full score) I did check a walkthrough that was posted last year (after I had finished) because I was still bothered by the mazes.

From Bonus Life Computers, $1999.99.

It was a game on the Sol-20 that was clearly heavily inspired by both D&D in general and Tomb of Horrors in particular. It has the finale with the demi-lich that’s only a skull. As it now has come up in two adventure games (Skull Cave and Epic Hero #2), I think it’s worth it to go into a brief aside on the history of Tomb of Horrors itself, then I’ll return to the new(-ish) discovery about the mazes. This combines information from Playing at the World by Peterson, Gygax’s foreword to Return to the Tomb of Horrors, and Dungeons & Dragons Art & Arcana: A Visual History.

Alan Lucian was part of the same wargaming circles as Gary Gygax, joining the International Federation of Wargaming in 1969 and serving as one of their Senators in 1970. He also wrote an article in the same year about the board game Jetan, invented by Edgar Rice Burroughs for his John Carter series. (Excerpt below from The Chessmen of Mars.)

Gygax ran a play-by-mail game space-combat game (originally by Tullio Proni, revised by Gygax) called The War of the Empires. It ran for two years starting in 1969; Lucian tried to restart the game after it lapsed. Lucian was clearly known to Gygax as he gets mentioned in a letter by Gygax as potentially having interest in the newly-designed Dungeons & Dragons.

Lucien was indeed interested, and ran a Dungeons & Dragons campaign in California. In 1975 he sent to Gygax a new dungeon (handwritten on four pages, not including the map on graph paper): Tomb of Ra-Hotep. It was themed around an Egyptian tomb with many traps.

Passage turns into crawl space, and 6 [the end] contains 5-20 cobras! Can’t turn or run — crawl backwards away. Treasure is Ring of 3 wishes / Delusion (very hard to guess this one!) and Scroll of 7 cleric spells.

The final enemy, Ra-Hotep the lich, has a “jackal stick” with a Sphere of Annihilation at the end.

The sphere later got moved to a devil face at the end of the starting hallway. Source. The sphere causes instant annihilation to anything that touches it.

Gygax got back to Lucien (February 1975) that he had “reorganize[d] your excellent tomb area” and ran it through a trial. Quoting Gygax:

From his basis I developed the material that was to become the Tomb of Horrors, and I admit to chuckling evilly as I did so … Specifically I had in mind foiling Rob Kuntz’s PC, Robilar, and Ernie Gygax’s PC, Tenser. To make a pair of long tales truncated, Rob, by expending a lot of ore servants, managed to get through to the final encounter, and as the skull of the demilich rose to assail the one daring violation of his sanctum, Robilar swept all immediately visible treasure into his bag of holding and escaped. Ernie likewise managed to attain the ultimate, destroyed Acererak, and likewise left laden with loot.

All this eventually resulted in a “competition game” at the first Origins convention in the summer, where players were given two hours to get as far as they could through the Tomb of Horrors. The rules reflect the set in 1975, including mention of the later-scrapped character classes Divine and Mystic. The final enemy was now an unnamed lich that was merely a skull (that would become Acererak in the published version of 1978). Illustrations were included to be used during gameplay, made by a local 14-year-old, Tracy Lesch.

Lesch’s illustration of the lich at the end.

The illustrations were a genuinely novel element, but for my purposes I’d like to emphasize: so was the gameplay style. This was a game not about combat so much as puzzles. (I’ve run Tomb of Horrors before as a Dungeon Master, and one of the players was clearly getting irritated at the lack of combat rolls.) So much of the dungeon feels oriented around methods of survival while working out traps and magical items that it comes off more as an “adventure game” (in the computer-genre sense) than a “RPG” (again in the computer sense). The final battle against Acererak involves such an overpowered set of abilities that to win a player needs to do something clever rather than just attack.

If touched (or struck) the lich targets the strongest character and sucks their soul.

This was true in the competition as well; one team took a cursed crown/scepter pair meant to trap players, and put the set on the demi-lich, vaporizing it. (The problem with having your villain lair full of deathtraps is they can be used against you!)

When D&D became popular, while some adventures tried to embrace it as much as possible (see: Cornucopia) others struggled because combat in adventure games just isn’t that interesting except for small segments. (Zork I has memorable combat, but it uses the combat system for the troll and the thief and nothing else. Not a standard dungeon crawler!) Adventure games lean so hard into the player being more of a “trickster” than a “warrior” that it became routine in this era for weapons to be red herrings. The one famous D&D campaign whose gameplay matched this sense was Tomb of Horrors, so it doesn’t surprise me to see two explicit references (there may have been more general inspiration elsewhere).

Let’s get back to that Sol-20 game.

Map from impomatic.

The map is divided into a north area and a south area; the north area has a maze of passages “all different” and the south area has a maze of passages “all alike” (where a thief resides, and likely is meant to be the Zork thief). The problem is both mazes are, as I stated in my previous post, literally unmappable.

You cannot drop items (they get teleported away), and there are no sound clues or other messages. You might ask: how did the walkthrough (by benkid77) manage? By hacking the binary code of the game.

Each maze is a single room. There’s a series of five bytes giving the answer to maze 1 and six giving an answer to maze 2. There’s no representation of movement; the game simply checks the last five (or six) directions taken, and if they match the answer, the player is moved to the exit.

The part of impomatic’s map with the link to Maze 2, with the thief. There is no map of the maze because a.) there aren’t even any “rooms” in the normal sense and b.) benkid99 hadn’t done his hacking yet when this map was made.

Letting benkid77 take over:

There are three routes out of the first maze and two out of the second maze.
Four out of the five have been shown in the walkthrough above. For completeness, the fifth is from maze 1:- U, W, D, S, S -> Low east-west passage. But this was surplus to requirements.

The 32 maze route and destination bytes are found at game file offset (and therefore memory location) 0BA0:

Maze 1, the “all different” maze:-
0BA0:
02 02 02 02 02 16
S, S, S, S, S -> Witt’s End

0BA6:
01 03 06 02 0A 13
N, E, D, S, SW -> Big Junction

0BAC:
05 04 06 02 02 0A
U, W, D, S, S -> Low east-west passage

Maze 2, the “all alike” maze:-
0BB2:
02 03 02 03 02 03 2A
S, E, S, E, S, E -> Passage (to the east of Flame Room)

0BB9:
07 05 04 01 06 04 26
NE, U, W, N, D, W -> Thief’s Lair

He goes on to ask “how the player would find these routes without disassembling the game.”

The odds are astronomically unlikely to stumble upon the correct sequences and usual mapping methods do not work here. I wonder if there may have been some additional documentation or hints accompanying the game, or some other clues I might have missed?

The “some other clues” is the kicker here: does anyone want to give it a try? You’ll likely need to play the game or at least watch the video of the complete walkthrough (meaning this is not something I expect people to solve in five minutes in the comments, but you never know). Even if there really is no answer (maybe the author had a plan but never finished; keep in mind this is an “unpublished” game) I still thought this was worth highlighting for how outrageous the setup is.

Coming up: a story that begins in the depths of WW2.


Choice of Games LLC

Dawn of Heroes—Don’t quit your day job, hero.

Hosted Games has a new game for you to play! Earth. Modern day. Superpowers exist only in myth, stories, and movies. One night, a freak storm breaks over the City of Ryker and changes everything. Superpowers now rise in the shadows for both the valiant and the wicked. All heroes have an origin story–shape yours as a conspiracy threatens the city. Dawn of Heroes is 40% off until April 9th! C. Claymo
Dawn of Heroes

Hosted Games has a new game for you to play!

Earth. Modern day. Superpowers exist only in myth, stories, and movies. One night, a freak storm breaks over the City of Ryker and changes everything. Superpowers now rise in the shadows for both the valiant and the wicked. All heroes have an origin story–shape yours as a conspiracy threatens the city.

Dawn of Heroes is 40% off until April 9th!

Dawn of Heroes is a 450,000-word interactive novel by C. Claymore. It’s entirely text-based, without graphics or sound effects, and fueled by the vast, unstoppable power of your imagination.

  • Play as male, female, or nonbinary; gay, straight, bi, or asexual.
  • Romance a street-level vigilante, an insecure mage, a master thief, a co-worker, or several others.
  • Choose your character’s hero costume.
  • Decide your character’s powers – then customize the powers’ advantages and limitations.
  • Choose your character’s career outside of their hero work.
  • Join a team of heroes ranging from non-powered to a god.
  • Discover a threat that endangers everything your character knows.

Will you rise from the ashes of Ryker or prevent the fire from burning it down?

C. Claymore developed this game using ChoiceScript, a simple programming language for writing multiple-choice interactive novels like these. Writing games with ChoiceScript is easy and fun, even for authors with no programming experience. Write your own game and Hosted Games will publish it for you, giving you a share of the revenue your game produces.


Renga in Blue

Epic Hero #2, Dungeon of Derojhen: Final Judgement

I’ve defeated the game; my previous posts are needed to understand this one. First of all: it was a short hop to defeating the vampire master (and both John Myers and Rob guessed the answer more or less). I was thinking in particular about how there’s no pause (RNG or otherwise) like there was for […]

I’ve defeated the game; my previous posts are needed to understand this one.

For reasons I’ll get into, I believe some inspiration came from here. Source.

First of all: it was a short hop to defeating the vampire master (and both John Myers and Rob guessed the answer more or less). I was thinking in particular about how there’s no pause (RNG or otherwise) like there was for the regular vampire: you open the coffin, you’re dead. This suggested a “preparation puzzle” as opposed to some particular action that’s needed, and based on all the items of the game, the only one that seemed like it might beat an enemy “passively” was the Mirror of Neo-Madness. Hence:

It didn’t occur to me immediately — I would have thought of vampires as already insane — but at least I could see the logic. Searching in the coffin reveals “Galdimus”; even without looking I knew I had a sword, so I knew what to do next.

Well, somewhat. Even with the shield and the sword you can lose! It’s just RNG, but given my antics with the wandering vampire that could kill you between 0 and 99 turns I figured that might be the case.

In a game without a save game facility (like Seiko’s Adventure) having an RNG-dependent death at the very end of a game is automatically a bad move; here at least you can save. (I wasn’t thrilled about it, but it wasn’t catastrophic to either the gameplay or my mood.)

Once you actually kill the guard (see below)…

…you get some red dust, which then converts into a red orb (“a diameter of about two inches”) when you look at it.

Last time we had put a glass ball (“about two inches in diameter”) into a hole to get an item. This is just re-using the same hole. (Item re-use is always satisfying, even when it’s simple, and the size is a good indicator that the magic is being used in parallel.)

Now we can unlock Final Judgement and win, right?

The game says “Surprise!” and a “Grinning Skeleton” appears in the room description. After KILL SKELETON:

You move in to attack
with your sword ….
The skeleton chops down with his saber ….
…. you shatter its sword with a deflection from GALIDIMUS!
It shoots a fire ball at you ….
and kills you!

This is the part that I think might be derived from Tomb of Horrors. Amongst the traps of the game is a room with three chests: gold, silver, and wood. The wood one has a skeleton.

It’s not exactly the same; it uses scimitars rather than a saber, but it is resistant to bladed attack (like this game implied), and holy water is useful in both incarnations (as you’ll see in a moment). For this game’s version, you need a set of objects to fend off a series of attacks: saber, fireball, curse, and finally death gaze. It’s a little like the Babel Fish puzzle of Hitchhiker’s but with everything done in one shot. This has the downside it is easy to beat by accident, but the inventory limit means you probably dropped one of the important items before arriving here.

Holding the sword, shield, vial of holy water, and mirror: victory! In the chest is the Jewel of Derojhen, which now can be taken to King Brion.

This might be the most I’ve enjoyed myself on an experimentalism-based game where magic is at play. My main frustration with magic has been a fundamental lack of logic; you wave some items at an arbitrary point to cause an arbitrary action. Even though you couldn’t find out the sequence of the Final Judgement skeleton without dying to it (unless you get lucky) the response to a particular attack wasn’t unreasonable; I got cursed, thought about the items I had laying about, and immediately latched onto the holy vial as useful. (This is using the “fan fiction shortcut” to be fair, knowing that holy water and the undead don’t mix.) Similarly, the death gaze made me think of re-using the mirror for “bouncing” even though it already got used once for the madness quality. The effects of various colors was completely unclued, but not unclued in a way that required checking across the map (like The Hermit’s Secret requiring magic words at unexpected points). The experimentation was self-contained.

If I was playing this on a computer that had slow save/reload I might be a bit more annoyed about all the above.

This compares quite favorably to the Howarth games (I think Arrow of Death Part 2 was a little better due to clever geography design, and it’s on par with The Time Machine). Scott Adams still inches above with clever use of daemons which doesn’t happen here; there are no persistent effects (like rooms that change over time) to deal with or coordinate. However, given this is still only game number 2 from Leduc we may still see something like that in the future.

Coming up: some unfinished business, followed by Japan and then Ireland. This will be the first time Ireland has featured on this blog.

Wednesday, 01. April 2026

My So Called Interactive Fiction Life

Sharpee Audio now Available

Overview Sharpee stories can emit audio events that clients render as sound effects, background music, and ambient soundscapes. Audio is optional — text clients ignore audio events, and stories without audio are unaffected. The audio system follows the sam

Overview

Sharpee Audio now Available

Sharpee stories can emit audio events that clients render as sound effects, background music, and ambient soundscapes. Audio is optional — text clients ignore audio events, and stories without audio are unaffected.

The audio system follows the same separation as text: stories emit intent, clients render output. Stories never reference Web Audio APIs or browser globals. They describe what should be heard; the client decides how to play it.

Audio Categories

SFX — One-shot, fire-and-forget. Door opening, item pickup, weapon fire.

Music — Single active track with crossfade transitions. Exploration theme, combat music.

Ambient — Multiple named channels, layered loops. Wind, rain, machinery hum.

Quick Start: Direct Events

The simplest way to add audio is emitting events directly from action handlers or event handlers:

import { createTypedEvent } from '@sharpee/core';
import '@sharpee/media'; // Activates type-safe audio events

// Sound effect
createTypedEvent('audio.sfx', {
  src: 'sfx/door-open.mp3',
  volume: 0.8,
});

// Background music
createTypedEvent('audio.music.play', {
  src: 'music/exploration.mp3',
  volume: 0.5,
  fadeIn: 1000,
  loop: true,
});

// Ambient layer
createTypedEvent('audio.ambient.play', {
  src: 'ambient/wind.mp3',
  channel: 'weather',
  volume: 0.3,
  fadeIn: 2000,
});

All event data is compile-time checked. Missing required fields or typos produce TypeScript errors.

AudioRegistry: Centralizing Sound Design

Direct events work, but they scatter sound design details (file paths, volumes, jitter) across your story code. The AudioRegistry centralizes all audio configuration in one place. Actions and handlers reference names only.

Setting Up the Registry

Create an audio registration file and populate the registry during world initialization:

import { createTypedEvent } from '@sharpee/core';
import { AudioRegistry } from '@sharpee/media';

export function createAudioRegistry(): AudioRegistry {
  const audio = new AudioRegistry();

  // Simple cues — each is a factory
  // returning a fresh event

  audio.registerCue('door.open', () =>
    createTypedEvent('audio.sfx', {
      src: 'sfx/door-open.mp3',
      volume: 0.8
    })
  );

  audio.registerCue('item.pickup', () =>
    createTypedEvent('audio.sfx', {
      src: 'sfx/pickup.mp3',
      volume: 0.6,
      duck: 1
    })
  );

  audio.registerCue('puzzle.solved', () =>
    createTypedEvent('audio.sfx', {
      src: 'sfx/puzzle-chime.mp3',
      volume: 0.9,
      duck: 2
    })
  );

  // Variation pools — multiple files for one
  // logical sound. Random selection + jitter
  // prevents repetition fatigue.

  audio.registerPool('footstep.stone', {
    sources: [
      'sfx/step-stone-1.mp3',
      'sfx/step-stone-2.mp3',
      'sfx/step-stone-3.mp3',
    ],
    volume: 0.5,
    volumeJitter: 0.1,
    pitchJitter: 0.05,
  });

  return audio;
}

Using Cues in Actions and Handlers

Once registered, fire cues by name. The registry resolves names to events:

world.registerEventHandler(
  'if.event.opened',
  (event, world) => {
    const events = audio.cue('door.open');
    // Returns ISemanticEvent[]
  }
);

Resolution order:

  1. Named cues (exact factory)
  2. Variation pools (random selection + jitter)
  3. Empty array (silent degradation if not registered)

Registering Room Atmospheres

Use the fluent AtmosphereBuilder to define what a room sounds like:

// Cave with dripping water, wind, and reverb
audio.atmosphere('my-story.room.cave')
  .ambient(
    'ambient/dripping.mp3', 'water', 0.3)
  .ambient(
    'ambient/wind-low.mp3', 'wind', 0.15)
  .effect(
    'reverb', 'master',
    { decay: 3.0, mix: 0.4 })
  .build();

// Tavern with crowd noise and music
audio.atmosphere('my-story.room.tavern')
  .ambient(
    'ambient/crowd-murmur.mp3', 'crowd', 0.4)
  .ambient(
    'ambient/fireplace.mp3', 'fire', 0.2)
  .music('music/tavern-jig.mp3', 0.3)
  .build();

// Quiet forest — ambient only
audio.atmosphere('my-story.room.forest')
  .ambient(
    'ambient/birds.mp3', 'wildlife', 0.25)
  .ambient(
    'ambient/leaves.mp3', 'wind', 0.15)
  .build();

Retrieve and apply atmospheres when the player moves:

world.registerEventHandler(
  'if.event.actor_moved',
  (event, world) => {
    const roomId = event.data.destinationId;
    const atmo = audio.getAtmosphere(roomId);
    if (!atmo) return;

    const events: ISemanticEvent[] = [];

    // Stop current ambient, start new layers
    events.push(
      createTypedEvent(
        'audio.ambient.stop_all',
        { fadeOut: 1000 })
    );

    for (const layer of atmo.ambient) {
      events.push(
        createTypedEvent('audio.ambient.play', {
          src: layer.src,
          channel: layer.channel,
          volume: layer.volume,
          fadeIn: 2000,
        })
      );
    }

    if (atmo.music) {
      events.push(
        createTypedEvent('audio.music.play', {
          src: atmo.music.src,
          volume: atmo.music.volume,
          fadeIn: 1000,
        })
      );
    }

    if (atmo.effect) {
      events.push(
        createTypedEvent('audio.effect', {
          target: atmo.effect.target,
          effect: atmo.effect.effect,
          params: atmo.effect.params,
          transition: 2000,
        })
      );
    }

    return events;
  }
);

Ducking

When a high-priority sound fires (combat hit, critical alert), background audio temporarily ducks so the important sound cuts through the mix.

audio.setDucking({
  duckVolume: 0.3,
  attackMs: 80,
  releaseMs: 400,
  targets: ['music', 'ambient'],
});

Ducking priority is set per-SFX via the duck field (0–3):

0 — Background SFX. No ducking.

1 — Normal gameplay. Subtle duck.

2 — Important feedback. Moderate duck.

3 — Critical alerts, combat. Aggressive duck.

Procedural Audio

Stories can request synthesized sounds without audio files. The client generates them using Web Audio oscillators and noise sources:

createTypedEvent('audio.procedural', {
  recipe: 'beep',
  params: {
    frequency: 440,
    duration: 200
  },
  volume: 0.7,
});

createTypedEvent('audio.procedural', {
  recipe: 'alert',
  params: {
    frequency: 800,
    interval: 300,
    count: 3
  },
  volume: 0.8,
  duck: 2,
});

Built-in recipes clients should support: beep, alert, sweep-up, sweep-down, static, hum. Stories can use any string — unknown recipes are silently skipped.

Audio Effects

Apply processing effects to parts of the audio mix. Clients may support these — stories request them as hints:

// Cave reverb on all audio
createTypedEvent('audio.effect', {
  target: 'master',
  effect: 'reverb',
  params: { decay: 2.5, mix: 0.3 },
  transition: 2000,
});

// Muffle ambient sounds (behind a wall)
createTypedEvent('audio.effect', {
  target: 'ambient:environment',
  effect: 'lowpass',
  params: { frequency: 800, q: 1 },
});

// Clear all effects
createTypedEvent('audio.effect.clear', {
  target: 'master',
  transition: 1000,
});

Available effects: reverb, lowpass, highpass, distortion, delay.

Fade Defaults

Override the default fade durations used by atmosphere transitions:

audio.setFadeDefaults({
  ambientIn: 3000,
  ambientOut: 2000,
  musicIn: 1500,
  effectTransition: 2000,
});

Client Capabilities

Clients declare what they support at session start. Stories can check before emitting events:

import type {
  AudioCapabilities
} from '@sharpee/media';

const capabilities: AudioCapabilities = {
  sfx: true,
  music: true,
  ambient: true,
  procedural: false,
  effects: false,
  formats: ['mp3', 'ogg'],
};

Player Preferences

Clients persist player audio settings to localStorage:

import type {
  AudioPreferences
} from '@sharpee/media';

const prefs: AudioPreferences = {
  enabled: true,
  masterVolume: 0.8,
  sfxVolume: 1.0,
  musicVolume: 0.5,
  ambientVolume: 0.7,
  sfxMuted: false,
  musicMuted: false,
  ambientMuted: false,
};

Audio File Organization

Place audio assets under your story's assets directory:

stories/my-story/
  assets/
    audio/
      sfx/
      music/
      ambient/

All src paths in audio events are relative to assets/audio/.

Summary

Direct createTypedEvent — One-off sounds, prototyping.

AudioRegistry cues — Reusable sounds referenced by name.

Variation pools — Sounds that need variety (footsteps, impacts).

AtmosphereBuilder — Room-level ambient soundscapes.

Procedural recipes — UI feedback, alerts without audio files.


Interactive Fiction – The Digital Antiquarian

The Mystery of Rennes-le-Château, Part 3: A Secret History

This series of articles chronicles the history, both real and pseudo, behind Gabriel Knight 3: Blood of the Sacred, Blood of the Damned. Henry Lincoln promised at the end of “The Priest, the Painter, and the Devil” that he would continue to investigate the case of François-Bérenger Saunière and Rennes-le-Château. He proved as good as […]

Le Tour Magdala. (Zewan)


This series of articles chronicles the history, both real and pseudo, behind Gabriel Knight 3: Blood of the Sacred, Blood of the Damned.

Henry Lincoln promised at the end of “The Priest, the Painter, and the Devil” that he would continue to investigate the case of François-Bérenger Saunière and Rennes-le-Château. He proved as good as his word. Over the next several years, he sidled steadily further away from his screenwriting career to dig his way deeper and deeper down the rabbit hole. By now, he had inherited from Gérard de Sède the mantle of chief spokesman for this fast-evolving modern mythology, just as Sède had once taken over from Noël Corbu. For Lincoln had not only energy and passion and an uncanny talent for making the outlandish sound reasonable on his side, but the ability to communicate fluently in both French and English. This made him the ideal figure to bring this French story to the larger English-speaking world.

Lincoln pulled a couple of other men from his side of the language divide into the rabbit hole along with him. At a British writing retreat in August of 1975, he met a 32-year-old aspiring novelist from the United States named Richard Leigh, the proud possessor of a freshly minted PhD from Stony Brook University and a burning passion for James Joyce and Marcel Proust. His love for those labyrinthine writers may help to explain why he found Lincoln’s stories of equally obscure and many-tendriled centuries-spanning conspiracies so compelling. (It may also be relevant to note that Proust himself was deeply interested in the Merovingian dynasty, whom he romanticized and celebrated as the forefathers of all things French.) Leigh in turn brought into the fold a photographer from New Zealand named Michael Baigent, who was not yet 30 years old but had already lived through more adventures than many another person experiences in a lifetime, traveling around the globe and taking pictures of everything from war zones to fashion models. This trio of Lincoln, Leigh, and Baigent would show themselves to be formidable myth-makers indeed, capable of driving Rennes-le-Château right into the heart of the popular consciousness.

The two Chronicle episodes on Rennes-le-Château had been big ratings successes by the usual standards of the documentary series, even if they had caused some of the more sober minds involved with the program to turn up their noses a bit. The BBC was more than happy for Lincoln to make a third episode once he thought he was ready. He and his two new partners spent a few years trying to wrestle the amorphous mass of evidence they were collecting into some kind of coherent shape suitable for a one-hour television program. But the real coup came courtesy of a doubtless underpaid Chronicle research assistant named Jania Macgillivray, who was able to put Lincoln in touch with an obscure Frenchman with a grandiose name: Count Pierre Plantard de Saint-Clair.

Lincoln had first seen the name of Plantard years ago, when it turned up in the Lobineau dossier as the one by which Sigebert’s branch of the Merovingian line had been known after the last king of the mainline dynasty had been deposed in Paris in 751. Not long after sending the Lobineau papers, Sède had loaned Lincoln a clutch of photographs of Bérenger Saunière. On the back of each was a purple stamp that read “Plantard,” as if they had come from the personal collection of a man by that name. Chasing down these leads, Lincoln found that one Pierre Plantard featured prominently in Sède’s 1962 book about the Knights Templar in the role of a “hermeticist,” scattering hints hither and yon that the Knights had not been completely destroyed in 1307, as historians believed; no, they had lived on in some form or fashion, influencing or even controlling world events as part of a hidden network of secret societies. Pierre Plantard’s name was conspicuously absent from Sède’s 1967 book on Rennes-le-Château proper, but if anything this only made Lincoln more suspicious that it had been him who who had sent Sède the Altar Documents in 1964, him who he had been silently guiding Sède’s hand ever since. Lincoln, who seems never to have overcome a certain early contempt for Sède that was raised by his spotting a secret message that his French counterpart did not, was eager to cut out the middle-man.

Henry Lincoln with Pierre Plantard in the 1980s.

And so on a windy late morning in Paris in March of 1979, Lincoln, Baigent, and Leigh met Pierre Plantard face to face for the first time, in a movie theater the BBC had rented for the occasion. Already before the meeting began, any pretense that Plantard was a mere informant had been dropped. He appeared as the avowed current Grand Master of the Priory of Sion, the latest in a roll call of names that included Leonardo da Vinci, Isaac Newton, and Claude Debussy. In addition, he was the direct descendant of the Merovingian line which had ruled the kingdom of the Franks from 481 to 751.

Lincoln was thoroughly entranced by Plantard, who showed up fashionably late, accompanied by a small entourage presumably made up of other members of the secret order.

M. Plantard proved to be a dignified, courteous man of discreetly aristocratic bearing, unostentatious in appearance, with a gracious, volatile but soft-spoken manner. He displayed enormous erudition and impressive nimbleness of mind — a gift for dry, witty, mischievous but in no way barbed repartee. There was frequently a gently amused, indulgent twinkle in his eyes, almost an avuncular quality. For all his modest, unassertive manner, he exercised an imposing authority over his companions. And there was a marked quality of asceticism and austerity about him. He did not flaunt any wealth. His apparel was conservative, tasteful, insouciantly informal, but neither ostentatiously elegant nor manifestly expensive. As far as we could gather, he did not even drive a car.

Lincoln addressed Plantard with no trace of irony as the roi perdu: the “lost king.”

The first order of business was a screening of “The Priest, the Painter, and the Devil”; this was the reason the meeting took place in a theater. (The program was overdubbed in French for the benefit of Plantard, who for all of his “enormous erudition” neither spoke nor understood any English.) Then the negotiations as to the rules of engagement began.

M. Plantard made it clear to us that he would be saying nothing whatever about the Prieuré de Sion’s activities or objectives at the present time. On the other hand, he offered to answer any questions we might have about the order’s past history. And although he refused to discuss the future in any public statements — on film, for instance — he did vouchsafe us a few hints in conversation. He declared, for example, that the Prieuré de Sion did in fact hold the lost treasure of the Temple of Jerusalem — the booty plundered by Titus’ Roman legions in AD 70. These items, he stated, would be “returned to Israel when the time is right.” But whatever the historical, archaeological, or even political significance of the treasure, M. Plantard dismissed it as incidental. The true treasure, he insisted, was “spiritual.” And he implied that this “spiritual treasure” consisted, at least in part, of a secret. In some unspecified way the secret in question would facilitate a major social change. M. Plantard [stated] that, in the near future, there would be a dramatic upheaval in France — not a revolution, but a dramatic change in French institutions that would pave the way for the reinstatement of a monarchy. This assertion was not made with any prophetic histrionics. On the contrary, M. Plantard simply assured us of it, very quietly, very matter-of-factly — and very definitely.

The mystery of Rennes-le-Château had started out in the mid-1950s as a simple treasure hunt, the ultimate get-rich-quick scheme. In the late 1960s, it had become far more intimately intertwined with history, promising to revise much of our understanding of the past. And now, at the end of the 1970s, it was beginning to take on a freshly and even urgently contemporary cast, as an ongoing conspiracy that was acting right now to change the direction of current events. And the man behind the proverbial curtain was, it was becoming increasingly clear, Pierre Plantard.

For all that, though, Plantard was certainly not ready to let himself be pinned down on any specifics. He met three times with Lincoln and his friends in 1979, submitting to an on-camera interview during the last of these meetings. Yet Lincoln had to admit that “after three meetings with M. Plantard and his associates we were not significantly wiser than we had been before.” Of course, there is reason to ask at this point who was really using whom. The fact was that Henry Lincoln, a well-connected man who was obviously taken with him, represented a golden opportunity for Plantard to get his message out all over the world. After the meetings in Paris, Plantard severed the last of his ties to Sède and began to communicate primarily through Lincoln. On his side, Sède took this rejection with no good grace. He would eventually join the side of the skeptics and try to debunk the Priory of Sion and the rest of the conspiracy theories around Rennes-le-Château, but these efforts would get less traction than his earlier ones. Many another, more credible writer who has tried to bring a dose of sanity to these subjects has had to swallow the same bitter pill. People crave the legend, not the truth.


The third episode of Chronicle to deal with Rennes-le-Château aired in Britain on November 27, 1979, under the name of “The Shadow of the Templars.” With this third outing, any semblance of this being a normal episode of the show is gone. This is a Henry Lincoln joint from first to last — a chronicle, if you will, of one man’s very personal quest. Other than a few minutes of interview footage of Pierre Plantard, Lincoln’s voice is literally the only one we hear, his face the only living one we ever see up close.

Indeed, the most interesting aspect of the episode in some ways is the psychology of Henry Lincoln as he wanders ever further into a hall of mirrors that is increasingly of his own making. If he isn’t a true believer, he’s one hell of an actor. “I’ve chased many a false lead, leapt to many a deceptive conclusion, been blinded by ingenious smokescreens, by clues strewn by others to conceal one astonishing and simple truth,” he says. He is correct, as far as it goes — but sadly, the simple truth at the heart of the case is not the one that Lincoln so fondly imagines. To paraphrase Fox Mulder, Henry Lincoln desperately wants to believe. That’s a dangerous place from which to start any investigation of history.

Just as I looked at some of the core documents behind the conspiracy theories of Rennes-le-Château in some depth in my last article, I think it makes sense to examine this program rather closely in this one. For we are now on the verge of what will become the mature mythology of Rennes-le-Château. There is only one really important point — admittedly, the most important one of all — that is still only hinted at in “The Shadow of the Templars.”

Instead of making yet another beeline for Rennes-le-Château and Bérenger Saunière, we start this time with a reasonably accurate summary of the history of the Knights Templar, who are correctly described as a chivalrous order of “fighting monks” that was founded in Jerusalem in 1118, when the city was in the hands of European Crusaders. After achieving impressive heights of power and influence, the Knights were brutally dissolved by King Philip IV of France in 1307. But Lincoln is on less firm ground when he strongly implies that the Knights may have dug up King Solomon’s legendary treasure in Jerusalem during their first few years of existence, and that this became the wellspring if not the sum total of their eventual daunting wealth.

He does admit that the French crown owed embarrassing sums of money to the Knights Templar by the time of Philip IV. (The most careful readers among you may remember that this same financially-troubled king was cited as proof of Noël Corbu’s original theory of the treasure of Rennes-le-Château; tropes do tend to cycle around and around inside the mirrored halls of conspiracy theorists, continually popping into view again where you least expect them.) Yet Lincoln finds it weirdly difficult to understand why King Philip and his cronies might have accused the avowedly pious Knights of “denying Christ” and “spitting on the cross,” implying some other reason for casting these aspersions than that of simply needing an excuse to do away with them. In reality, charges of sacrilege and black magic were practically par for the course when the overlords of Europe decided that a group like this one had become inconvenient.

There is no evidence in the historical record that King Philip believed the Knights Templar to be in possession of some singular treasure that he was unable to find after their destruction, as Lincoln claims. To put the subject in modern terms, it is better to think of destroying the Knights as akin to destroying a major multi-national bank, not the ransacking of a dragon’s hoard. There is wealth there, yes, but it comes for the most part in the form of contracts and infrastructure and credit and loans and investments, not in that of a giant pile of gold sitting there ripe for the taking. Ironically, Lincoln himself credits the Knights with doing much to invent modern banking.

A golden triangle.

A pentagon formed from two golden triangles.

Now we abruptly transition back to the Languedoc. In “The Priest, the Painter, and the Devil,” Lincoln broached the idea that a pentagon could be found hidden in the Nicolas Poussin painting The Shepherds of Arcadia, which Lincoln believed to depict a tomb located near Rennes-le-Château. Continuing on the geometrical tip, he tells us now that three elevated castles in the area form a golden triangle, one whose sides make two angles of 72 degrees and one of 36 degrees. On its own, such a shape is fraught with significance in certain occult traditions, for two of these golden triangles can be superimposed upon one another to create a pentagon, an even more powerful shape. The three castles in question, all of which are now in ruins, are the one that lent its name to Rennes-le-Château; the Château du Bézu, a former Knights Templar fortress; and the Château de Blanchefort, built by the same family who built or at least occupied the castle of Rennes-le-Château. (You will remember that we spent much time with the gravestone of Marie de Nègre d’Ables, the last Marquise de Blanchefort, in our last article.) A little outside fact-checking will confirm for us that these three castles really do form a golden triangle, to an error tolerance of less than five percent.

One Bertrand de Blanchefort provides Lincoln with the historical glue he needs to bind the three castles together: Bertrand was Grand Master of the Knights Templar from 1156 to 1169. Sadly, though, this time a fact-checker is not Lincoln’s friend, for the truth is that this Bertrand de Blanchefort is actually not a member of the Blanchefort family from the Languedoc. In their eagerness to draw the connections that suit them, conspiracy theorists are often confused by simple coincidences of nomenclature like this one.

Lincoln now leaps even further back in time, to Dagobert II, the Merovingian king of the Franks for a few years in the seventh century. His infant son Sigebert was, Lincoln believes, spirited away from Paris to the Languedoc for safekeeping after his father was assassinated. (See my last article if you need a refresher on this claim.) In a first hint of a bombshell which he will drop in full only a few years later, Lincoln tells us portentously that “the Merovingians were not anointed kings, but kings by virtue of their blood.” He says that all members of the line displayed an unusual birthmark in the shape of a rose-red cross. (This assertion doesn’t appear in any accepted historical records from the period.) Qualifiers like “supposedly” gradually fall away from the narrative, as we are told that Sigebert was hidden away in Rennes-le-Château, or Rhedae as it was then known, because it was the childhood home of Dagobert’s queen. (The truth is that we have no historical record of Dagobert’s queen, presuming she even existed; nor is there is any good reason to connect the Visigoth town of Rhedae with Rennes-le-Château.) Sigebert grew to noble manhood in the Languedoc much like Wart in the Castle Sauvage of T.H. White’s The Sword in the Stone, and the Merovingian line was carried on in secret.

We are told that Godfrey of Bouillon, a leader of the First Crusade who became the first Christian king of Jerusalem after the city was conquered in 1099, was of this Merovingian blood. Lincoln says that he has found “a document” — no other details are provided — that connects the selection of Godfrey for that throne to an organization called the “Order of Our Lady of the Mount of Sion.” Then he goes on to connect the same organization to the formation of the Knights Templar nineteen years later. Fact-check time: an Order of Sion does appear on a few authenticated documents from the twelfth century, indicating that some sort of organization by that name really must have existed. But we now know that all of the other, otherwise unsubstantiated claims that Lincoln makes about it and about the Merovingian line stem from the Lobineau dossier that dates no further back than the mid-twentieth century.

These same documents state that the Order of Sion decided to separate itself from the Knights Templar after Jerusalem was recaptured by a Muslim army in 1187, partially thanks to the Knights’ growing arrogance and foolishness. It was at this point that the Order of Sion renamed itself the Priory of Sion. Reading the roll call of subsequent Grand Masters of the Priory, Lincoln flirts with a moment of clarity: “Some of these names are so illustrious that the list seemed just the sort of grandiose pedigree that would be created for itself by a lunatic-fringe body of eccentrics playing at secret societies.” But he turns away from the brink of sanity: “It’s all too easy to make assumptions, and not to keep an open mind.” (The first part of this statement at least is true…)

We touch upon the Rosicrucians, a Christian movement with occult overtones which swept across Europe during the early seventeenth century. The name means “rose-red cross,” which cannot be a coincidence.  And sure enough, the Lobineau dossier lists Johannes Valentinus Andreae, a German theologian who was one of the leading voices behind the movement, as one of the Grand Masters of the Priory of Sion. Lincoln finds pictures of rose-red crosses and other, more veiled references to the Priory and the Rosicrucians in and around Bérenger Saunière’s church.

And now we come at last to the moment we have been waiting for, by far the most fascinating point in the episode. We meet Pierre Plantard, the only person other than Henry Lincoln who is ever allowed to speak to us, whom Lincoln sincerely believes to be not only the current Grand Master of the Priory of Sion but the scion of the Merovingian dynasty, those once and possibly future kings of France. Plantard appears much as Lincoln described him earlier in this article: slim, neatly dressed, coolly avuncular, and thoroughly Gallic, with a slyly mischievous glint in his eyes that can be read in different ways, depending on your opinion as to his trustworthiness. For once we can be fully in agreement with Lincoln when he posits that this man is the real key to the mystery.

Monsieur Plantard, is there still a secret at Rennes-le-Château?

The secret is not only at Rennes-le-Château, it is around Rennes-le-Château.

Will the treasure of Rennes-le-Château ever be found?

Here you are speaking of a material treasure. We are not talking of a material treasure. Let us say, quite simply, that there is a secret in Rennes-le-Château and that it is possible there is something else around Rennes-le-Château.

And how does Poussin fit into the story?

To be seen in Poussin’s painting are certain revelations. Poussin was an initiate, and therefore created his painting as an initiate. But he was not the only one in this story. There are other characters. In artistic expression, the truth is concealed and one uses symbolism.

Tell us whether the Priory of Sion exists today.

At this moment, Sion still exists. One of its recent members — one of the last Grand Masters — was Jean Cocteau. Everyone knows this.

Monsieur Plantard, over the centuries you have — how shall I put it? — supported the Priory of Sion?

We have supported Sion and Sion has supported us.

We? Who are we?

We — I am speaking of the Merovingian line, for our line descended from Dagobert II. The Merovingians, it was they who made France. Without them there would be no France. The Capetians and the Carolingians followed on from the Merovingian line. The Merovingians represent France.

With that, Pierre Plantard disappears from our screen again. Lincoln could get nothing more concrete out of him.

Instead he returns to mystical geometry; by now, the episode’s organizing principle seems to have become Henry Lincoln’s stream of consciousness. We are reintroduced to the idea of a pentagon hidden in Poussin’s Shepherds of Arcadia. Lincoln mentions a letter written by Louis Fouquet, the French finance minister under King Louis XIV and a known friend of Poussin, to the minister’s brother in 1656, the year after the painter completed the work in question. This letter is genuine, and may be worth quoting here at greater length than Lincoln does in the interest of full disclosure.

[Poussin] and I have planned certain things, of which I shall be able to talk to you in depth, which will give you by M. Poussin advantages (if you do not wish to despise them) that kings would have great difficulty in drawing from him, and that after him perhaps no one in the world will ever recover in the centuries to come. And what is more, that could be done without much expense and could even turn to profit, and these things are so hard to discover that no one, no matter who, upon this earth today could have better fortune or perhaps equal.

Some have wondered whether this elliptical missive might refer to the creation of forgeries, as potentially lucrative a practice back then as it remains today. Louis Fouquet may not have been the most ethical character: he was convicted of embezzlement and sentenced to life in prison in 1661, although it’s difficult to know how much of the charge was real and how much was the work of his enemies at court. Then, too, Poussin would hardly have been the only great artist to have been tempted to the dark side: Michelangelo among others got his start in just this way. Still, forgery does seem a strange practice for Poussin to have engaged in at this point in his career, when he was a much-lauded artist whom the pope and the French king openly squabbled over, one who was perfectly capable of selling as many paintings as he could create under his own name at a handsome profit. All told, then, the letter presents a puzzle, but it’s hard to say that it really proves anything about The Shepherds of Arcadia absent other, corroborating evidence.

Lincoln now informs us that he has returned to his studies of the landscape around Rennes-le-Château, and has identified two more promontories — known as La Soulane and Serre de Lauzet — that turn his golden triangle into a pentagon. Although he’s not wrong about the figure he maps out, it shouldn’t be forgotten that he is examining the foothills of a major mountain range, a landscape whose defining feature is its many peaks and valleys; there are a lot of promontories to pick and choose from. Meanwhile what Lincoln wishes to infer from all of this remains frustratingly opaque. His two latest promontories sport no human-made structures from the past or present, leaving us with nothing more than the fact of the topographical coincidence. Does Lincoln intend to imply that God himself sculpted the landscape around Rennes-le-Château to send us a message or otherwise to serve his purposes somehow? That would be plot inflation indeed.

Pierre Plantard now pops up for the second and last time. “The geometry is pentagonal, isn’t it?” Lincoln asks him.

Plantard seems to be at a loss for a second or two. Then he smiles his enigmatic smile. “I can’t answer that,” he says.

This is, I think, a moment worth reflecting upon.

In later years, Lincoln wrote in some detail about his very first meeting with Plantard, the one that began with a screening of “The Priest, the Painter, and the Devil.” Among the associates or acolytes who accompanied Plantard to that meeting, he clearly had the most intimate friendship with a man named Philippe de Chérisey, whom we will meet again later. Lincoln:

The Grand Master and his acolytes watch the film with quiet concentration. Occasionally Plantard and de Chérisey’s heads incline together as they exchange a whispered comment. It is not until the film has almost reached its end that they show anything other than relaxed interest. But suddenly the two backs in front of me stiffen and M. Plantard sits upright, bending forward in concentration. But the image on the screen is a fleeting one. As it disappears, the two heads lean together again in a brief and vehement conversation. Touché! I have shown them something they weren’t expecting. The image, which has no explanatory text, is of the parchment [Altar Document 2] overlaid with the pentacle. Are they unaware of the existence of the geometry? Or are they simply surprised that I have found it out?

Some of the geometry which Henry Lincoln believed to have been deliberately hidden in Altar Document 2.

I think it most probable that they were unaware of it, although, once again, this would not necessarily mean what Lincoln wished it to mean. Lincoln had dutifully followed the trail of clues they had laid down for him, and had now arrived at the sweet spot of any conspiracy theory: he had begun to invent new facets of the mystery himself from whole cloth. The geometrical obsessions of the cult of Rennes-le-Château would spill across thousands of rambling pages in the years to come. Plantard merely gleaned where Lincoln was going and got out of his way. You can practically see this happening in real time when Lincoln asks him on camera about the significance of the pentagon of which Rennes-le-Château constitutes one point. “At that moment, M. Plantard could have said, ‘I don’t know what you’re talking about,’ or even, ‘There is no significance,'” Lincoln tells us. “But in a sense, his answer confirmed my suspicion that there was an importance attached to that symbol which I had yet to discover.” One can imagine Plantard’s self-satisfied smile as he sits back to watch Lincoln build new twisty little passages in which to lose himself.

From here, the program takes on more and more supernatural overtones, as Lincoln connects the Priory of Sion with the long history of alchemy, hermeticism, and the occult more generally — traditions to which many of those we think of today as foremost lights of rational science, such as Johannes Kepler and Isaac Newton, were very much in thrall. Lincoln explains, correctly, that the pentagon has long been linked to the planet Venus. From the standpoint of a terrestrial observer, Venus goes through five inferior conjunctions — meaning that it passes between the Earth and the Sun — in the course of every eight years. These conjunctions are quite obvious to anyone who pays even cursory attention to the sky: the planet goes from being the brightest object in the sky at sunset with the possible exception of the Moon to disappearing entirely for a few days to reappearing just as bright as before, only now at dawn. Marked on a map of the sky, one complete cycle of five inferior conjunctions forms a well-nigh perfect pentagon.

Venus was in turn the symbol of Mary Magdalene, the saint whom Saunière’s church was named after. It might perhaps be more convenient in some ways if Saunière himself had chosen that name, if a Church of Sainte Marie-Madeleine hadn’t existed in Rennes-le-Château for 700 years prior to his arrival, but needs must. Lincoln is encouraged that Saunière did choose to name the observation tower he built in the garden of his villa Le Tour Magdala, predictably failing to consider that he may have simply named the tower after the church.

So, the area around Rennes-le-Château must be a place of enormous supernatural importance, or at least a place that various shadowy groups throughout history have believed to be a locus of mystical power. Lincoln doesn’t explain how these groups would have spotted the pentagon hidden in its topography without benefit of aerial observation or modern measuring equipment. But he has at least decided that the fortune in gold fondly imagined by the likes of Noël Corbu probably doesn’t exist. Saunière, he thinks, became an initiate of the Priory of Sion through those documents he found hidden in his church. “The real treasure of Rennes-le-Château is a secret,” Lincoln says. This secret, whatever it is, is surely connected with the Merovingian bloodline. “What is so special about this royal bloodline that can ensure centuries of loyalty?” Lincoln asks. And that is where he leaves it, with the words “To Be Continued…” flashing subliminally if not literally.

The continuation would arrive barely two years later, but it would do so in a different format than yet another episode of Chronicle. For the evolving mystery of Rennes-le-Château had now outgrown the constraints of a workaday BBC documentary series in the opinion of its leading advocate.


Henry Lincoln (left) with Gérard de Sède (right) just before the latter punched the former in the face.

Lincoln’s first hope was to shoot a documentary feature film. “The notion of addressing the subject without the usual sobering constraints of the BBC’s more serious documentary approach seems appealing,” he said with his customary obliviousness to irony. He signed a contract with a London production house. But the project descended into squabbling when it became clear that the director was a more lurid sort of conspiracy theorist, more interested in Black Masses and sex orgies in the pews of Saunière’s church than the bloodline of the Merovingian dynasty and the vagaries of pentagonal geometry. Gérard de Sède was hired as a consultant to the film, turning up just long enough to punch Lincoln in the face for stealing Pierre Plantard from him. Meanwhile the producer was perpetually drunk and insisted on driving his cast and crew everywhere, a bad combination if ever there was one. The farce turned into a tragedy when this fellow keeled over dead from a brain tumor. It turned out that the relative sobriety of the BBC had its positive sides.

Suitably chastened by this experience, Lincoln, Leigh, and Baigent thought to write a book instead. After all, their theories were nothing if not complicated, so much so that they demanded the cooler, self-paced medium of text if one was ever to understand them thoroughly. The trio signed on with Jonathan Cape, one of the most respected publishing houses in Britain. The Holy Blood and the Holy Grail would not be the first book about Rennes-le-Château — a goodly number of others were already available in several languages, even setting aside the pioneering work of Sède — but it would present itself in avowedly scholarly tweed, almost audibly sniffing its nose at the tinfoil-hat brigade hanging out in their parents’ basements. This would be a weighty tome, both literally and metaphorically, the type of book that could make its subject matter an acceptable topic of drawing-room conversation among the chattering classes.

The spine of the book’s narrative is the same as that of “The Shadow of the Templars,” with the addition of a lot more detail and one last bombshell revelation, the same one that Lincoln was recently assiduously hinting at on camera. The secret that Saunière and so many others had sworn to protect was the true bloodline of the Merovingian dynasty. For Jesus, it turned out, had not been celibate as the Bible tells us, had in fact wedded and had children with Mary Magdalene before his crucifixion. In time, these children had begotten the Merovingian kings.

Mary Magdalene — who is not to be confused with the Virgin Mary, the mother of Jesus — has long punched well above her textual weight in Christian oral traditions. Biblical scholars believe that she  was called by that name because she came from a town known as Magdala, on the Sea of Galilee. She appears indubitably in the Bible only once prior to Jesus’s death: she is mentioned in passing in the Gospel of Luke as one of a group of female followers who gathered around the Son of God, who in his turn cast “seven demons” out of her. But according to all four of the canonical gospels, it was she who discovered that Jesus’s tomb was empty three days after the crucifixion and went out to spread word of the miracle. In a sense, then, she might have been the very first true Christian believer, as we understand that descriptor today.

Mary Magdalene appears more prominently in two of the so-called “apocryphal” gospels, those which were not included when the New Testament as we know it today was compiled in fourth-century Alexandria. In fact, she has an entire Gospel of Mary of her own, which has survived only in scattered fragments that were rediscovered during the nineteenth century. It is considered a Gnostic gospel, a part of the same mystical Christian tradition that was embraced by the Cathars of the Medieval Languedoc. These gospels tend to emphasize knowledge over narrative, and this one is no exception. At the beginning of the text, Saint Peter turns to Mary Magdalene at a gathering of Jesus’s disciples after his death and says, “Sister, we know that the savior loved you more than the rest of the women. Tell us the words of the savior which you remember — which you know but we do not.” Alas, most of Mary’s response is missing — but her audience’s response to her response is not. “Surely the savior knows her very well,” says the disciple Levi. “That is why he loved her more than us.”

The Gospel of Philip is another Gnostic gospel, one that was not rediscovered until 1945. It is even more fragmentary than the Gospel of Mary, being riddled with “lacunae,” holes that make complete sentences, much less paragraphs, few and far between. But it does say of Mary Magdalene that “Christ loved her more than all the disciples and used to kiss her often on her…” something, presumably mouth. Oh là là! That said, it should be understood that such a kiss was not necessarily a romantic or sexual gesture among early Christians, that many congregations exchanged kisses on the lips before and after worship as a matter of course.

The popular tradition that Mary Magdalene was a prostitute or otherwise fallen woman seems to date from considerably later, from a sermon that Pope Gregory I gave around the year 600, in which he conflated her with several other women who appear in the gospels. In the same spirit, Henry Lincoln and his friends were bound to wonder about the Biblical passage on Altar Document 2. Did it mean to say that the Mary who washed Jesus’s feet in the home of Lazarus was actually Mary Magdalene?

At any rate, the Gospels of Mary and Philip, combined with the Lobineau dossier and various other esoteric clues, were enough for them. Almost 30 years after it was born as Noël Corbu’s vague notions of a hidden royal treasure, the mystery of Rennes-le-Château had blossomed into the most earthshaking millennia-spanning conspiracy imaginable.

Jesus’s wife and offspring (and he could have fathered a number of children between the ages of sixteen or seventeen and his supposed death), after fleeing the Holy Land, found refuge in the south of France, and in a Jewish community there preserved their lineage. During the fifth century this lineage appears to have intermarried with the royal line of the Franks, thus engendering the Merovingian dynasty. In AD 496 the Church made a pact with this dynasty, pledging itself in perpetuity [to] the Merovingian bloodline — presumably in the full knowledge of that bloodline’s true identity.

But the Catholic Church later had a change of heart. Gregory’s sermon marked the beginning of a campaign to suppress the truth about the marriage of Jesus and Mary Magdalene and to slander the wife’s image by turning her into a prostitute, all in the name of preserving the patriarchy and giving exclusive authority over the Christian religion to the popes in Rome. The same impulse caused the powers that were in Rome to do their darnedest to destroy the Merovingian dynasty to their northwest, which was fast emerging as the most powerful in all of Europe.

When the Church colluded in Dagobert’s assassination and the subsequent betrayal of the Merovingian bloodline, it rendered itself guilty of a crime that could neither be rationalized nor expunged. It could only be suppressed. It would have had to be suppressed — for a disclosure of the Merovingians’ real identity would hardly have strengthened Rome’s position against her enemies.

Despite all efforts to eradicate it, Jesus’s bloodline survived…

From this point on, we are on relatively familiar ground. The Priory of Sion was formed to protect the bloodline and prepare the world for its return to power and glory. Working through its offshoot the Knights Templar, the Priory found something related to its mission in Jerusalem during the time of the Crusades: “It may have been Jesus’s mummified body. It may have been the equivalent, so to speak, of Jesus’s marriage license and/or the birth certificates of his children.”

Should we bother to discuss the fact that ancient Palestine had neither marriage licenses nor birth certificates nor even any “equivalents” of same? No. Let us charge giddily onward!

Historians of literature tell us that it was around this time that the legend of the Holy Grail, an object which is never mentioned in the Bible, was created by the French poet Chrétien de Troyes. Chrétien is decidedly vague as to what this object, which he calls Sangraal in Old French, actually is. The conventional approach, taken not only by the literary scholars of today but by writers such as Thomas Malory who continued the legend during later Medieval times, is to divide the word into two: San, meaning “holy,” and graal (or slightly later greal), meaning “grail,” an archaic word for a cup or goblet. But if you split the word differently, you end up with sang raal: “royal blood.” For what it’s worth, this is actually one of the book’s more compelling, cogent arguments. It may even be the truth, although this wouldn’t mean that Chrétien meant the blood of Jesus; if this was the case, it would surely make more sense for him to refer to “holy” rather than “royal” blood.

The Cathars, who had gone missing from the last of Lincoln’s Chronicle episodes, make a return at this stage as well, as people who were also privy to the secret before they were massacred by the dastardly Catholic Church. In this telling, the legendary Cathar treasure was quite possibly the very same Holy Grail alluded to by Chrétien: genealogies of Jesus’s family tree. This treasure was smuggled out of Château de Montségur before it fell and hidden at Rennes-le-Château until it was discovered by Bérenger Saunière 700 years later, just as Albert Salamon first proposed. Lincoln, in other words, no longer believes that the Altar Documents which surfaced through the good offices of Gérard de Sède were truly what was found by Saunière inside his church, even though he still treats them as good-faith evidence for his theories. (Why does he? Because he wants to believe, of course.)

After the downfall of the Knights Templar and the Cathars, various schemes were mooted by the Priory of Sion to restore the bloodline to its proper place at the head of France, Europe, or possibly the entire world. All of these failed for one reason or another. One particularly clever if rather tasteless twist in the tale involves the infamous Protocols of the Elders of Zion, a “genuine” historical forgery, in the sense that, although it was not what it claimed to be, nor was it created specifically to serve the Rennes-le-Château conspiracy theories. The Protocols of the Elders of Zion were purported to be plans for world domination by a secret international Jewish cabal. After first appearing in Russia in 1903, they went on to provide grist for the mill of the Holocaust. In this new telling, however, they actually issued from the Priory of Sion, reflecting its plans for world domination.

But why was it necessary for the Priory to go through all of these behind-the-scenes machinations? Why not just tell the world the secret and be done with it? Lincoln, Leigh, and Baigent do what they can to answer this eminently reasonable question.

On first consideration it might seem that such Byzantine procedures would have been unnecessary; it might seem that the Merovingians — if they were indeed descended from Jesus — would have no trouble establishing their supremacy. They needed only to disclose and establish their real identity, and the world would acknowledge them. In fact, however, the thing would not have been so simple. Jesus himself was not recognized by the Roman Empire. When it was expedient to do so, the Church had no compunction in sanctioning the murder of Dagobert and the overthrow of his bloodline. A premature disclosure of their pedigree would not have guaranteed success for the Merovingians. On the contrary, it would have been much more likely to misfire — to engender factional strife, precipitate a crisis in faith, and provoke challenges from both the Church and other secular potentates. Unless they were well entrenched in positions of power, the Merovingians could not have withstood such repercussions — and the secret of their identity, their trump card as it were, would have been played and lost forever. Given the realities of both history and politics, this trump card could not have been used as a stepping stone to power. It could only be played when power had already been acquired — played, in other words, from a position of strength.

Despite or perhaps because of its many blithe leaps over credibility gap after credibility gap, The Holy Blood and the Holy Grail is an oddly enjoyable, even exciting read. Michael Leigh approaches the material with a novelist’s eye, knowing when to hold back and when to toss the reader a dramatic reveal. Michael Baigent ferrets out countless interesting facts from history’s nooks and crannies which give the book an air of erudition, if one that is ultimately superficial. And Henry Lincoln is Henry Lincoln, wanting so badly for his delusions to be true that we have almost started to believe them as well, if only out of sympathy, by the time he tries to sell us on utopia in the final paragraphs. Over the course of the book, the mystery of Rennes-le-Château has morphed before our eyes into an eschatology. Or is it an entire new religion in the making, the latest offshoot of Christianity’s fruitful tree? In the grand sweep of time, after all, Mormonism isn’t all that much older than this budding faith. Why shouldn’t Pierre Plantard become the next Joseph Smith, with Henry Lincoln in the role of Brigham Young?

All ages like to see themselves as uniquely fallen, and thus uniquely ripe for spiritual renewal. And so, given enough time, all conspiracy theories will become apocalyptic.

We know that the Prieuré de Sion is not a “lunatic fringe” organization. We know it is well financed and includes — or, at any rate, commands sympathy from — men in responsible and influential positions in politics, economics, media, the arts. We know that since 1956 it has increased its membership more than fourfold, as if it were mobilizing or preparing for something; and M. Plantard told us personally that he and his order were working to a more or less precise timetable. We also know that since 1956 Sion has been making certain information available — discreetly, tantalizingly, in piecemeal fashion, in measured quantities just sufficient to provide alluring hints. Those hints provoked this book.

In a very real sense the time is ripe for the Prieuré to show its hand. The political systems and ideologies that in the early years of our century seemed to promise so much have virtually all displayed a degree of bankruptcy. Communism, socialism, fascism, capitalism, Western-style democracy have all, in one way or another, betrayed their promise, jaundiced their adherents, and failed to fulfill the dreams they engendered. Because of their small-mindedness, lack of perspective, and abuse of office, politicians no longer inspire confidence, only distrust. In the West today there are increasing cynicism, dissatisfaction, and disillusion. There are increasing psychic stress, anxiety, and despair. But there is also an intensifying quest for meaning, for emotional fulfillment, for a spiritual dimension to our lives, for something in which genuinely to believe. There is a longing for a renewed sense of the sacred that amounts, in effect, to a full-scale religious revival — exemplified by the proliferation of sects and cults, for example, and the swelling tide of fundamentalism in the United States. There is also, increasingly, a desire for a true “leader” — not a führer, but a species of wise and benign spiritual figure, a “priest-king” in whom mankind can safely repose its trust. Our civilization has sated itself with materialism and in the process become aware of a more profound hunger. It is now beginning to look elsewhere, seeking the fulfillment of emotional, psychological, and spiritual needs.

Such an atmosphere would seem eminently conducive to the Prieuré de Sion’s objectives…

Would you trust this man to be your savior?



Did you enjoy this article? If so, please think about pitching in to help me make many more like it. You can pledge any amount you like.


Sources: The books Holy Blood, Holy Grail by Michael Baigent, Richard Leigh, and Henry Lincoln; Bloodline of the Holy Grail: The Hidden Lineage of Jesus Revealed by Laurence Gardner; The Treasure of Rennes-le-Château: A Mystery Solved by Bill Putnam and John Edwin Wood; The Holy Grail: The History of a Legend by Richard Barber; Invented Knowledge: False History, Fake Science and Pseudo-religions by Ronald H. Fritze; The Tomb of God: The Body of Jesus and the Solution to a 2,000-Year-Old Mystery by Richard Andrews and Paul Schellenberger; Rennes-le-Château et l’enigme de l’or maudit by Jean Markale; Le Trésor Maudit de Rennes-le-Château by Gérard de Sède; The Holy Place: Saunière and the Decoding of the Mystery of Rennes-le-Château by Henry Lincoln; Key to the Sacred Pattern: The Untold Story of Rennes-le-Château by Henry Lincoln; Les Templiers sont parmi nous, ou, L’Enigme de Gisors by Gérard de Sède; Les Mérovingiens à Rennes-le-Château. Mythes ou Réalités. Réponse à Messieurs: Plantard, Lincoln, Vazart & Cie by Richard Bordes; Lives of the Popes: The Pontiffs from St. Peter to Benedict XVI by Richard P. McBrien. Skeptical Inquirer of November/December 2004.

Online sources include the websites Rennes-le-Château: Where History Meets Evidence and Priory of Sion.com. Also the Misquoting Jesus podcast’s episode on Mary Magdalene.

Monday, 30. March 2026

Renga in Blue

Epic Hero #2, Dungeon of Derojhen: Experiments in Death

(Continued from my previous post.) There are two different philosophies when it comes to deathtraps involving multiple choices (buttons, doors, etc.) from around this time. Philosophy Type One (let’s call it “Signalism”) is that deathtraps should have a clue, and this might involve solving a puzzle (often given in the form of a cryptic message). […]

(Continued from my previous post.)

There are two different philosophies when it comes to deathtraps involving multiple choices (buttons, doors, etc.) from around this time.

Philosophy Type One (let’s call it “Signalism”) is that deathtraps should have a clue, and this might involve solving a puzzle (often given in the form of a cryptic message). If you read the clue wrong you get punished by death.

The other (Philosophy Type Two, let’s call it “Experimentalism”) is that deathtraps don’t need a signal and the player is welcome to just experiment. In the puzzle shown above, designed from a Signalism standpoint, you go left, then keep going right repeatedly; in an Experimentalism game, there might be no sign, and you’re just supposed to test left-right directions and restore a save if you die.

The issue with the two philosophies co-existing at this time is that you might see a puzzle that you solve by Experimentalism (“brute force”, essentially) except the intent was Signalism (some clue you might not find until after solving the puzzle!) If you assume Signalism, you might get a game that clearly intends for you to just experiment (like the three buttons on The Missing People) and you waste play-time searching around for a clue when none exists. It helps to know what kind of game you’re playing (or if it’s the sort that mixes the two because the author never thought that hard about that design; it might even be intentional mixing like a four-digit code where you can only find the first three digits and you’re supposed to guess at the last digit).

And really, it’s only a few buttons (or directions). Is it worth spending all that time thinking about it? Some of the Signalism games introduce random aspects to force engagement with clues (the Cambridge mainframe games like Hezarin especially) but there is some level from the player’s perspective where the two are almost indistinguishable. Certainly I’ve never thought of myself as “cheating” when I apply brute force just because of how many games that really is the intended route.

Returning to Epic Hero 2…

…last time I was stuck trying to enact a ritual, as waving the wand (which seemed to be step 3 on a list) just had spirits laugh at me (“your poor attempt tp complete the ritual”).

It’s faded a bit. You can read :
“Draw pentagr…Chali…Fill with Blo…Frog…Wand wav
Lit Candl…Smo..Incen” The rest is unreadable.

John Myers guessed in the comments correctly: this isn’t in order, or at least left-to-right followed by top-to-bottom order. After drawing the pentagram and filling a chalice with frog blood, you can light the candle and smoke the incense, and then wave the wand. Waving the wand is just meant to be the last step. Matt W. speculated that

I guess the clue is that it says “Lit candle” so the candle must be lit already? Though I can’t make the chalice part come out grammatically. “Draw pentagram, Chalice Fill with Blood from From. Clean the Wand then wave it over a Lit Candle and Smoking Incense.” But “Fill” is not really in the right tense or place with respect to “Chalice.”

although I’m not sure there’s really supposed to be a “logic” here. I can accept a mangled magic book might be somewhat loose with the order of events and the intent is just to think it worthwhile to try (Experimentalism rather than Signalism, but without the deathtrap.)

From the fourth Scott Pilgrim book. Freestyle! It’s your book now! Don’t let the man tell you which direction to read!

To light the candle and the incense you need to have fire in the first place; the stick from the tree will do it, as long as you go over to the oven first and LIGHT STICK. With those two acts done, waving the wand will cause a zap effect and most of the ritual items to disappear.

The wand, stick, monocle, book, chalk, and knife stick around. At least the monocle gets used again.

You can GO PENTAGRAM to warp to the other side, and there’s a pool where GO POOL will easily send you back again. (This has an amusing side effect I’ll talk about later.)

Leduc shows up in person again, this time plugging Epic Hero 3. Sadly, you can’t stab him with the knife.

This is followed by a straightforward maze (drop items to map it out), although my finessing with map directions makes it look cleaner than it really is.

The last room of the tunnel maze contains a long pole (that seems straight out of Dungeons and Dragons) and a shovel. This is followed by a room with colored coloured discs.

You are in a room filled with coloured discs.
Objects you can see are: Red Disc ■ Green Disc ■ Blue Disc ■ Orange Disc ■ Black Disc
Possible exits: EAST ■ WEST ■ SOUTH

I immediately tried fiddling with the discs and they are oddly inconsistent in their parser responses.

What will you do now? TOUCH RED DISC
That is not quite possible .. right now!!
What will you do now? TOUCH GREEN DISC
That is not quite possible .. right now!!
What will you do now? TOUCH BLUE DISC
That is not quite possible .. right now!!
What will you do now? TOUCH ORANGE DISC
I am not quite sure what you mean
What will you do now? TOUCH BLACK DISC
I am not quite sure what you mean

Why do the red / green / blue have the “right now” message but the orange and black discs do not? Additionally, while three of the discs say “You find nothing special” when examining them, one gives an item (a “four pronged hook”)…

What will you do now? LOOK BLUE DISC
There is a puff of smoke and ….

You find something!

…and the black disc states “There is something DIMENSIONALLY funny about it!” This is supposed to be a hint you can GO BLACK and enter the disc to a new room.

The vampire will eventually “suck all the blood from your body”. “Eventually” is a vague span because it seems to be dictated by RNG, and I’ve had the vampire kill me immediately upon entering the room. Usually you get a chance to do things or even run away, and the vampire will follow. This includes through the pool and you can visit King Brion with vampire in tow (no reaction) or go outside (either it’s night-time or this is the type of vampire that doesn’t care about the sun). The vampire will prevent you from going into the hole and we don’t have the right item yet to defeat it, so I’ll come back here later.

Going back to the disc room (red, green, and orange remain unused), heading south leads to a room with a soft floor. The shovel from earlier comes in handy, sort of.

The old manuscript and rope are already there; the “mirror of neo-madness” appears from digging. Looking at the mirror kills you. I tried to use it on the vampire with no luck (although to be fair, I wouldn’t have expected it to work). I suspect the mirror may simply be a deathtrap for amusement (for the author, if not ours). Regarding the manuscript, as long as you’ve got the monocle, it tells you to say Mekleh and then beware.

The vampire lair is the Crypt of the Helkem (so just Mekleh backwards) so that’s logically where the word works, but the game just says

Okay

with no apparent effect. What this does is unlock the coffin, where the “master of the vampires” hypnotizes you and sucks out your blood if you open it, so I think this might also be just a deathtrap gag.

The master of the vampires rises up,
hypnotises you and sucks all your blood!

Heading back to the disc room, there’s one more straightforward exit to the west, that leads to a “Tiny Alcove”, with a rod sticking out of the wall.

Trying to pull the rod kills you (Experimentalism, there is absolutely no indicator).

You can instead either PUSH or TOUCH the rod and it will reveal some stairs (“A panel in the wall slides open.”). These stairs go to a “Hall of the Cunning”, and another dose of Experimentalism.

You are in the first ‘Hall of the Cunning’.
Objects you can see are: Green stone ■ Blue stone ■ Red stone ■ Lighted archway
Possible exits: UP

UP returns to the alcove; the goal here is to make the lighted archway save for passage; it will kill you if you try to enter right away. (“A spell completely inverts your body!”) Two out of the three stones kill you right away as well. I managed to safely TOUCH BLUE and TOUCH GREEN and went for TOUCH RED and died again.

Kerzappp !!!!!!!!
You are DEAD!!
This EPIC is over.

The right sequence is BLUE, GREEN, BLUE (again!), RED, and there really is no clue to this at all. (Having to touch the same color twice really makes it seem like a Signalism puzzle and I even combed over previous rooms to see if I had missed something. No luck. It really does seem to want you to test at random.)

What will you do now? TOUCH RED
There is a puff of smoke and ….
Look what happened!

The archway is now safe to enter, resulting in a second hall of cunning.

Sometimes you’ll get the message

Something in the pit snickers ….

although it seems to be at random. The glass ball has “a diameter of about two inches” and the shield has no description. GO PIT, predictably, kills you.

Silly!
The rim of the pit forms teeth and swallows you whole!
You are DEAD!!
This EPIC is over.

The key is to combine the hook randomly found from the disc with the rope, although I had unfortunate results the first time.

What will you do now? TIE ROPE
To what. (I.E. TO TREE)
What will you do now? TO HOOK
Okay
What will you do now? THROW HOOK
The rope and hook are thrown over the pit ….
…. and disappears!

I was thinking maybe I was hooking the ring somehow, but I think the ring is supposed to be positioned on the ground next to the pit. So you can TIE ROPE / TO RING in addition to tying it to the hook, and then throw the rope successfully.

What will you do now? THROW HOOK
The rope and hook are thrown over the pit ….
…. and catches onto something across the pit!
What will you do now? GO ROPE
Okay
You lost your balance and fell in the pit!
The rim of the pit forms teeth and swallows you whole!
You are DEAD!!

Except: now you need the pole that was back at the end of the maze (with the shovel).

The hole is described as being about two inches in diameter; you can INSERT BALL and a vial will appear. The vial is glowing. This seems to be the end of the line as far as the rooms of cunning go (it’s safe to go back as long as you keep the pole), but the vial is fortunately the thing we need to take down the vampire.

Going down from here is a crypt.

You are in the ‘Crypt of Static Enchantment’.
Objects you can see are:
Completely still Guard of the Eternal Keeper ■ Lever ■ Passageway
Possible exits: UP

Pulling the lever will activate the Keeper. If you’re holding the shield, it will (sometimes) defend you.

What will you do now? PULL LEVER
Okay
The guard moves in and attacks you with his sword ….
You stop his blow with your shield!

Sometimes (at random, I think) it will get through your defense and kill you, so you can’t stand here forever. I’ve tried KILL KEEPER and the game says I don’t have a weapon (even while I have a knife) so I’m not sure what to do here. There is one last room, going down the passage, but it hasn’t helped me either.

The name Final Judgment suggests this is the final room to me, and I suspect the Keeper has the key and I just need to defeat it, and to defeat it I just need a weapon, so… I’m close? My guess is I missed something, maybe an extra manipulation with the colored discs, maybe something to do with the creature in the pit.

Unfortunately I’m not ending at a point conducive to audience-solving this time, but I’ll still take suggestions if anyone has an idea. I’m still not interested in plunging into machine code yet; even with all the Experimentalism this game has generally been fair.

Sunday, 29. March 2026

Key & Compass Blog

New walkthroughs for March 2026

On Saturday, March 28, 2026, I published new walkthroughs for the games and stories listed below! Some of these were paid for by my wonderful patrons at Patreon. Please consider supporting me to make even more new walkthroughs for works of interactive fiction at Patreon and Ko-fi. Within the Woods (2026) by BrownPantsGaming In this […]

On Saturday, March 28, 2026, I published new walkthroughs for the games and stories listed below! Some of these were paid for by my wonderful patrons at Patreon. Please consider supporting me to make even more new walkthroughs for works of interactive fiction at Patreon and Ko-fi.


Within the Woods (2026) by BrownPantsGaming

In this supernatural horror game, your former employer, Dale, asked you to clean up an isolated rental cabin deep within the woods. For five hundred bucks. It’s evening when you arrive, and you are dismayed to see a broken door and broken window even before you get out of your car. Dale never mentioned damage like this, and you didn’t even bring any tools! You yell “hello” but no one answers. Time to survey the place, scrounge up some tools, and fix up the cabin as best you can. But what happened here?

IFDB | My walkthrough and map


Wolfsmoon (2019) by Marco Innocenti (writing as “SpaceWhale”)

In this horror game, you are tired. In the last few months, fifteen corpses have been found, and more people have disappeared. There are rumors of a wild animal or a killer on the loose. But Elmville is a town unlike any other. We sleep under the Wolfsmoon.

At the 2019 XYZZY Awards, this game was a finalist in the Best Use of Multimedia category.

IFDB | My walkthrough and maps


When the Millennium Makes Marvelous Moves (2024) by Michael Baltes (as “Mikawa”)

In this game, it’s Millennium’s Eve. You play as Finley, arriving home at 6.15 a.m., chilled and bone tired after a night shift at the factory just as your partner, Johanna, is leaving for her day job at the supermarket. You sleep and wake at 10.05 p.m., barely in time to meet her there, but she’s dead. There was a robbery. She was shot. The police advise you to go home. You feel numb. But as you cross the street, a light is coming at you. It’s too quick. You hear buzzing, then everything goes black. Then you wake up on the street. It’s 6.15 a.m. Again.

This game was an entry in IF Comp 2024 where it took 38th place.

IFDB | My walkthrough and maps


The Land of Breakfast and Lunch (2020) by Daniel Talsky

In this surreal artpiece, you play as a slightly better version of yourself, visiting a landscape made from your dreams, memories, and aspirations. Explore and interact as you will. You have no goals and are given no direction, yet there are three optional things you can do if you’re the sort of player who needs puzzles to solve.

This artpiece was an entry in Spring Thing 2020’s Main Festival. It received the audience award ribbons “Best Jokes”, “Most Poetic Jokes” and “Best Parser Game”.

IFDB | My walkthrough and map


Chez Dark Shade Ark (2025) by Andrew Schultz

In this surreal wordplay game based on homophonic phrases, you play as someone who cut through a park to avoid trick-or-treaters, only to be pushed through a portal. You black out and wake inside a wee clink.

This game was written in Adventuron and was an entry in Ectocomp 2025’s Le Petite Mort (English) division where it took 16th place.

IFDB | My walkthrough and map


Dusk, Airy, Does Carry (2025) by Andrew Schultz

In this surreal wordplay game based on homophonic phrases, you disrupt an open mic poetry reading with “Duh! Scary!” and the poet warns you that your day will come. And it does. On the last day of October, you fall asleep and wake up where you see a globe (old) giving off a dim light and nothing else. Can you make it brighter and find a way out?

This game was written in Adventuron and was an entry in Ectocomp 2025’s Le Petite Mort (English) division where it took 13th place.

IFDB | My walkthrough and map


Night of the Living Not-Dead (2025) by DissoluteSolute as Dissolved

In this very short one-room defense game, you play as a zombie. You received a tip-off that the living will soon invade your home. Defend yourself. Set up a trap, a Heath Robinson machine for them to fall into. Very soon you will face death… or dinner.

This game was an entry in Ectocomp 2025’s Le Petite Mort (English) division where it took 23rd place.

IFDB | My walkthrough and map


Rana’s Reception (2025) by Interpied

In this small game, you play as someone who inexplicably finds themselves in the Latitude Inn after being cruel to animals. For your rehabilitation, you must help Rana, the frog who heads the Inn, get some sleep. She hasn’t had a good night’s rest in 150 years.

This game was an entry in PunyComp 2025, placement to be determined.

IFDB | My walkthrough and map

Saturday, 28. March 2026

Zarf Updates

Ludic Narrans

Hey, remember I was in a game studies essay collection that just came out? I'm in a new game studies interview collection that just came out! This one isn't about game design, though. It's not lectures at all -- I promise you are in no danger ...

Hey, remember I was in a game studies essay collection that just came out? I'm in a new game studies interview collection that just came out!

Ludic Narrans (Playing it Straight) / Stories of/by/for the Fields of Play / Drew Davidson, Emily Matheny, et al. Ludic Narrans (Playing Around) / Stories of/by/for the Fields of Play / Drew Davidson, Emily Matheny, et al.

This one isn't about game design, though. It's not lectures at all -- I promise you are in no danger of learning to do anything in particular. The book is about play as a general concept. A bunch of people from different walks of life, talking about play. How we play; how we create play; where we play; how we learned to play; why we play. And on.

The project sprouted from a series of interviews and questions organized by Drew Davidson. I agreed to talk to Drew, and so did a lot of other people, and this book is the result. "A playful thematic oral history of the stories shared," as the blurb page says.

Like the Kaleidoscope, Ludic Narrans messes with the idea of linearity. Two editions are available: Playing it Straight is organized by topic, whereas Playing Around interleaves topical sections in a playful fugue. Same content, variable structure.

Names you might recognize: Jenova Chen, Naomi Clark, Mia Consalvo, James Ernest, Rami Ismail, Jim Munroe, and no doubt others. And me of course.

Both editions are available as free PDFs. (See the "Download" links on the book pages.) The text is under a Creative Commons license (BY-NC-ND).

Or you can pay for either print or ebook editions at Lulu. Note that each print edition is itself available in two forms. The only difference is the interior illustrations, printed in color or monochrome. (They're nice illustrations but I wouldn't call them central to the book's presentation.)

Once again, I'll quote a single line from one of my bits:

never been designed for. This is why tool programming starts out easy and then turns into a

Grab the book to read the rest!


My So Called Interactive Fiction Life

Computer Science and Parser IF in Sharpee

This post explains the data structures and algorithms behind Sharpee, a parser-based interactive fiction engine built in TypeScript. It's written for developers who learn best by seeing how CS concepts appear in real, working code rather than in textbook abstractions. Every decision I made from early 2024 through
Computer Science and Parser IF in Sharpee

This post explains the data structures and algorithms behind Sharpee, a parser-based interactive fiction engine built in TypeScript. It's written for developers who learn best by seeing how CS concepts appear in real, working code rather than in textbook abstractions.

Every decision I made from early 2024 through today was based on identifying both modern and/or the optimal data structures and design patterns to build a modern Parser-IF platform. I started with some preferences and assumptions, but those were deeply investigated (partly in the C# days) and eventually evolved to serve the end goals.

I did not go to college for computer science and some of these patterns I had to learn as I was in design/build mode and ended up rewriting the foundations of Sharpee many times in those early iterations. Big O concepts, graphs, hash maps, directed graphs, bidirectional cached indexes...these were all things I had to learn, experiment with, and find the right balance for this solution.

And yes, I do find it ironic that a core part of Sharpee is nearly identical to TADS and Inform data structures, though Sharpee has useful additions. This document does not cover the Text Service or anything Typescript specific. It covers the underlying logic of the platform: the data store, parser, grammar, traits, and behaviors.

Every section names the CS concept first, then shows how Sharpee uses it.


The World Model: Choosing the Right Data Structures

An interactive fiction world is a collection of entities — rooms, objects, characters — connected by relationships: containment, location, direction. The original design discussion considered two approaches:

  • Graph database: Every entity is a node, every relationship is an edge. Flexible but expensive to query and hard to constrain.
  • Immutable state tree: Entities organized in a hierarchy with clean state management and fast serialization.

Sharpee chose a hybrid that uses the right structure for each job.

The Data Structure Taxonomy

Structure Access Pattern Sharpee Usage
Hash Map "Get X by name" — O(1) Entity store, trait lookup by type
Tree "What's inside X?" — parent/child Containment, spatial model
Graph "What connects to X?" — arbitrary edges Room connections, directions
Array "Do these in order" — indexed Trait lists, event handler chains
Set "Is X a member?" — O(1) membership Children sets, visited tracking
Queue "First in, first out" Semantic event processing

Why This Combination?

The most common operations in an IF engine are:

  1. Find entity by ID — happens every turn, multiple times. Hash map: O(1).
  2. What's in this room? — happens on every LOOK. Tree children: O(1) lookup.
  3. Where is this item? — happens on every TAKE/DROP. Tree parent: O(1) lookup.
  4. Where does north go? — happens on movement. Adjacency list: O(1) lookup.

A pure graph database would make operations 2 and 3 expensive (scan all edges to find relationships of a given type). A pure tree wouldn't handle room connections (rooms connect to siblings, not just parents and children). The hybrid gives O(1) for all four.

The Entity Store

entities: Map<string, IFEntity>

"brass-lantern" → { id: "brass-lantern", traits: [...], ... }
"living-room"   → { id: "living-room", traits: [...], ... }
"troll"         → { id: "troll", traits: [...], ... }

This is a hash map (TypeScript Map). Looking up any entity by its string ID is O(1) regardless of how many entities exist. The tradeoff: it tells you nothing about relationships between entities. That's what the SpatialIndex and room connections handle.

Computed Properties: The Description Getter

CS Concept: Priority Chain (Chain of Responsibility)

IFEntity.description is not a simple field read — it's a computed getter that walks a priority chain of traits:

get description():
  1. OpenableTrait present? → return openDescription or closedDescription based on isOpen
  2. SwitchableTrait present? → return onDescription or offDescription based on isOn
  3. LightSourceTrait present? → return litDescription or unlitDescription based on isLit
  4. Fallback → IdentityTrait.description

Each trait in the chain is checked only if the entity has it, and only if the trait's state-specific description field is populated. If not, the chain falls through to the next trait. This eliminates the need for event handlers to mutate descriptions when state changes — the description is always derived from current state.

Tradeoff: A getter runs on every access (no caching). For IF games where descriptions are read a few times per turn, this is negligible. The benefit is that state and description can never diverge — a classic "make illegal states unrepresentable" pattern applied to derived data.


The SpatialIndex: A Bidirectional Hash Map

CS Concept: Bidirectional Index (Inverted Index)

The SpatialIndex tracks who is inside what. It's the backbone of containment in Sharpee: items inside rooms, items inside containers, items carried by the player.

The Core Trick: Two Maps Pointing Opposite Directions

class SpatialIndex {
  private parentToChildren: Map<string, Set<string>>;
  private childToParent: Map<string, string>;
}

The same relationship is stored twice — once in each direction:

childToParent                    parentToChildren
─────────────                    ────────────────
"lantern"  → "living-room"       "living-room" → { "lantern", "rug", "player" }
"rug"      → "living-room"       "player"      → { "sword", "bottle" }
"player"   → "living-room"       "bottle"      → { "water" }
"sword"    → "player"
"bottle"   → "player"
"water"    → "bottle"

Both questions are instant:

Question Which Map Cost
"Where is the lantern?" childToParent O(1)
"What's in the living room?" parentToChildren O(1)

Without the bidirectional index, one of these would require scanning every entity in the game — O(n). For a game with hundreds of entities, that matters.

Tradeoff: Double the memory for instant lookups in both directions. For an IF game with ~1000 entities, this is negligible — a thousand extra string pointers.

Why Set Instead of Array for Children

parentToChildren maps to a Set, not an Array:

Operation Array Set
"Is lantern in this room?" O(n) scan O(1)
"Remove lantern from room" O(n) find + splice O(1)
"Add lantern to room" O(1) push O(1)
"List everything in room" Already an array O(n) conversion

Sets win on the operations that happen most (membership check, removal). The only cost is converting to an array when listing room contents, which happens less frequently.

The Move Operation: Enforcing the Tree Invariant

addChild(parentId: string, childId: string): void {
    // Remove from current parent (enforces: one parent only)
    const currentParent = this.childToParent.get(childId);
    if (currentParent) {
        this.removeChild(currentParent, childId);
    }
    // Add to new parent
    this.parentToChildren.get(parentId)!.add(childId);
    this.childToParent.set(childId, parentId);
}

CS Concept: Structural Invariant

A tree guarantees that every node has exactly one parent. The addChild method enforces this — before adding to the new parent, it removes from the old one. An item can never be in two places simultaneously. The data structure makes the illegal state unrepresentable.

This is what every TAKE, DROP, PUT IN, and PUT ON command calls under the hood. take lantern calls addChild(playerId, lanternId). drop lantern calls addChild(roomId, lanternId).

Tree Traversal: Descendants and Ancestors

CS Concept: Depth-First Traversal

getAllDescendants walks down the tree recursively:

Living Room
├── table                    ← depth 1
│   ├── lantern              ← depth 2
│   └── newspaper            ← depth 2
├── rug                      ← depth 1
└── player                   ← depth 1
    └── sword                ← depth 2

The visited Set prevents infinite loops if a cycle is accidentally introduced — defensive programming against corrupted state. The maxDepth parameter caps traversal at 10 levels (a lantern inside a box inside a bag inside a chest... is unlikely to nest deeper).

getAncestors walks up: sword → player → living-room → (no parent, stop). This is a linked list traversal — follow parent pointers one hop at a time. Used for scope and visibility to determine what chain of containers an item is nested inside.

Serialization: Save/Restore

toJSON(): { parentToChildren: [...], childToParent: [...] }
loadJSON(data): void  // rebuilds Maps and Sets from plain arrays

Maps and Sets are not directly JSON-serializable. toJSON converts them to plain arrays; loadJSON rebuilds. This is the "clean snapshot" advantage of the tree approach — the entire spatial state of the world reduces to a JSON object for save games.


Room Connections: Directed Graph as Adjacency List

CS Concept: Adjacency List Representation of a Directed Graph

Room connections are the one genuinely graph-like structure in Sharpee. Unlike the containment tree (one parent per item), rooms connect to arbitrary other rooms via directional exits.

The Data Structure

Each room stores its own exits as a dictionary of direction to destination:

// RoomTrait on the "kitchen" entity
exits: {
  north: { destination: "hallway" },
  east:  { destination: "pantry", via: "pantry-door" },
}

This is an adjacency list — each node holds a map of its outgoing edges. The alternative is an adjacency matrix (a 2D grid of all possible connections):

Representation Memory "Where does north go?" "What leads to kitchen?"
Adjacency list O(edges) O(1) lookup O(all rooms) scan
Adjacency matrix O(rooms^2) O(1) lookup O(rooms) scan one row

For a Zork-sized game with 191 rooms, a matrix would be 191 x 191 = 36,481 cells, almost all empty. The adjacency list only stores edges that exist. This is the right choice for sparse graphs — where each node connects to a small fraction of all other nodes (typically 3-6 exits per room).

Bidirectional Connections

connectRooms(room1Id, room2Id, direction): void {
    const opposite = getOppositeDirection(direction);
    RoomBehavior.setExit(room1, direction, room2Id);   // kitchen.north → hallway
    RoomBehavior.setExit(room2, opposite, room1Id);     // hallway.south → kitchen
}

This creates an undirected edge using two directed edges. But the system supports one-way connections too — call setExit directly for a chute you fall down but cannot climb back up. This flexibility comes free from using a directed graph.

Edges with Attributes

interface IExitInfo {
  destination: string;        // which room you end up in
  via?: string;               // a door entity you must pass through
  mapHint?: IExitMapHint;     // rendering info for the auto-mapper
}

CS Concept: Labeled/Weighted Edges

The via field is a conditional edge — movement requires the door entity to be open. The door itself is an entity in the containment tree (the player can see it, examine it, unlock it). But it also appears as a property on a graph edge. The entity system and the graph system reference the same thing by ID — a clean cross-reference between two data structures.

Graph Search: findPath

The WorldModel exposes findPath(fromRoomId, toRoomId): string[] | null. This is a breadth-first search (BFS) — it starts at the source room, explores all neighbors, then all their neighbors, expanding outward until it reaches the destination.

findPath("kitchen", "library")

Step 1: kitchen → neighbors: hallway, pantry
Step 2: hallway → neighbors: kitchen (visited), library ← FOUND
Path: kitchen → hallway → library

BFS guarantees the shortest path (fewest rooms). Used for NPC navigation and hint systems.


Visibility: Filtered Tree Traversal

CS Concept: Tree Traversal with Predicate Filtering

Visibility answers the physical simulation question: given the laws of IF physics, what can the player perceive?

Three Layered Systems

┌──────────────────────────────────────────────┐
│  Scope (What the parser considers)           │  ← Rule engine, indexed registry
│  "Can the player refer to this in a command?"│
├──────────────────────────────────────────────┤
│  Visibility (What the player perceives)      │  ← Tree traversal with filters
│  "Can the player see/feel/notice this?"      │
├──────────────────────────────────────────────┤
│  SpatialIndex (Where things are)             │  ← Bidirectional hash maps
│  "What contains what?"                       │
└──────────────────────────────────────────────┘

Each layer adds meaning on top of the one below. The SpatialIndex is pure structure — no game logic. Visibility adds IF physics. Scope adds parser intelligence.

The Walk-Up Algorithm: Line of Sight

To check if the player can see the wrench, walk up the containment tree from the wrench to the room, checking each container:

Can the player see the wrench?

wrench
  └── inside toolbox     ← Is toolbox a container? YES
                           Is it opaque? YES
                           Is it open? NO
                           BLOCKED — can't see inside closed opaque toolbox

Can the player see the sword?

sword
  └── carried by player  ← Is player an actor? YES
                           Actors don't block visibility
  └── in Living Room     ← Is this a room? YES — done
                           VISIBLE

This is a linked list traversal with predicates — follow parent pointers, check a condition at each hop. Each hop is O(1). The number of hops is bounded by nesting depth (capped at 10).

All three visibility checks (isAccessible, hasLineOfSight, isVisible) delegate to a single shared algorithm — isContainmentPathClear — which walks from an entity up to its room, returning false if any closed opaque container blocks the path. The three public-facing methods are thin wrappers that add their own pre-checks before calling the shared walker.

The Recursive Descent: getVisible

When the game needs to describe a room (LOOK command), getVisible walks down the tree from the room:

Living Room
├── mailbox (visible)
│   └── leaflet — is mailbox open? YES → leaflet visible
├── glass case (visible)
│   └── jeweled egg — is case open? NO, but transparent? YES → egg visible
├── locked safe (visible)
│   └── gold coins — is safe open? NO, transparent? NO → coins NOT visible
└── player (skip self)
    └── sword (added separately as "carried items")

CS Concept: Depth-First Tree Traversal with Pruning

Closed opaque containers are pruning points — the recursion stops there, avoiding unnecessary work. The seen Set prevents duplicate entries.

Darkness: Changing the Traversal Rules

The darkness system does not change the containment tree. It changes the traversal rules:

  • Lit room: Normal visibility — walk the tree, check containers.
  • Dark room with no light: Short-circuit. Only two things visible: what you are carrying (you can feel it), and lit light sources in the room (they glow).

hasLightSource does a full recursive search of the room, then for each light source found, walks back up with isContainmentPathClear to check if the light can "escape" its containers. A flashlight inside a closed opaque box does not light the room.

CS Concept: Nested Traversals — a downward traversal (find lights) with an upward traversal (check accessibility) at each candidate. For an IF game with ~20 objects per room, this is negligible. For 10,000 entities in one room, you'd want a dedicated index.


Scope: A Three-Phase Pipeline

CS Concept: Pipeline Architecture with Specialized Resolvers

Scope determines what the player can refer to in a command. It overlaps with visibility but is not identical — you can see a painting across the room, but can you take it?

Three specialized resolvers handle scope at different phases of the turn cycle. They share no code and serve different callers:

┌─────────────────────────────────────────────────────────────┐
│  1. RuleScopeEvaluator          (world-model, pre-parse)    │
│     Rule engine with indexed registry. Populates vocabulary.│
│                                                             │
│  2. GrammarScopeResolver        (parser, parse phase)       │
│     Delegates to WorldModel.getVisibleEntities() etc.       │
│     Filters candidates for grammar slot constraints.        │
│                                                             │
│  3. StandardScopeResolver       (stdlib, validation phase)  │
│     Entity resolution with scoring and disambiguation.      │
│     Delegates canSee() to world.canSee().                   │
└─────────────────────────────────────────────────────────────┘

Phase 1: RuleScopeEvaluator — Triple-Indexed Rule Store

CS Concept: Production Rule System with Multi-Key Indexing

class RuleScopeEvaluator {
  private rules: Map<string, IScopeRule>;           // primary store
  private rulesByLocation: Map<string, Set<string>>; // location index
  private rulesByAction: Map<string, Set<string>>;   // action index
  private globalRules: Set<string>;                  // always-apply index
}

Three indexes over the same rule set (the same bidirectional indexing idea as SpatialIndex, but with three dimensions):

rules (primary store)
────────────────────
"core.room-contents"  → { rule definition... }
"core.inventory"      → { rule definition... }
"story.magic-mirror"  → { rule definition... }

rulesByLocation (index)              rulesByAction (index)
───────────────────────              ─────────────────────
"dark-cave"  → { "story.echo" }     "taking" → { "core.touchable" }
"tower-top"  → { "story.telescope"} "looking" → { "core.visible" }

globalRules (index)
───────────────────
{ "core.room-contents", "core.inventory" }

When evaluating scope, the evaluator:

  1. Grabs all global rules (always apply) — Set lookup: O(1)
  2. Grabs rules for the current room (location-indexed) — Map lookup: O(1)
  3. Filters by the current action ("taking") — Map lookup: O(1)
  4. Sorts by priority — O(n log n) on a small set
  5. Evaluates each rule's condition function
  6. Collects all entity IDs from passing rules into a Set

This is a mini query engine. The indexes make steps 1-3 fast. Without them, you'd scan all rules every time — acceptable for 10 rules, slow for 100.

The evaluator caches results:

private cache: Map<string, IScopeEvaluationResult>;
// Key: "actorId:locationId:actionId"

CS Concept: Memoization — if scope has been computed for this actor+location+action combination, return the cached result. The cache is invalidated after any world state mutation (move, open, close).

Phase 2: GrammarScopeResolver — Parse-Time Filtering

CS Concept: Delegation / Facade

During grammar matching, the slot consumer needs to know which entities are valid for a constraint like .touchable(). The GrammarScopeResolver delegates to WorldModel methods (getVisibleEntities, getTouchableEntities, etc.), which internally use VisibilityBehavior. It does not call the RuleScopeEvaluator — it accesses the visibility layer directly.

Phase 3: StandardScopeResolver — Validation-Time Disambiguation

The command validator resolves noun phrases to specific entity IDs. The StandardScopeResolver builds candidate lists, scores them, and handles disambiguation. It delegates visibility checks to world.canSee(), which calls through to VisibilityBehavior.canSee() — the single canonical implementation.

Scope Levels

All three resolvers use the same scope level enumeration:

CARRIED   = 4   // in inventory — can manipulate freely
REACHABLE = 3   // can physically touch — required for TAKE, OPEN
VISIBLE   = 2   // can see — required for EXAMINE, LOOK AT
AWARE     = 1   // know it exists (heard, smelled) — for LISTEN, SMELL
UNAWARE   = 0   // doesn't exist to the player

These form an ordered enumeration — each level includes all levels above it. If something is REACHABLE (3), it is also VISIBLE (2) and AWARE (1). The filter check is a simple comparison: entityScope >= requiredScope.


The Parser Pipeline: Data Structure Transformations

When the player types take brass lantern, the input passes through a pipeline where each stage transforms one data structure into another.

Stage 1: Tokenization — String to Token Array

"take brass lantern"  →  [
  { word: "take",    normalized: "take",    position: 0 },
  { word: "brass",   normalized: "brass",   position: 1 },
  { word: "lantern", normalized: "lantern", position: 2 }
]

CS Concept: Lexical Analysis (Tokenization)

The same first step as any compiler or interpreter. Raw text becomes structured tokens with normalized forms (lowercased, punctuation stripped) and positional metadata.

Stage 2: Grammar Matching — Token Array to Pattern Match Tree

The grammar engine tries each registered rule against the tokens:

Rule "take :item"           → match! (confidence 1.0, priority 100)
Rule "take :item from :src" → fail (no "from" token)
Rule "put :item in :dest"   → fail ("take" ≠ "put")

CS Concept: Pattern Matching / Unification

Each rule is a pattern that either unifies with the input or fails. The engine collects all successful matches and sorts them by confidence then priority. This is similar to how Prolog resolves queries against a knowledge base, or how a parser generator tries grammar productions.

Stage 3: Slot Consumption — Token Span to Entity Candidates

The matched slot :item needs to consume "brass lantern" and find the actual entity. The EntitySlotConsumer:

  1. Gets the scope constraint from the grammar rule (e.g., .touchable())
  2. Asks the world model for all touchable entities
  3. Matches "brass lantern" against entity names and aliases
  4. Returns candidates with confidence scores

CS Concept: Constraint Satisfaction

The consumer doesn't just match text — it checks whether the match makes sense given world state. The entity must exist, be in scope, and satisfy trait constraints. This is a constraint satisfaction problem (CSP) with a small search space (typically 15-20 entities in a room).

Stage 4: Parsed Command — Structured Object

{
  action: "if.action.taking",
  directObject: {
    text: "brass lantern",
    head: "lantern",
    modifiers: ["brass"],
    candidates: ["brass lantern"]
  }
}

The parser's output is a structured intermediate representation — not yet a resolved command, but no longer raw text.

Stage 5: Validation and Disambiguation — Candidates to Resolved Entity

The command validator does definitive entity resolution:

  1. Search by name, type, synonym, adjective — multiple hash map lookups
  2. Filter by required scope level — tree traversal for visibility
  3. Score candidates — weighted sum of match quality factors
  4. Disambiguate — pick highest score or prompt the player

Scoring factors:

Factor Points
Exact name match +10
Entity type match +8
Alias/synonym match +6
Adjective match +4
Each matching modifier +5
In inventory +2
Reachable +1
Visible +1

If scores tie, the engine produces the classic IF prompt:

> take lantern
Which lantern do you mean, the brass lantern or the crystal lantern?

CS Concept: Scoring/Ranking with Weighted Features

This is a simplified version of the same approach used in information retrieval (search engines) — compute a relevance score from multiple signals, rank candidates, pick the best.

Stage 6: Action Execution — Resolved Command to State Mutation

The action receives resolved entity IDs, executes its four-phase cycle (validate/execute/report/blocked), and calls SpatialIndex.addChild() to move entities. The cycle continues on the next turn.

Complete Pipeline

"take brass lantern"
    │
    ▼  String
[Tokenize] ─── String → Array of tokens
    │
    ▼  Token[]
[Grammar Match] ─── Token[] → PatternMatch[] (sorted by confidence)
    │
    ▼  PatternMatch
[Slot Consumer] ─── Token span → Entity candidates
    │               GrammarScopeResolver → SpatialIndex → VisibilityBehavior
    │
    ▼  IParsedCommand
[Validator] ─── Noun phrases → Resolved entity IDs
    │            Search (hash map) → Filter (tree traversal) → Score (sort)
    │
    ▼  Resolved command
[Action] ─── Execute → SpatialIndex.addChild() to move entities

Every stage is a data structure transformation. The parser never touches the SpatialIndex directly — it goes through scope/visibility. The scope/visibility layers never touch raw token strings. Clean boundaries, each layer speaking its own data structure language.


The Grammar System: A Production Rule Engine

CS Concept: Production Rule System (Expert System Pattern)

The grammar system is a collection of pattern rules evaluated against input, producing ranked matches. It is a specialized pattern-matching language — a miniature programming language for describing what English sentences look like and what they mean.

The GrammarRule Structure

interface GrammarRule {
  id: string;                    // "if.action.taking#take_:item"
  pattern: string;               // "take :item"
  compiledPattern: CompiledPattern;
  slots: Map<string, SlotConstraint>;
  action: string;                // "if.action.taking"
  priority: number;              // 100
  semantics?: SemanticMapping;
}

A production rule says "this pattern of symbols produces this meaning." In Sharpee: "the pattern take :item produces the action if.action.taking with the :item slot filled by whatever the player typed."

Pattern Compilation

CS Concept: Compiled Pattern (same idea as compiled regular expressions)

The raw pattern string is compiled into a CompiledPattern — an array of PatternToken objects — at startup. This avoids re-parsing the pattern string on every player command.

Pattern: "put :item in|into|inside :container"

Compiled:
  Index 0: { type: 'literal',    value: 'put' }
  Index 1: { type: 'slot',       value: 'item',      slotType: ENTITY }
  Index 2: { type: 'alternates', value: 'in',         alternates: ['in','into','inside'] }
  Index 3: { type: 'slot',       value: 'container',  slotType: ENTITY }

Pattern Token Types

Token Type Syntax What It Matches Example
Literal put Exactly that word "put" and nothing else
Alternates in|into|inside Any one of those words "into" matches
Slot :item One or more words, consumed by a slot consumer "brass lantern"
Optional [carefully] Zero or one occurrence Can be skipped
Greedy Slot :message... Everything until next pattern element "hello how are you"

The Two Builder APIs

.forAction() — The Code Generator

grammar
  .forAction('if.action.attacking')
  .verbs(['attack', 'kill', 'fight', 'slay', 'murder', 'hit', 'strike'])
  .pattern(':target')
  .build();

CS Concept: Cartesian Product / Macro Expansion

This single call generates seven grammar rules (one per verb). With two patterns, it would generate fourteen. It takes a compact specification and expands it into many rules — the same principle as macros or template metaprogramming.

The .directions() variant is even more dramatic:

grammar
  .forAction('if.action.going')
  .directions({
    'north': ['north', 'n'],
    'south': ['south', 's'],
    // ... 10 more directions
  })
  .build();
// Generates 24 rules (12 directions × 2 aliases each)

Each generated rule carries semantic data{ direction: 'north' } — so the action knows which direction was intended regardless of whether the player typed "north" or "n".

.define() — The Explicit Form

grammar
  .define('put :item in|into|inside :container')
  .hasTrait('container', TraitType.CONTAINER)
  .mapsTo('if.action.inserting')
  .withPriority(100)
  .build();

One pattern, one rule. Use .define() for:

  • Phrasal verbs: "pick up :item", "put down :item" — .forAction() expects a single-word verb
  • Preposition patterns: "put X in Y" has structure between slots
  • One-off commands: "save", "help", "score" — no verb expansion needed

Slot Constraints: The Filter Pipeline

CS Concept: Predicate Chain / Filter Pipeline

Each :slot can have constraints that limit which entities are valid:

.where('target', scope => scope
  .touchable()                     // base: must be reachable
  .matching({ portable: true })    // property: must be portable
  .hasTrait(TraitType.CONTAINER)   // trait: must be a container
  .orExplicitly(['special-id'])    // always include this one
)

Each method narrows the candidate set:

All entities (~500)
  → .touchable()     → entities you can reach (~15)
  → .matching(...)   → those that are portable (~10)
  → .hasTrait(...)   → those with ContainerTrait (~2)
  → .orExplicitly()  → plus one specific entity (3)

This is the same pattern as .filter().filter().filter() on arrays, or SQL WHERE ... AND ... AND .... Each step reduces the search space.

Multi-Word Entity Names: The Boundary Problem

CS Concept: Greedy Parsing with Lookahead

When the parser sees put brass lantern in toolbox, it must determine where "brass lantern" ends and "in" begins.

The slot consumer looks ahead for the next non-slot pattern element (in|into|inside) and consumes tokens until it hits one of those delimiters:

Tokens: "brass" "lantern" "in" "toolbox"
         ^^^^^^^^^^^^^^^^^^^^^^
         Consume until "in" → item = "brass lantern"

For consecutive slots without a delimiter (give :recipient :item), it tries every possible split point and picks the one where constraints are satisfied:

"give troll brass lantern"

Try: recipient="troll", item="brass lantern"
  → "troll" is an Actor? YES
  → "brass lantern" is an entity? YES → match

Try: recipient="troll brass", item="lantern"
  → "troll brass" is an Actor? NO → reject

This is a brute-force search over partition points — but with only 3-4 tokens to split, the search space is trivially small.

Priority and Confidence: Resolving Ambiguity

CS Concept: Multi-Criteria Sorting

When multiple rules match, the engine sorts by confidence first, then priority:

matches.sort((a, b) => {
  if (b.confidence !== a.confidence) return b.confidence - a.confidence;
  return b.rule.priority - a.rule.priority;
});

Confidence starts at 1.0 and decreases:

  • Each skipped optional element: multiply by 0.9
  • Uncertain slot consumption (partial entity match): reduced further
  • Explicit experimentalConfidence override on the rule

Priority is set by the grammar author:

Level Usage
150+ Story-specific patterns (override stdlib)
110 Instrument patterns (with :weapon)
100 Standard patterns (default)
95 Synonyms and alternatives
90 Single-character abbreviations

This creates a natural specificity ordering — more specific patterns (more words matched, fewer optionals skipped, higher priority) rank higher. Similar to CSS specificity: more specific selectors win.

Semantic Mappings: Preserving Intent

grammar
  .define('throw :item at|to :target')
  .withSemanticPrepositions({
    'at': 'at',   // hostile: throw AT the troll
    'to': 'to'    // friendly: throw ball TO the child
  })
  .mapsTo('if.action.throwing')
  .build();

The grammar captures not just structure but intent. The action reads semantics.spatialRelation and behaves differently for "at" vs "to".

Story Grammar Extensions

CS Concept: Open/Closed Principle

Stories extend grammar using the same builder API:

extendParser(grammar: GrammarBuilder): void {
  grammar
    .define('incant :spell')
    .fromVocabulary('spell', 'incantations')
    .mapsTo('dungeo.action.incant')
    .withPriority(150)    // beats all stdlib rules
    .build();
}

Story rules are appended after core rules but sorted by priority, so they are checked first. The grammar is closed for modification (core rules don't change) but open for extension (stories add new rules).


Grammar Catalog

A complete reference of all grammar rules currently defined in the Sharpee parser.

.forAction() Rules (Verb Expansion)

Each entry generates one rule per verb listed.

Action Verbs Pattern Constraint Pri
looking look, l (none) 100
examining examine, x, inspect :target 100
taking take, get, grab :item 100
dropping drop, discard :item 100
eating eat, consume, devour :item 100
drinking drink, sip, quaff :item 100
reading read, peruse, study :target 100
inventory inventory, inv, i (none) 100
pushing push, press, shove, move :target 100
pulling pull, drag, yank :target 100
lowering lower :target 100
raising raise, lift :target 100
waiting wait, z (none) 100
quitting quit, q (none) 100
touching touch, rub, feel, pat, stroke, poke, prod :target 100
attacking attack, kill, fight, slay, murder, hit, strike :target 100
switching_on turn, switch, flip on :device hasTrait SWITCHABLE 100
switching_off turn, switch, flip off :device hasTrait SWITCHABLE 100
going (24 direction aliases) bare direction direction semantic 100

Direction aliases: north/n, south/s, east/e, west/w, northeast/ne, northwest/nw, southeast/se, southwest/sw, up/u, down/d, in, out.

.define() Rules — No Constraints

Pattern Action Pri Notes
look at :target examining 95 phrasal verb
look [carefully] at :target examining_carefully 96 optional adverb
look [around] looking 101 optional word
search [carefully] searching 100 optional adverb
search :target searching 100
look in|inside :target searching 100 alternates
look through :target searching 100
rummage in|through :target searching 95 synonym
pick up :item taking 100 phrasal verb
put down :item dropping 100 phrasal verb
go :direction going 100 where: direction
save saving 100 literal
restore restoring 100 literal
restart restarting 100 literal
undo undoing 100 literal
score scoring 100 literal
version version 100 literal
help help 100 literal
about about 100 literal
info about 100 synonym
credits about 100 synonym
say :message saying 100 text slot
shout :message shouting 100 text slot
write :message writing 100 text slot
exit exiting 100 bare command
get out exiting 100 phrasal verb
leave exiting 95 synonym
climb out exiting 100 phrasal verb
disembark exiting 100 bare command
alight exiting 95 synonym
again again 100 repeat command
g again 90 abbreviation

.define() Rules — Trait Constraints

Pattern Action Constrained Slot Trait Pri
open :door opening door OPENABLE 100
close :door closing door OPENABLE 100
turn :device on switching_on device SWITCHABLE 100
turn :device off switching_off device SWITCHABLE 100
put :item in|into|inside :ctr inserting ctr CONTAINER 100
insert :item in|into :ctr inserting ctr CONTAINER 100
put :item on|onto :sup putting sup SUPPORTER 100
enter :portal entering portal ENTERABLE 100
get in :portal entering portal ENTERABLE 100
get into :portal entering portal ENTERABLE 100
climb in :portal entering portal ENTERABLE 100
climb into :portal entering portal ENTERABLE 100
go in :portal entering portal ENTERABLE 100
go into :portal entering portal ENTERABLE 100
board :vehicle entering vehicle ENTERABLE 100
get on :vehicle entering vehicle ENTERABLE 100
exit :container exiting container ENTERABLE 100
disembark :vehicle exiting vehicle ENTERABLE 100
get off :vehicle exiting vehicle ENTERABLE 100
give :item to :recipient giving recipient ACTOR 100
give :recipient :item giving recipient ACTOR 95
offer :item to :recipient giving recipient ACTOR 100
show :item to :recipient showing recipient ACTOR 100
show :recipient :item showing recipient ACTOR 95
tell :recipient about :topic telling recipient ACTOR 100
ask :recipient about :topic asking recipient ACTOR 100
say :message to :recipient saying_to recipient ACTOR 105
whisper :message to :recipient whispering recipient ACTOR 100
write :message on :surface writing_on 105

.define() Rules — Instrument Slots

All instrument patterns use priority 110 to beat their simpler counterparts.

Pattern Action Instrument Extra Constraint Pri
take :item from :container with :tool taking_with tool 110
unlock :door with :key unlocking key 110
open :ctr with :tool opening_with tool hasTrait OPENABLE 110
cut :object with :tool cutting tool 110
attack :target with :weapon attacking weapon 110
kill :target with :weapon attacking weapon 110
hit :target with :weapon attacking weapon 110
strike :target with :weapon attacking weapon 110
dig :location with :tool digging tool 110
hang :item on :hook putting 110
throw :item at :target throwing 100
throw :item to :recipient throwing 100

Summary by Constraint Type

Constraint Type Where Used Count
No constraint Most forAction rules, bare commands, meta ~85
hasTrait OPENABLE open, close, open_with 3
hasTrait SWITCHABLE turn/switch/flip on/off 4
hasTrait CONTAINER put in, insert in 2
hasTrait SUPPORTER put on 1
hasTrait ENTERABLE enter, board, get in/on, exit, disembark 11
hasTrait ACTOR give, offer, show, tell, ask, say to, whisper 9
instrument() with :key, with :weapon, with :tool 9
where (direction) go :direction 1

Trait constraints cluster around physical interaction (OPENABLE, CONTAINER, ENTERABLE) and social interaction (ACTOR). Most action verbs (take, drop, push, pull, eat, drink, read) have no grammar-level constraints — their validation happens in the action's validate phase instead, which has access to richer context.


Glossary

Term Definition
Adjacency list Graph representation where each node stores its own edges
Bidirectional index Storing a relationship in both directions for O(1) lookup either way
BFS Breadth-first search — explore all neighbors before going deeper
Constraint satisfaction Finding values that satisfy all given constraints simultaneously
Depth-first traversal Tree/graph traversal that goes deep before going wide
Filter pipeline Chained predicates, each narrowing the candidate set
Hash map Key-value store with O(1) lookup (Map, Dictionary, Object)
Inverted index Mapping from values back to keys (children to parent alongside parent to children)
Lexical analysis Breaking raw text into structured tokens
Memoization Caching function results to avoid recomputation
Production rule A pattern that maps input to output in a rule-based system
Pruning Skipping branches of a search tree that cannot lead to a valid result
Sparse graph A graph where most possible edges do not exist
Structural invariant A property guaranteed by the data structure itself, not by runtime checks
Tree A graph where every node has exactly one parent (except the root)
Unification Matching a pattern against input, binding variables to matched values

Friday, 27. March 2026

Gold Machine

Dead Girl; Moonmist Final

The examination quest. Playing Moonmist The opening sequence requires that the player (called from here on the “sleuth”) enter a gate guarding the famed Tresyllian Castle. The moment teaches us how to play the game, as most problems in Moonmist are solved with the command triad “EXAMINE, EXAMINE, ACT.” Sometimes SEARCH is substituted in, but […]

The examination quest.

Playing Moonmist

The opening sequence requires that the player (called from here on the “sleuth”) enter a gate guarding the famed Tresyllian Castle. The moment teaches us how to play the game, as most problems in Moonmist are solved with the command triad “EXAMINE, EXAMINE, ACT.” Sometimes SEARCH is substituted in, but the general idea holds.

>examine gate
In the moonlit gloom, you can make out an ornament on the gate. It's a winged, two-legged dragon called a wyvern, which crests the Tresyllian family's coat of arms.
The dragon appears in profile. The moonlight glints on its lone visible eye.

What next?
>examine dragon
In the moonlit gloom, you can make out an ornament on the gate. It's a winged, two-legged dragon called a wyvern, which crests the Tresyllian family's coat of arms.
The dragon appears in profile. The moonlight glints on its lone visible eye.

What next?
>touch eye
The dragon's eye glows red. Evidently you just pushed a button. A voice comes from a hidden speaker. It says:
"Please announce yourself. State your title -- such as Lord or Lady, Sir or Dame, Mr. or Ms. -- and your first and last name."

From there, we players are able to name the sleuth and choose their gender. No explicit gender question is asked. Instead, Moonmist requests that the player enter a title “such as Lord or Lady, Sir or Dame, Mr. or Ms.” along with the sleuth’s name. Moonmist compares the input against a list of known gendered titles, and, if no match is found, then Moonmist consideres the sleuth’s gender unknown. Otherwise, it will assign gender when possible according to the data available.

Moonmist recognizes 11 titles and one alternate spelling.

<ROUTINE TITLE ()
<COND (<EQUAL? ,TITLE-WORD ,W?MRS> <TELL "Mrs. ">)
(<EQUAL? ,TITLE-WORD ,W?MS> <TELL "Ms. ">)
(<EQUAL? ,TITLE-WORD ,W?MISS> <TELL "Miss ">)
(<EQUAL? ,TITLE-WORD ,W?LADY> <TELL "Lady ">)
(<EQUAL? ,TITLE-WORD ,W?DAME> <TELL "Dame ">)
(<EQUAL? ,TITLE-WORD ,W?MADAME ,W?MADAM> <TELL "Madame ">)
(<EQUAL? ,TITLE-WORD ,W?DOCTOR ,W?DR> <TELL "Dr. ">)
(<EQUAL? ,TITLE-WORD ,W?LORD> <TELL "Lord ">)
(<EQUAL? ,TITLE-WORD ,W?SIR> <TELL "Sir ">)
(<EQUAL? ,TITLE-WORD ,W?MISTER ,W?MR> <TELL "Mr. ">)
(<EQUAL? ,TITLE-WORD ,W?MASTER> <TELL "Master ">)>>

Moonmist doesn’t, in fact, make much of the player’s gender, but its cultural background radiation evokes the character and tone of Nancy Drew stories. The cover art for Nancy Drew novels in those days–the middle 1980s–depicting her tiptoeing up stairs and opening dusty old chests serves as a model for the way we players might imagine the sleuth.

That isn’t to say that there aren’t meaningful differences in gender portrayal. Lord Jack will kiss you “warmly” in front of a room full of people (including his fiance) if the sleuth’s gender is “female.”

"My fiance, Lord Jack Tresyllian," Tamara introduces him. "Jack, this is my friend from the States, Ms. Fiona Lux."
"So you're that famous young sleuth whom the Yanks call Ms. Sherlock!" says Lord Jack. "Tammy's told me about the mysteries you've solved -- but she never let on you looked so smashing! Welcome to Cornwall, Fiona luv!"
Before you know it, he sweeps you into his arms and kisses you warmly! Let's hope Tamara doesn't mind -- but for the moment all you can see are Lord Jack's dazzling sapphire-blue eyes.

This weird moment–it is weird, isn’t it–receives no follow up. Jack doesn’t try to kiss us again. If we make our own attempt, we find that the script has recovered its sanity.

>kiss jack
Tamara flashes you an angry look.
"I say! You Americans are frightfully friendly!" says Lord Jack.

Alternately, if a male sleuth attempts to kiss Jack:

>kiss jack
Tamara flashes you an angry look.
He looks at you as if you were insane.

Most differences are definied by sentence or even word-level responses. The sleuth might be called “luv” or “chap,” for instance. They might either “curtsy” or “bow.”

After establishing the sleuth’s gender and identity, the player is asked to choose a “favorite color.” This decision is a less-than-obvious way for players to select one of four possible “stories” in Moonmist. Without question, the presence of multiple mysteries is the single most-discussed characteristic of Moonmist. In each of the four possible paths, the player finds different solutions to two gameplay objectives: determine the identity of the “White Lady” haunting the castle and locate Lionel’s hidden treasure.

Infocom had experimented with multiple routes before: Mike Berlyn’s Cutthroats featured three shipwrecks for the player to explore. Writing about its technical limitations in 2022, I suggested that Infocom had not found in Cutthroats a way to situate a middle ground between the large and the bad. Perhaps this is too harsh. I wouldn’t call Cutthroats bad today, but I do feel that it does not adapt realistically to its technical constraints.

There are some improvements. Cutthroats selected a shipwreck completely at random after several turns of play. Moonmist allows the player to choose. The ramifications of the choice are unhelpfully obfuscated, though.

"And what is your favorite color, Ms. Drew?"

While we know today what this question means, its significance is not telegraphed to new players. It never says so, but Moonmist only recognizes four colors. If an unrecognized color is chosen, then a “valid” one is selected at random. Playing every route might prove to be a kind of “guess the color” problem, though at least the valid colors are likely suspects.

<GLOBAL COLOR-WORDS
<PLTABLE <VOC "YELLOW" ADJ> ;FRIEND-C
<VOC "RED" ADJ> ;LORD-C
<VOC "BLUE" ADJ> ;PAINTER-C
<VOC "GREEN" ADJ> ;DOCTOR-C
;<VOC "VIOLET" BUZZ> ;OFFICER-C
;<VOC "ORANGE" BUZZ> ;DEALER-C>>

Note that in the above passage the bottommost colors, “VIOLET” and “ORANGE” have been commented out, as they were not featured within the released game. This detail is especially noteworthy because the four routes that we do have feel spare and underimplemented. It’s surprising that Moonmist was initially scoped for more content!

It’s a Mystery

With our choices made, the sleuth proceeds to enter the castle, where the main dramatic questions of the plot are asked. For a short number of turns, it really does feel that we readers have entered the text of a Nancy Drew story. We are introduced to a number of familiar types that, while not particularly vivid, do generate nostalgic–for lack of a better word–vibes.

A young couple are dancing to the faint sound of rock music from a portable radio on a table nearby.
The girl is a stylish London deb type. Her dark hair is cut boyishly short. Her height and figure would make her a perfect high-fashion model.
He's a tall blond, sporting a white dinner jacket and scarlet cummerbund. He moves with the elegant swagger of a Guards officer and young-man-about-Mayfair, both of which he is.

Jimmy Maher has–quite reasonably–pointed out that this dancing seems out of place, and yet I find that it has an enjoyable “how do you do, fellow kids” savor to it. It is interesting that the sleuth’s attractiveness–if she is a woman, that is–is an ongoing point of discussion. Ian, the young man in the scarlet cumberbund, kisses her hand:

"I say!" exclaims Ian, bringing your hand to his lips. His glance runs swiftly over your face and figure with an air of expert appraisal. "Are there more girl sleuths like you in the States, my dear?"

Other introductions follow: Dr. Wendish, the eccentric scientist, art dealer Montague Hyde, and artist Vivien Pentreath.

At a dinner party, the voice of deceased Jack’s deceased uncle emerges from a carved bust.

>examine bust
The bronze bust is hollow. When you lift it from its shelf, you discover a small tape recorder underneath, with an elaborate clockwork timer. Evidently the timer was set to play the tape during the usual dinner hour on this date.

This Encyclopedia Brown-style contraption advises us that Uncle Jack has hidden a treasure within the castle, and that he has left clues behind for Jack to follow. The note addresses Deirdre, the deceased (or missing) former fiance of Lord Jack, though if this is awkward for the sleuth’s friend Tamara, we are never told so.

The other mystery is that of the “White Lady,” the ghost haunting Tresyllian Castle. Sightings of her have risen sharply, and servants believe that Deirdre’s death is to blame.

Mechanically speaking, Moonmist‘s multiple routes do not offer meaningfully different experiences. One character will begin wandering the castle at random once dinner is over. The significance isn’t what the character is doing, as they do not do much. Rather, it is the fact that they do anything at all. For instance, we players ought to take note of this sentence:

Vivien is searching.

This is enough to tell us that Vivien is our suspect, so we go to her room and search a box there–not once–but twice, and discover the ghost costume.

>search box
[Which box do you mean, the wooden box or the small plastic box?]

>wooden
Inside the wooden box is Vivien's diary, so you stop searching.

>get diary
You are now holding Vivien's diary.

>search box
[Which box do you mean, the wooden box or the small plastic box?]

>wooden
Inside the wooden box are a shimmering white gown and blonde wig, so you stop searching.

(Congratulations, Ms. Box! You've identified the ghost!)

Finding the treasure involves solving a sequence of clues–each is a clue to finding its successor–until the treasure if found.

Dead Girl

Once the ghost is identified, we are offered a chance to read “the authors’ version of the crime.” There is, of course, in most paths, an actual deceased young woman that might or might not haunt the imaginations of Jack’s dinner guests: Deirdre, Jack’s former fiance. It isn’t clear when Deirdre died. We know that she lived in a house “just down the beach.” We also know that “flirting” between Deirdre and Ian led Jack to break things off.

However long ago it was, it Jack apparently found comfort in the arms of his secretary, Tamara. While some endings indicate otherwise, it seems at initial glance that Deirdre’s death (and possible suicide) has made no mark on the unsentimental hangers-on at Tresyllian Castle. If the sleuth asks flirtatious friend Ian (who was not similarly cut off) about Deirdre, his response is rather bland.

"Poor thing, her life came to a sad ending."

Hilariously, Jack says the exact same thing. Dr. Wendish says a little more, though he begins in the same way:

>ask wendish about deirdre
"Poor thing, her life came to a sad ending. As did her grandfather, whom I treated at my clinic."

Perhaps there is established etiquette among the English aristocracy for characterizing the untimely deaths of young women! To find an approximation of human sympathy, we must ask the artist Vivien.

>ask vivien about deirdre
The artist shrugs with a sad, wistful smile. "What can I say? Deirdre was a most unusual girl... utterly unworldly... almost fey. She grew up in a cottage not far from here, you know. Her drowning was a terrible tragedy... and yet... sometimes I'm not sure she WANTED to go on living." She turns her face away to hide a tear.

This feels a bit like the pendulum swinging the other way, doesn’t it? Still, this is the only emotional response to a recent and untimely death that would presumably bother empathetic people of goodwill.

The strangest textual feature of Moonmist is, despite Deirdre’s death being an inciting incident for many of the story variants, the small amount of attention paid the absence of Deirdre. She is mostly umourned. Her body is missing. Her death is really only discussed among the servants who we are meant to see as a superstitious and possibly ignorant lot.

While the underlying stories of Moonmist are composed of emotionally potent materials (young love, death, grief, jealousy), the reality of playing Moonmist is examining a box two consecutive times. We players should be as haunted as Tresyllian Castle, but instead we wander a barely-described knick-knack container. The emotional realities of the game world only reattain focus during the authorial notes describing each ending. For instance, in one story, Lord Jack is to blame for all the trouble:

Lord Jack murdered Lionel in order to inherit the title and castle.
Deirdre was blackmailing Lord Jack to marry her, because she knew he was plotting to kill Lionel. So Jack tried to do away with her, too, by dumping her down the well.
But Jack was wrong in thinking he killed Deirdre. She survived and came back to the castle at night -- to play on Tamara's nerves, since her arrival seemed to be part of Jack's plot; to hunt for proof that Jack murdered Lionel; and to try to frame him for her own "murder" by planting the tiny red jewel in his trouser cuff, until she lost it in the drawing room.

This is all quite interesting, and if our playthrough had featured such details, we would be discussing a different game. Unfortunately, this is something we are told at the game’s conclusion. The sleuth’s own fact-finding efforts do not uncover the story.

Regarding Diversity and Representation

Many readers and critics will be familiar with a Wikipedia list of games featuring LGBTQ representation. Moonmist is one of the earliest entries, citing a bisexual relationship between Deirdre and Vivien. The entire basis for this characterization lies in the ending to one of the plotlines:

Vivien was intensely attached to Deirdre, and she jealously hated Lord Jack for coming between them. When Deirdre accidentally fell down the well, Vivien was convinced that she had committed suicide because she felt abandoned by Jack.
So Vivien began her vengeful ghostly masquerade -- to find proof that Jack was responsible for Deirdre's death, to prick his guilty conscience and make him confess, and to terrorize Tamara, who replaced Deirdre in Jack's affections.

While one could read “attached” and “coming between them” as evidence of a reciprocal relationship, I don’t find the text definitive and, because these details aren’t borne out during gameplay, we are left guessing. My personal reason for not reading these few words as evidence of a mutual relationship lies in the curious details of The Witness and Seastalker. The former’s eccentric treatment of lesbian murder girl Monica and the latter’s queer-coded Commander Zoey Bly, a “delicate beauty” in need of a lesson both quash any impulse I might have to see this characterization in a positive light. Given the wider context of the Infocom catalog, I experience Vivien’s ending as the story of an obsessive creep stalking a young person.

Closing Thoughts

Moonmist is not a single well-developed idea. Rather, it is four minimally-developed ones. Because of the 128K ceiling imposed on Commodore 64 games, there was not sufficient space for developing four separate stories in an atmospheric setting. Simulating multiple NPCs was likewise impossible. Cutthroats (1984) suffered similar problems, although those were addressed with a “wide” common gameplay area with a “narrow” variable track (the shipwreck itself).

While it features well-constructed and appealing feelies, Moonmist uses them as substitute for in-game implementation. This practice was likely an attempt to overcome the 128K ceiling, but readers have received the strategy poorly. Gamers of the day were open to looking up text in supplemental documents in games that did not have text as a central mechanic (RPGs, mostly), but moving text outside of a text game was–and still is–an ill-regarded practice.

Moonmist seems so dependent, culturally, on ideas established by the Nancy Drew series (and, to a lesser extent, the Hardy Boys) that it would be hard to understand without them. A lot of what happens within is based on cultural shorthand. Castles, hidden tape recorders, scavenger hunts, and weightless attraction all invoke a nostalgic ambience that Moonmist calls attention to without ever realizing. Had this text a more singular and deeply realized story, many readers might like it just as much as they wanted to like it.

Next

There are only 13 games to go! Some will be rough going. I have never reached the endings of Border Zone or Nord and Bert Couldn’t Make Head or Tail of It. I’m not sure what will happen there!

The next game on our list is Hollywood Hijinx, a perfectly fine entry in the “treasure hunt in a big, weird house” genre.


Renga in Blue

Epic Hero #2, Dungeon of Derojhen (1982)

This continues my series on Marc Leduc starting with Epic Hero 1. At least, unlike the previous game, this game is traditionally hero-like. Before going into the gameplay: I’ve managed to unearth an autobiographical statement! It comes from the first issue of Chewing Gum (the publication for the Colour Genie group that Leduc ran); the […]

This continues my series on Marc Leduc starting with Epic Hero 1. At least, unlike the previous game, this game is traditionally hero-like.

Before going into the gameplay: I’ve managed to unearth an autobiographical statement! It comes from the first issue of Chewing Gum (the publication for the Colour Genie group that Leduc ran); the entire issue was written by Leduc himself.

Via Everygamegoing.

He was not British at all but Canadian. He moved in 1979 and to work at a telecommunications company (before founding his own); his wife was from Nottingham and by 1983 they had three kids. (Or he met his wife before moving, it’s unclear.)

He gave lectures on machine programming and was “an avid reader of science fiction and fantasy novels.” He also described how his wife Anji sometimes joked about starting a “Colour Genie Widow Users’ Group” and he intentionally made sure the computer stayed turned off over the weekend.

I don’t have a copy of what the packaging looked like, but Molimerx was fairly consistent during this era, so a sampling:

From both the Centre for Computing History and the Museum of Computer Adventure Game History. The bottom two are Scott Adams games, the hand-written “Golden Baton” is based on a Brian Howarth game.

There might be yet more buried out there, but for now, let’s play–

This time we are a warrior tasked by King Brion to find a jewel that will “nullify” the evil spells of the wizard Sharloebon. The Jewel of Derojhen is hidden within the wizard’s castle itself.

The structure here is fairly novel; rather than starting outside the forest of the Evil Magic Person, we’re in the grounds of King Brion’s castle, and we need to collect ingredients in order to get to the bad-side. I’m reminded (very slightly!) of Temple of Bast, which had some elaborate puzzles at “your house” that needed to be solved before crossing dimensions.

We start in a garden and there’s a frog that jumps away if we try to pick it up.

The frog leaps ….
…. and slips through your fingers!

The frog hops over to the other side of the royal garden.

You are in the east end of the royal gardens.
Objects you can see are: Breathtaking Pond ■ Green Frog ■ Stick of wet blue chalk ■ Tree
Possible exits: WEST

The “wet” blue chalk is just a straightforward item, and the tree has a branch you can grab and turn into a stick. If you try to grab the frog again it will jump back to the west side of the pond (where the game started). We’ll deal with the frog later.

For now, let’s head over and get our briefing, going to the northwest corner of the map at the “sitting room” where King Brion awaits.

To the east is a “Royal Kitchen” with kitchen drawers (containing a knife), an oven, and a monocle. I’ll give away right now that if you try to use the chalk it will break (because of the “wet” part); I came up with HEAT CHALK as a way to use the oven to dry it out.

This is the same “ambiguous control” issue we just saw in Seiko’s Adventure. Rather than specifying a set of micro-actions (open, put chalk inside, close, turn a knob) you just specify the whole result in one go. It can be tough to come up with a verb in this case, although I got lucky because the screenshot above represents my first try.

South from the sitting room is a “Chapel of St. Barendon” where you can PRAY and cause a candle to appear, followed by a holy chalice and some incense.

Pray a fourth time and “Lightning strikes you for being so greedy!” There’s not really a way to know what the limit is until you find it, so it’s essentially an intentional death that’s part of the meta-narrative.

Stepping south again is the last room of the start area, a “wizard’s laboratory” containing a “book” and a “dusty wand”. If you don’t have the monocle you can’t read the book (the text is too small). With the monocle it still is broken up:

It’s faded a bit. You can read :
“Draw pentagr…Chali…Fill with Blo…Frog…Wand wav
Lit Candl…Smo..Incen” The rest is unreadable.

This suggests a ritual:

1.) Draw a pentagram
2.) Fill a chalice with blood (from a frog?)
3.) Wave a wand
4.) Light a candle
5.) Smoke some incense

With the chalk dried out, we at least have step one.

I was still lacking the frog part, so I went ahead and did my verb list…

…and noting I was trying to play nice with the frog, and we’re after blood, I just decided to use one of the killing verbs instead.

What will you do now? ATTACK FROG
Tell me how to do it. (I.E. WITH ROCK)
What will you do now? WITH KNIFE
That was a cold-blooded thing to do!
But it had to be done!

(Other verb observations: CLEAN and WASH are good to remember. If I hadn’t already used PRAY at the altar I would have tried it now.)

I went back to the wizard’s laboratory and tried to do the ritual. After some fussing about I did DRAW PENTAGRAM, GET BLOOD (FILL doesn’t work), WAVE WAND–

Except the game said I couldn’t do that yet. I realized it was a “dusty wand”, so the CLEAN I just saw off the verb list might be useful. Let’s try again!

Curious. Looking back at the book again it didn’t seem like I left anything out (“Draw pentagr…Chali…Fill with Blo…Frog…Wand wav”) but there is a gap between the blood and the frog part, and even though we used the blood of the frog, maybe it there’s an extra frog step?

1.) Draw a pentagram
2.) Fill a chalice with blood from a frog?
2 1/2.) Do thing with frog
3.) Wave a wand
4.) Light a candle
5.) Smoke some incense

I tried to place the frog (and various other acts) but no luck. I also tried wand actions other than just waving and still no luck.

I figured now would be a good time to turn to you, the readers. Any thoughts on what I’m missing? I would say “please only people who are playing along, no help from people who looked at a walkthrough” except there is no walkthrough. (No help from people who have looked at the machine code yet, though!) I’m having fun with this (I’ve always liked “ritual” style puzzles in games) so I’d rather solve it as normally as possible before breaking things open.

Thursday, 26. March 2026

Choice of Games LLC

“Silk and Secrets: Rites of Pleasure”—Infiltrate an elite secret sex society!

We’re proud to announce that Silk and Secrets: Rites of Pleasure, the latest in our “Heart’s Choice” line of multiple-choice interactive romance novels, is now available for iOS and Android in the “Heart’s Choice” app. You can also download it on Steam, or enjoy it on our website. It’s 40% off until April 2nd! Please note the game is currently not dis

Silk and Secrets: Rites of PleasureWe’re proud to announce that Silk and Secrets: Rites of Pleasure, the latest in our “Heart’s Choice” line of multiple-choice interactive romance novels, is now available for iOS and Android in the “Heart’s Choice” app. You can also download it on Steam, or enjoy it on our website. It’s 40% off until April 2nd! Please note the game is currently not discounted on Steam; we’re working to rectify that ASAP.

Infiltrate the orgiastic secret society beneath the modern-day Palace of Versailles! Will you expose their sex rituals or surrender to their pleasures?

Silk and Secrets: Rites of Pleasure is an interactive erotic novel by A. Simon where your choices control the story. It’s entirely text-based, 100,000 words and hundreds of choices, without graphics or sound effects, 5/5 peppers on the Heart’s Choice spice rating scale, and fueled by the vast, unstoppable power of your imagination.

When you begin your research into Versailles’ decadent royal history, you uncover secrets far more lustful than you ever imagined. A society called the “Court of Pleasures” secretly carries on the hedonistic rituals of Louis XVI’s court. Initiated into the society as the Duchess of Sighs, you must decide what you are willing to trade for access, influence, and truth. Will you investigate the society from within, gathering evidence to expose it, securing your place in history? Or will you embrace your new role, surrendering to the pleasures, power, and protection the society offers?

And most importantly of all, will you manipulate others’ desire for your advantage, indulge in sexual pleasure for its own sake, or find true love amid the society’s erotic rituals?

Marcus, the palace security guard who brought you into the society, has broad muscular shoulders, a sultry gaze, and a wickedly talented tongue. He’ll let you take control and go down on you in public–or, if you want, he’ll dominate and teach you a thousand new tricks. Your fellow scholar Jules has fantastic wealth and privilege–not to mention fantastic blue eyes and even better fashion. A connection with his family could be your ticket to power–and a night with him means acrobatic tricks and burning intensity. Or there’s the smooth-voiced man known only as the Duke of Dishabille, masked and elegant. He’s learned countless historical forms of debauchery during his tenure in the society: let him introduce you to his collection of toys.

Or, find pleasure for a night or just a few minutes with any one of the society’s other members of any gender. But beware: all knowledge comes at a price.

• Play as a woman; have relationships with men and liaisons with people of all genders
• Choose a persona at your initiation–cunning courtesan, saucy barmaid, or innocent maiden–and act it out in sexual scenes
• Slip into hidden chambers and uncover dark secrets that have been concealed for centuries
• Play by the Court of Pleasures’s rules and become a society favorite, or defy their strictures for the sake of your own ambition

Will you expose the truth, or abandon restraint and expose your hidden desires?

We hope you enjoy playing Silk and Secrets: Rites of Pleasure. We encourage you to tell your friends about it, and recommend the game on Facebook, Twitter, Tumblr, and other sites. Don’t forget: our initial download rate determines our ranking on the App Store. The more times you download in the first week, the better our games will rank.


Renga in Blue

Seiko’s Adventure (1983)

Also known as Seiko no Adventure or 星子のアドベンチャー; I decided to use the English title given in the game itself. Yasuhiro Fukushima was the child of entrepreneurs (his father: movie theaters and pachinko parlors, his mother: a restaurant) and had his own desire to start a business after graduating from Nihon University in architecture. His […]

Also known as Seiko no Adventure or 星子のアドベンチャー; I decided to use the English title given in the game itself.

Yasuhiro Fukushima was the child of entrepreneurs (his father: movie theaters and pachinko parlors, his mother: a restaurant) and had his own desire to start a business after graduating from Nihon University in architecture. His first enterprise involved making a monthly magazine dedicated to the shopping complex Nakano Broadway in Tokyo, as there was no central organization by category.

Inside the mall at its launch in 1966. Source. The mall had declined by the 1980s before rebounding as an otaku hotspot.

The idea was to print 50,000 copies and distribute them each month; businesses were interested in the idea, but he ran into trouble with his own “company” not being registered as an official business himself and the project got scuttered.

After a stint of travel abroad (including taking housekeeping jobs in the United States) he returned to Japan, got married, and came across his next entrepreneurial scheme. He was looking for housing; the typical route in Japan was to start with a public housing project and save money for a house. Public housing ads tended to be hard to follow and he found that he needed to track them daily to get a spot; spots were so popular they got sold by lottery from the applicants. With the notion that others were having just as much trouble as he was, in 1975 made a new company called the Eidansha Boshu Service Center, publishing a monthly newspaper which eventually reached a circulation of 30,000 and profit of 70 million yen a year. (In 2026 USD accounting for inflation, that’s roughly around $700k a year.)

While this was respectable enough, Fukushima remained dissatisfied and looked around for another follow-up business. Rather than just brainstorming on his own, he set up a “Conference of the Future” and invited both employees and friends for a series of meetings to discuss business possibilities.

Fukushima tried one idea, an automated sushi shop using technology from the US, aspiring for a national chain, but ended up closing up after three months. (The price was low, but the sushi looked unappetizing.)

The sequence of business shenanigans gets a little complicated from there. Kabushiki-Kaisha Eidansya Fudousan was established in 1980 as “a real estate sales and brokerage company” wholly owned by Eidansha Boshu Service Center…

…but Fukushima decided to pivot not long after. He noticed that personal computers were starting to seep into businesses and that someone could handle creating software for tasks like accounting and customer management. Around this time he also learned of Toshiba’s new line of office computers and was impressed enough to ask to become a sales agent. The company was apparently quite good at it, beating all other sales partners over a 6 month period.

Here we have the one gap in the story and I’ve pulled from every account I can find: why did Fukushima switch from thinking of business software and selling “office machines” to selling games? This was not natural or inevitable (Fukushima even talks about visualizing a price for his application software). My guess would be, based on the company not having any programmers (this, at least, is documented), Fukushima ran into a problem: business applications only made sense to develop “in house”. He still dreamt of software so to get programmers “on the cheap” the only way was to switch to games instead. This isn’t glamorous so it would explain why sources skip over this part, but it does fit with his serial-entrepreneur-who-tries-things-until-they-stick career arc.

However it happened, the company did one last major pivot, transforming into Enix in August of 1982. (The name comes from a combination of the computer ENIAC and the mythical Phoenix.) Without programmers, they decided to attract authors with a contest. Top prize: one million yen. (Although note the fine print: it was an advance on royalties, not a straight payment.)

From bowloflentils, via Tumblr. I don’t think this would have worked to solicit accounting software.

There was initially very little interest; as Enix was a brand-new company and it was natural to be suspicious if the contest was even real. He ended up calling stores and visiting clubs and even contacting authors directly throughout Japan, promising they would “give the top award without fail”; in the end they received around 300 entries.

13 of them were chosen as contest winners, although rather than just publishing the games “straight” they had editors check the software and send feedback to the entrants, who then changed their programs before publication. The whole set of 13 was published in February of 1983. The one million yen went to Morita no Battle Field by Kazurou Morita (who founded his own company with the proceeds); the game best remembered now is one of the runner ups (“Excellent Program Award”), Door Door by Koichi Nakamura. (It’s the only one of the games to get a 21st century port for Keitai phones.) Yuji Horii wrote another one of the winners (“Winning Program Award”) and both him and Koichi Nakamura ended up collaborating on the Famicom RPG Dragon Quest. Both authors also worked on one of the most important Japanese adventure games, The Portopia Serial Murder Case, but that’s a story for a different time.

For now, we’re focused on the adventure(s) that came out in February of 1983. The ambiguous “s” is there because I’ve seen the “adult” game Mari-chan’s Close Call also sorted as an adventure (ADV by the Japanese abbreviation system) although I don’t think it counts. It was written by Tadashi Makimura, the author of pioneering erogē game Yakyūken (which I mentioned briefly back in January); while the original game is a straightforward game of strip rock-paper-scissors, Mari-chan’s Close Call adds a plot, where rock-paper-scissors is used to escape various dangerous situations (where the heroine can die via stabbing, electrocution, etc.) and where surviving a scenario causes clothing to be removed.

Seiko’s Adventure admittedly only barely counts too, but you’ll see why in a moment.

The school of today’s author, at the time he wrote the game.

Seiko’s Adventure was instead written by Toshiyuki Asanuma, a teenager from Gunma Prefecture attending Gunma Prefectural Kiryu High School, who had two years of computer experience. We know this because it says so on the back of the packaging. I do not have any records of what he did after high school.

Also into gymnastics and soccer! From the Game Preservation Society.

Seiko’s Adventure involves a different hapless heroine situation, although there’s a starting screen before the game explains what’s going on:

The game (or rather, Seiko directly) is asking what is your name. I responded “Blue”; Seiko responds “nice to meet you” and then the title screen shows up:

I’m Seiko. Right now, I’ve been tricked by a man and am trapped in a spaceship. In just a little time, this ship will launch into space. Please use the star-shaped communicator I gave you before and talk to me to save me. Please be careful!

We then return to the star (which is the communicator, I assume) and Seiko observes “it’s a big ship, isn’t it.” The game then prompts you to type. You’re supposed to agree with her and you have to use an exact phrasing. After a brief amount of time (real time, only a few seconds) you get prompted with a little more help on that exact phrasing.

What it is showing above with the { _ _ } is a sort of game of Hangman. If you type the first character correct but not the other it will show up in the position, like

{ ウ _ }.

Assuming you don’t get past this part at all, after enough time (again, real time!) our heroine ends up in a hospital and you get a game over screen.

The right response is “ウン” (“un”), a somewhat informal “yes”. It isn’t supposed to be used with strangers (I guess the implication is we know Seiko, given she gave us a communicator.) Even in an informal sense, I would have expected “sou” (it’s not really a direct question, just something we’re agreeing with), but the Hangman is supposed to kick things over to the right answer.

After correctly affirming in the right way, you get a slightly more traditional adventure-view:

I’m unclear if we’re supposed to be seeing the image (via the communicator) or it gets described somehow, but the text here has Seiko say “it looks like the entrance.” Again, after a pause the game gives a number of spaces to fill in.

_ _ _ _ _ _ _

I tried ロロロロロロロ (7 “ro” symbols, this game just uses the katakana set) and the game responded with:

ロ _ _ _ _ _ ロ
_ _ _ _ _ _ ロ

There are two phrases here, and either one works. One starts and ends with “ro” and one only ends with “ro”. Unfortunately, this kind of brute force doesn’t work with everything, and I’m honestly unclear when it works or does not work. For example, “a” (or “ア”) shows up with both words, but just trying アアアアアアア doesn’t give feedback as far as the correct position goes. I’ve tried applying various types of logic but I don’t know the pattern.

The majority of the game is this way: you get some kind of prompt from Seiko, and then you play a game of guess-the-word/phrase in Japanese to figure out the right response, where if you get a character in the right spot the game will tell you.

The two correct options are ロックヲアケロ (open lock) or ハッチヲアケロ (open hatch).

As I was solving this, it wasn’t clear to me how Seiko was supposed to be doing the unlocking. (It’s not a key lock, just a trigger for an airlock, but this only became clear after passing through.) In a normal adventure game I’d check her inventory, ask her to examine things more closely, look in different directions, etc. but that’s not how this works: you are forced at each scene to give the right prompt in a short amount of time or die.

The next part I was baffled enough I needed help from the walkthrough.

The scene opens to a 3d hall and you’re asked to tell “where” and “how far” Seiko should go. This is followed by a top-down map.

This includes a line complaining about me (Blue) being too slow.

Assuming this is from Seiko’s perspective in 3d, I figured this would involve walking forward by some amount. Or possibly north (assuming the top-down map is something like a traditional adventure map). What I did not expect is ミギヘ1ホ, which is “turn 1 to the right”. Just a little ahead on the right wall of the 3d picture (which you can’t see now because it has gone away) is a thing Seiko can turn and look at.

“This is the controller for the hatch.”

I did “all ro” again; seven characters, last character ro:

“Close hatch”, I guess? (“ハッチヲシメロ”, hatch is the same, the verb changed from “open” to “close”.) It’s not like there’s an obvious button Seiko’s supposed to be pressing, though. It’s almost more a conceptual command as opposed to, say, PUSH BUTTON; usually CLOSE is applied in adventure games to things like doors where the mechanics are clear.

At least the next I could do (ヒダリヘ1ホ, turn 1 to the left) and I tried to do walking forward again but had issues again. The game quickly went straight to END (no hospital, even) if I was typing in wrong. I eventually tried “マエヘ10ホ” (10 meters ahead) and the dot moved on the screen a little bit:

I stepped back and tried the same thing with 50 meters and got the exact same amount of map movement. I randomly tried different number values until the game decided to loop and walk the rest of the way at 250 meters.

I went back and repeated the sequence and found what happens is the game moves the exact same amount no matter what you put as a distance, and then after enough small moves forward the game automatically travels the rest of the way to the end of the hall. (No idea what’s going on with that branch to the left; you skip that.)

“You have done well to make it this far.” I have?

I might have missed some text, but the game then shifts to asking, and I am not kidding, “how many keys are on this keyboard?” Hope you aren’t using some third party keyboard.

From NEC Retro.

20 + 2 + 13 + 14 + 14 + 14 + 5 = 96. Why are we doing this?

Wait, what? Oops, I was looking at an 8001, the game’s platform is PC-8801, which has 92 keys. (ALSO: can’t add either, one extra +14, whoops.) Sigh.

With that done, I got an…

…out of memory glitch. Terrific.

I peeked ahead and everything after this is a minigame. I’m going to just give the screenshots from the walkthrough, so it isn’t “Blue” any more; the author named themselves after a hallucinogenic leafy substance.

Here, we’re supposed to type all 50 sounds on the Gojūon chart (that is, all the Katakana keys, for some reason).

This is followed by a minigame where you aim at three places on a ship.

Then there’s a minigame where you need to cut 5 of the 9 parts of the LSI chip, except that some of them (totally at random) will cause you to fail. This is like the switch-choice partway through Cosmo Cross where you can lose at no fault of your own. Also just like Cosmo Cross, there’s no saved game feature.

The walkthrough says you don’t need to do anything at this screen.

Finally, Seiko — this is her face apparently — manages to return safely to Earth. Good job! How did she get to the hospital if we failed since I presume that’s on Earth too?

Perhaps you are wondering if the Japanese in 1983 were impressed by the inscrutability. At least in the one review I’ve found, not really. This is from long after the game was published (Micom Basic, May 1997) but the author, Akira Yamashita, remembered Seiko’s Adventure because it was his first adventure game.

He had read a feature article about adventures, and how the player will “solve mysteries” and “become the protagonist” of a story; this was appealing to him as he had previously thought of gaming as a “test of reflexes”. He was most interested in the Sierra Hi-Res games, but he owned a PC-88, and there weren’t (at the time) many options available. Even the Micro Cabin Mystery House wasn’t ported to the PC-88 yet.

He came across Seiko’s Adventure, which had the prestige of the Enix contest attached, but he quickly found himself disappointed. He had a “sense of mismatch” with the game where it felt quite different from what he had read about, with no characters to talk to or items to use and the weird semi-Hangman which I described; he calls it (accurately, I think) essentially a series of minigames rather than an adventure.

Seiko’s Adventure really makes me wonder what the 287 or so games that didn’t make the cut were like.

Many thanks to both f_t_b and Alex Smith for their help. My major sources were an article in The Japan Economic Journal, April 20, 1991 (“Road toward Dragon Quest sometimes rocky; Enix Corp. founder encountered setbacks before massive success”), a story in Japan on the Upswing that pulls information from a December 1999 profile in Asahi Shimbum, and a direct interview with Yasuhiro Fukushima on Youtube.

BONUS: Gunther Schmidl has a fixed version that I’ve placed here (no doubt some proper computer settings would also do the trick, but this should work on any regular PC-88 emulator without a hitch).