Style | StandardCards

Planet Interactive Fiction

Friday, 29. August 2025

Renga in Blue

Ring Quest (1983)

Three Rings for the Elven-kings under the sky, Seven for the Dwarf-lords in their halls of stone, Nine for Mortal Men doomed to die, One for the Dark Lord on his dark throne In the Land of Mordor where the Shadows lie. In my last post I wrote about an original game HOBBIT (1975) coded […]

Three Rings for the Elven-kings under the sky,
Seven for the Dwarf-lords in their halls of stone,
Nine for Mortal Men doomed to die,
One for the Dark Lord on his dark throne
In the Land of Mordor where the Shadows lie.

In my last post I wrote about an original game HOBBIT (1975) coded in FORTRAN for Hewlett-Packard mainframes that ended up having a port for TRS-80; it was also the inspiration for the 1980 game The Wizard’s Castle which itself spawned many clones.

Water, Wind, and Sand, art by J. R. R. Tolkien, 1915.

To start today (and get to Ring Quest), I need to talk about another game called HOBBIT, from 1978 or so, which may or may not be related. I think the evidence is strong that the author Steve Richardson was thinking of the original HOBBIT, but I’m not sure. For the purposes of my discussion here, I’ll call the two versions CLASSIC-HOBBIT (for the original) and NEW-HOBBIT (for the new version), which was made on a PDP-11/70 at Dickinson College, Pennsylvania.

The “1978 or so” is because Richardson graduated out of high school in New Jersey in 1978, and the author of Ring Quest (Pieter Bots) first discovered the game during his 1980-1981 academic year, so the game had to be written between the two. (Incidentally, the game that Rob mentioned in the comments as being for DEC computers — that is, ported for the type of PDP that Dickinson college had — is from April 1978, so is likely CLASSIC-HOBBIT, since Richardson was still a high school senior in New Jersey at the time.)

Sam and Frodo Climb Mount Doom, 1978, by Bg Callahan. CC BY-NC-ND 4.0 license.

We do not have NEW-HOBBIT. We do have a description from the author on his blog from 2007:

When I was in college at Dickinson in Carlisle, PA, I was a bit of a computer geek, and the school’s mainframe had a text-based adventure game called, oddly enough, ADVENT. It was fun, but frustrating; there was no SAVE command, so once you started, you had to keep going until you won or died. It wasn’t exactly Myst, but it was fun! As I was a programmer, I decided to write my own text-baased adventure game based on Lord of the Rings. Since program names on this system had to be no longer than six characters, I called the program HOBBIT. Characters moved about Middle Earth collecting the Rings of Power to throw into Mount Doom. I took huge liberties with the plot, but it was fun, and I learned a lot.

NEW-HOBBIT has six rings of power to collect (and one sword for killing Ringwraiths) which more or less matches the seven treasures of HOBBIT; more importantly, NEW-HOBBIT was oriented such that the entire game is on one outdoors grid representing a large-scale map. This is highly unusual and the only other adventure I’ve played for the Project (other than HOBBIT) that does something like this is Reality Ends. The latter point (combined with the name coincidence) especially makes me suspicious that Richardson had at least seen ORIGINAL-HOBBIT.

Now, since we don’t have the actual game I’m going to pass that by and move onto the game that we do have: Ring Quest.

Pieter Bots had come from The Netherlands to study chemistry in the United States at Dickinson; while there he found the university’s PDP-11/70 and discovered it had games.

One of the games was HOBBIT, that is, NEW-HOBBIT, the Richardson game, and as a longtime Tolkien fan he was interested. However, as Bots writes, Richardson “had taken such liberties with the story of Frodo’s quest” that “I felt that a more faithful interpretation was desperately needed.” He wrote his own HOBBIT (NEW-NEW-HOBBIT, I suppose), although ran afoul of his full ambitions due to 16K memory limit for BASIC programs. Then:

Having the same name as the authorized game on the system, my HOBBIT drew the attention of the system administrator, Tom Burtnett, first to my computer account (from which the file was confiscated on suspicion of being a hacked copy), and subsequently to my person, which started a principal-student relation of which I still have fond memories.

The affair brought me in contact with the maker of the genuine HOBBIT and his friends (notably Betzi Hoff and Chris Russell, and soon also Chris Leyon and Bill Biancamano) who led me into the magical world of Dungeons & Dragons and became great friends throughout my year at Dickinson and after.

Bots still wanted to make an “ultimate” Lord of the Rings game and when he came back to The Netherlands to resume his studies at the University of Leiden, he wrote Ring Quest on his Sharp MZ-80B (64K of memory) in assembly language.

From the Centre for Computing History, the same platform the Japanese Mystery House games were originally written on.

While at university it stayed as a “private game”, where his friends would “stay up until 3 A.M. to get to the end”. He then tossed the tape in a shoebox and unearthed it many years later (2007) and managed to rescue the audio. He then used that copy to make a Windows port.

No paring down to six rings for simplicity/size: our goal is to find all 20 rings (3 to the elves + 7 to the dwarves + 9 to the humans + the One) and toss them in Mount Doom. The map is still a grid, but 36 by 36, that is, there are over 1,000 rooms. Just for perspective, here’s what the empty grid looks like:

Some of the rooms are blocked off; this is similar to a “worm tunnel” design like On the Way to the Interview was, but with the added condition that you can go in diagonals (NE, NW, SW, SE).

You’re in Hobbiton.

S
You’re in the southern part of the Shire.

S
You’re wandering aimlessly through north-western Middle-Earth.

S
You’re standing on a foreign shore.

SE
The trees are too dense here.

NE
You’re wandering aimlessly through north-western Middle-Earth.

Even with 64K of memory I would not expect massive room descriptions; it’s almost as if the “reading lens” that usually gets used in text adventures is getting zoomed-back a bit to consider regions; however, individual rooms are still important, and in fact in my current state trying to go east direct from Hobbiton I am blocked by three entirely different death-rooms (which I’ll show off shortly).

The two “Road w/ rider” rooms both involve death unless you HIDE:

You’re following the Great Eastern Road.

Suddenly you hear a horse coming up the road.

HIDE
As long as you don’t move, you’re hidden from sight.

You see a darkmantled figure on a black horse appear on the road.
It passes by and dwindles into the distance.

Remember, diagonals are possible, but they would make the map too messy so I’m not including them. You can avoid the darkmantled figure with the opening steps NE, SE, NE, SE but that unfortunately doesn’t avoid any of the other three deaths I’m stuck on.

You’re in Hobbiton.

NE
You’re wandering aimlessly through north-western Middle-Earth.

SE
You’re crossing the Brandywine Bridge.
In the south-east you see the rim of the Old Forest.

NE
You’re wandering aimlessly through north-western Middle-Earth.

SE
Towards the south you can see the misty contours of low hills.

E
You’re on the Weathertop.

A dark shadow is creeping up the hill!

HIDE
There’s noplace to hide here.

The ringwraith pierces you with his freezing blade.

So you’re dead.

Death #2 involves the barrow-wight:

You’re standing among misty barrowdowns.

A tall dark figure like a shadow against the stars leans over you.
You’re in the power of a Barrowwight!

You find yourself lying on a stone bed.
A sickening pale hand is holding a shining sword, ready to pierce you!

S
Your opponent does not let you pass.

With a triumphant cry the sword is thrust forward.

From the Lidless Eye set of the Middle Earth Collectible Card Game.

Death #3 involves being swallowed up by Old Man Willow:

You’re walking through the Old Forest.

Overcome by a sudden drowsiness, you rest against a huge willow-tree.
Slowly you sink away into a crack in its bark…

S
You’re stuck in the bark of Old Man Willow.

(Not technically a death, but at least a softlock for the moment; still the most promising one to muscle through.)

Now, looking back at the map, you may notice some exits going west. You can take an entirely different route, and in fact, there’s enough rooms out there I don’t have it mapped out yet. An excerpt just to give an idea:

You’re in Hobbiton.

W
You’re standing at the foot of a slender tower.

CLIMB TOWER
From the tower you can see a great harbour towards the west.

GO DOWN
You’re standing at the foot of a slender tower.

W
You’re in the Grey Havens.

W
That way you’ll leave Middle-Earth.

Too bad the ships aren’t here, otherwise we could do The Lord of the Rings: The Heavily Abridged Version.

Lots of mapping likely before next time!

Again from the card game.

Thursday, 28. August 2025

Choice of Games LLC

“Star Crystal Warriors Go!”—Is your magic strong enough to save reality?

We’re proud to announce that Star Crystal Warriors Go!, the latest in our popular “Choice of Games” line of multiple-choice interactive-fiction games, is now available for Steam, Android, and on iOS in the “Choice of Games” app. It’s 30% off until 9/4! It’s tough fighting evil by moonlight and being an ordinary kid by daylight! Can you save your city’

We’re proud to announce that Star Crystal Warriors Go!, the latest in our popular “Choice of Games” line of multiple-choice interactive-fiction games, is now available for Steam, Android, and on iOS in the “Choice of Games” app.

It’s 30% off until 9/4!

It’s tough fighting evil by moonlight and being an ordinary kid by daylight! Can you save your city’s dreams from monsters, halt a magical plague in its tracks, and still help your new club prepare for the best school festival ever?

Star Crystal Warriors Go! is an interactive magical girl anime novel by Holly McMasters, with additional content by Brian Rushton. It’s entirely text-based, 250,000 words and hundreds of choices, without graphics or sound effects, and fueled by the vast, unstoppable power of your imagination.

You were just an ordinary teenager at Northside High School—going to classes, hanging out with your friends, spending time with your dad, occasionally staying up too late watching your favorite TV show.

Then a talking animal unlocked your magical powers.

Now, thanks to the Star Crystal in your heart, you can transform into a Stellaria, a magical warrior tuned to the light of the constellations. You’re one of the very few with the power to defeat the terrifying monsters that you call Nightmares. It’s just in time, too, because Nightmares are creeping into your city, corrupting people’s dreams to weaken the veil between the Dream Kingdom and the waking world and spreading a terrible sleeping plague. If the veil falls, the Dream Kingdom will engulf reality and the Nightmares – ruled by the terrifying Empress Nyx—will take over your world.

Fortunately, you’re not alone. Your friends in the waking world will always stand by your side, and there are other Stellaria out there fighting against the Nightmares—some of whom might be closer than you think! How will you push the Nightmares out of your city? Will you strike them down with your magic, use your wits to turn them against each other, or heal the darkness in their hearts with the shining compassion in yours?

As you learn the truth behind the Stellaria and the Nightmares, you’ll also learn the truth about your own past: your own dreams are filled with visions of a crystal castle and a love that feels like a memory. But even with the very fabric of reality at stake, you still have to go to classes, keep your grades up, and plan the school festival. How will you balance it all?

  • Play as male, female, or non-binary; gay, straight, bi, or asexual.
  • Customize your outfit, weapon, and the color of your magic for a truly spectacular transformation into a Stellaria!
  • Wield the power of dreams! Fling sparkling colored light, animate objects, bend reality, and more!
    Romance your loyal compassionate best friend, the new kid at school with a mysterious secret, or even a dangerously beautiful Nightmare!
  • Bond with your talking animal companion.
  • Uncover the mysterious past of the Dream Kingdom, cure a magical plague, and withstand the temptations of the Nightmares.
  • Plan the best spring festival that your school has ever seen—if you can negotiate with the Student Council!

Will you keep your heart’s Star Crystal full of hope and defeat the Nightmares, or will you fall to despair and join the darkness?

We hope you enjoy playing Star Crystal Warriors Go!. 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.

Wednesday, 27. August 2025

The People's Republic of Interactive Fiction

July 2025 PR-IF Post Mortem

July 2025 PR-IF Meeting Attendees The People’s Republic of Interactive Fiction convened on Monday, July 21, 2025 over Zoom. JP Tuttle, Doug Orleans, Mike Stage, zarf,  anjchang, Josh,  Matt Griffin (with special guest Gussie), and Hugh,  welcomed newcomer. Brad. Note: Thank you to these meeting notes written from notes by both Josh and Mike Stage. NarraScope Impressions Discussion Topics Videotome

July 2025 PR-IF Meeting Attendees

The People’s Republic of Interactive Fiction convened on Monday, July 21, 2025 over Zoom. JP TuttleDoug Orleans, Mike Stage, zarf anjchangJosh,  Matt Griffin (with special guest Gussie), and Hugh,  welcomed newcomer. Brad. Note: Thank you to these meeting notes written from notes by both Josh and Mike Stage.

NarraScope Impressions

  • Matt ran NarraScope, and attendees shared positive feedback. Members are eager to watch missed talks once posted on YouTube.
  • Some noted occasional difficulties connecting or staying connected via Discord to NarraScope’s talk channel

Discussion Topics

Videotome and Visual Novels
Josh referenced a 2022 piece by Freja Campbell on creating Videotome, a design engine for visual novels:

Blog post: https://itch.io/blog/454075/words-friction-syntax-stuff-i-thought-about-when-making-videotome

Matt discussed playing games built in Videotome. More info: https://communistsister.itch.io/videotome

Recent Games and IF

Mike highlighted the release of Kathy Rain 2: Soothsayer, a sequel to the 2016 point-and-click detective game Kathy Rain, available on GOG and Steam.

Josh shared several IF games he’s been playing:

sweetfish’s games: https://sweetfish.itch.io/

Night Confessional: A mechanical phone-booth confessional automaton game, winner of Best Narrative in the NarraScope showcase.

In Other Wordles: A shifting Wikipedia page about Wordle.

Eider Cake: Pixelated medieval manuscripts in Decker, featuring bird characters.

From ParserComp:

Swap Wand User (Neo-Twiny Jam, 500-word limit): Players swap equal-length words to unscramble sci-fi vignettes about memory loss. https://passerine.itch.io/swap-wand-user

Eye by Arthur DiBianca: A cryptic limited-parser game where players deduce the puzzle and rules. https://adibianca.itch.io/eye

Dan Fabulich created a hints page for Eye: https://intfiction.org/t/walkthrough-gradual-hints-for-eye-by-arthur-dibianca/75695

Poetry and Interactive Media

Matt recommended Nick Montfort’s All the Way For the Win, a poetic stunt for fans of three-letter words: https://penteractpress.com/store/all-the-way-for-the-win

Angela Chang showcased her 3D interactive VR poem about seltzer, where bubbles contain words that can be popped (erasure poetry) and the perspective can be changed: https://anjchang.com/seltzer/

Interviews and IF Competitions

Someone shared Manon’s interview with SV Linwood, who won IF competitions with games like Long Way to the Nearest Star, Dr. Ludwig and the Devil, and Cut the Sky: https://the-rosebush.com/2025/07/interview-with-sv-linwood/

Technical Innovations in Games

Hugh discussed GPU-hardware image compression formats, enabling smaller file sizes for standard images and reasonable sizes for very large images. This sparked ideas for detective games where players zoom into a large canvas to find clues.

This led to a discussion of Zarf’s process for digital implementations of Jason Shiga’s comics, such as Leviathan: https://zarfhome.com/leviathan/

Tuesday, 26. August 2025

Renga in Blue

HOBBIT (1975, 1979)

Today, we move back in time to 1975: personal computers were only starting to become real; the Altair wasn’t out until the very end of the year. This means if you wanted to play a coin-op game like Shark Jaws you could go to an arcade… …but for a computer game, you’d need access to […]

Today, we move back in time to 1975: personal computers were only starting to become real; the Altair wasn’t out until the very end of the year. This means if you wanted to play a coin-op game like Shark Jaws you could go to an arcade…

…but for a computer game, you’d need access to a large mainframe or minicomputer, likely through a university or a remote terminal connected to one. There were still many people who had no computer access at all.

This meant that at the second running of Windycon, a Chicago area fantasy/sci-fi convention…

…when they mentioned a computer installation, this was an opportunity to try something novel.

Source. One of the panels for the con, “Why is a Classic?” had “A. J. Budrys, George R. R. Martin, Lloyd Biggle, Gene Wolfe and others”.

An attendee, Joe Power, had just started as a freshman at Michigan State.

Someone on the con committee had arranged to have some remote terminals tied into some college’s time-share system upon which you could run a primitive version of Star Trek and another, very similar game with a fantasy motif (called HOBBIT). These were printing terminals, not CRTs (the ADM-3a was still about a year and a half away at that point.)

To re-iterate what ends up being a vital point, they were playing on printers, not screens. When someone (not Power) was playing HOBBIT, the game crashed, and Power subsequently got the source code by accident: he “managed to get a listing of it while trying to restart it.”

Power would eventually re-write the original FORTRAN code into his own game, first working on a TRS-80 (“a much cleaner version of the code and played roughly the same as the one I’d played”), then on a Sorcerer that was in a shop, rewriting the game from scratch and adding features based on his playing of Dungeons and Dragons. While he originally got a publishing contract to sell it “by Christmas” of 1979, that fell through, and he ended up sending the code to be printed in the July/August 1980 issue of Recreational Computing magazine.

In that magazine he mentions not only the original author of HOBBIT, but two other people who got the source code.

The article names “Chip Bestler” as the original author, who later transitioned to be Caitlin Bestler, making her the (currently) second known such person in videogame development. Bestler was deeply involved in the fantasy/sci-fi fan scene, being an editor on two zines (Effen Essef, Windyapa) and being part of Chicago’s bid for Worldcon in 1982.

ASIDE: The record is held by Ellen Kuhfeld, who wrote the University of Minnesota version of Spacewar. She wrote an article in Analog (pre-transition) back in 1971 that discusses the two versions; you can play the original MIT version here and a reconstruction of the Minnesota game here. The third known person is Jamie Fenton, who did the arcade games Amazin’ Maze and 280 ZZZap in 1976 (and helped finish work on Sea Wolf when the main developer, Tom McHugh, got sick); Fenton is most famous for the 1981 game Gorf.

Sketches for an unpublished Blackjack game by Fenton. The document dated November 24, 1974 is the same week as the convention. Source.

The excerpt earlier also mentions Kevin Williams and Dana Kaempen, who made a port for HP mainframe. Via “K. Williams” (who I’ve confirmed is Kevin), a version of original HOBBIT showed up for TRS-80 in the tape magazine CLOAD in August 1979. Based on Power’s description of the game, it hews to the original 1975 experience.

IN THIS GAME YOU BECOME A HOBBIT THIEF TRYING TO STEAL THE ORB OF ZOT FROM THE CASTLE OF THE EVIL WIZARD.

To be clear, HOBBIT is not an adventure game. However, the history ends up tying in with an adventure game (which we’ll get to in my next post) in a curious way, such that to do a complete history I needed to see what HOBBIT was like first. If anything, it feels most related to classic mainframe Star Trek mixed with some Wumpus, but let me play the game first, get into comparisons later–

The game is played on a 9 by 9 grid scattered with quite a few “warps” (that teleport the player), as well as gems, amulets, flares, demons (the enemies), and an Oracle. The rooms that don’t have any of those things just have “gems” (which can be used to bribe enemies or ask questions of the oracle). Commands are single letter directions (N/S/E/W) and (W)ait, (M)ap, (F)lare, (L)amp, (T)eleport, (K)ill, and (Q)uit. I ended up using the M key quite a bit, but you can imagine someone playing on a printer would not want the full map printed every step.

An example map. The special items are the same as in Wizard’s Castle.

The overall goal is to first find a Runestaff (which will be in a room that looks like it has a demon when looked into, but that’s a facade); the Runestaff allows teleportation, so the can then try to teleport to the right room (one of the rooms that teleports the player randomly otherwise) to find the Orb of Zot. The game’s instructions explain it like thus:

ALSO HIDDEN IN THE CASTLE ARE THE RUNESTAFF AND THE ORB OF ZOT. THE ORB IS DISGUISED AS A WARP AND THE ONLY WAY TO GET IT IS TO TELEPORT INTO ITS ROOM DIRECTLY. IF YOU TRY TO MOVE INTO ITS ROOM YOU WILL GO PAST IT IN THE SAME DIRECTION. TO TELEPORT YOU MUST USE THE RUNESTAFF WHICH IS DISGUISED AS A DEMON. BE CAREFUL WHEN YOU TELEPORT, HOWEVER, BECAUSE YOU LOSE ALL YOUR AMULETS AND GEMS (NOTE: YOU MAY ALSO DROP SOME GEMS EACH TIME YOU MOVE).

In most games of the Wizard’s Castle line the Lamp gets a lot of use — it can be used to peek in an unexplored room to see what is inside. The big catch here is that if there’s a demon, it can see you if you peek in, and charge.

This reminds me of waking up the Wumpus.

Getting charged seems common on higher difficulties especially. If you have one of the magic items it protects you, so the real reason to use a lamp would be to avoid warps, although I’ve found it better in general just to eat the teleport and resume walking from wherever the landing spot is. (This is especially because of how the Orb of Zot works, which I’ll get to later.)

(K)ill will try to do away with a demon for good, which involves simply invoking one of your items. Use an item enough times and it will run out of charge, meaning you need a different one.

The oracle will tell you — assuming you have the opal eye, or are willing to spend 20 gems — where one item is (except, unless I’m missing something, the runestaff or Orb of Zot, which aren’t given numbers). For example, on this screen I ask about the flares…

…and the map in progress below shows (in the last leg of the route) me going from the oracle to the location specified.

This is on difficulty 7 out of 9.

The flares will show all nearby numbers and are essentially the most powerful item in the game. They will not cause enemies to charge.

For the flare use above, here’s the actual result, with six of the squares revealed at once:

On lower difficulties, unless you get slammed early by a demon you’ll probably win (the lamp is worth using until you get one of the magic items to protect yourself). On higher difficulties, winning is harder, because the main obstacle is time.

This does not feel like Tolkien. It’s more like you’re facing off against Baba Yaga.

Hence why the flares are so useful: they explore the map in the fastest time possible.

As mentioned in the instructions earlier, the Runestaff and Orb of Zot have special conditions for finding them. The Runestaff will be in a room that appears to be a demon when looked at via lamp or flare (but isn’t). You don’t have to fight a demon to get the runestaff — you just walk in the right room and there it is.

The Orb of Zot is at one of the warps. At the Zot-Warp it works in a special way, by “jumping” the player over the square rather than hurtling them across the map. An example:

On the screenshot above, the Orb of Zot is at (5,2), so when you get the Runestaff you should teleport there, which essentially wins the game.

To summarize, the procedure for winning is:

a.) find at least one magic item (Ruby, Norn Stone, etc.) which can be used to resist demons

b.) trudge your way through the map and hope you find the flares; if you see the Oracle, ask about the flares (4), otherwise make sure to hit every demon and warp to check for the Runestaff and Orb of Zot

c.) as soon as you get the Runestaff, focus on entering into every warp until you find the one that has you “jump” to the next square as opposed to making a bigger warp; once you locate that, teleport to that exact square with the Runestaff.

Once you have the Orb of Zot you can still keep playing if you want to mop up more gems for points.

Regarding the Star Trek comparison — I’m not going to do a full history, but you can read through a playthrough here. While the placement on a grid could easily be coincidence, the thing that makes me fairly sure Bestler was making a reference is the flares. The Enterprise is on a large grid, and you activate a “long range scan” to see what happens to be nearby:

From Ahl’s Basic Computer Games.

While I can’t confirm (Caitlin Bestler died of cancer so I can’t ask her) I get the impression that the original HOBBIT was made separate from Dungeons and Dragons as a concern and is more along the lines of trying to convert the old computer games like Star Trek and Hunt the Wumpus to have a slight bit of fantasy flair. It is only historical inertia that we always associate “fantasy setting” with RPGs; Power, of course, started molding the form to fit that of the CRPG genre.

I incidentally did not bring up HOBBIT last time I talked about Tolkien games, but that’s because the connections are very tenuous and little more than namechecks (given Cthulhu is one of the demons, it’s playing pretty loose with the lore). However (just previewing my next post), imagine someone playing the game and disappointed that the references are so light, so they make their own version which really is Tolkienesque, and then someone else comes along and adds even more and — well, let’s save all that for next time.

Special thanks to Ethan Johnson and Kate Willaert who shared their research on Jamie Fenton and Ellen Kuhfeld. Ethan blogs at History of How We Play and Kate is at A Critical Hit!


Choice of Games LLC

Coming Thursday! “Star Crystal Warriors Go!”—Demo Out Now

Coming Thursday, our latest Choice of Games title Star Crystal Warriors Go!, a 251,000-word interactive magical girl anime novel by Holly McMasters, with additional content by Brian Rushton. You can now play the first three chapters for free, and check out the author interview here. Wishlist it on Steam as well; whether you plan to purchase it there or not, it really helps. Star Crystal Warriors Go

Star Crystal Warriors GoComing Thursday, our latest Choice of Games title Star Crystal Warriors Go!, a 251,000-word interactive magical girl anime novel by Holly McMasters, with additional content by Brian Rushton. You can now play the first three chapters for free, and check out the author interview here. Wishlist it on Steam as well; whether you plan to purchase it there or not, it really helps.

Star Crystal Warriors Go! releases this Thursday, August 28th.


My So Called Interactive Fiction Life

Action Design Reviews

After several rounds of refactoring, I thought it was a good time to pause, create design documents for the Claude generated code in each action (there are 45), then have Claude write professional developer reviews of each design.Needless to say this has revealed that many of the implementations are

After several rounds of refactoring, I thought it was a good time to pause, create design documents for the Claude generated code in each action (there are 45), then have Claude write professional developer reviews of each design.

Needless to say this has revealed that many of the implementations are sound, but some are deeply flawed. One of the challenges of large refactors is that Claude will randomly skip things in a checklist, so some refactors remain incomplete or even unimplemented.

Some of the reviews have ratings as low as 2 (1-10 scale) but a third are 9+ which means we have the right framework for action logic, but some actions aren't fully implementing that framework.

I'm forcing Claude to redo all of the action logic to meet an 8+ rating based on a list of professional developer measurements and IF platform behavior expectations.

So this isn't so much a refactor, but a tech debt run through Sharpee.

Monday, 25. August 2025

top expert

Let’s Repeat

The loop-de-loop. How do I hold all of these things. Hello, fellow beginners! Sometimes, we need to do something to a number of things or objects all at once. Maybe we’d like to check and see how many things have a property. We might want a list of the location of every thing in the […]

The loop-de-loop.

How do I hold all of these things.

Hello, fellow beginners!

Sometimes, we need to do something to a number of things or objects all at once. Maybe we’d like to check and see how many things have a property. We might want a list of the location of every thing in the game. Or in a region. We might want to change a value or number that multiple things or objects currently have applied.

This always happens during action processing rules. Let’s have a look at something that we can talk through.

lab is a room.
an apple is in lab.
a ball is in lab.
a hat is in lab.
this is the examination check rule:
	repeat with T running through things:
		say "[t]: [if we have examined t]examined[otherwise if we have not examined t]unexamined[end if].";
	say line break;
	
after looking when we have not looked:
	follow the examination check rule;
	continue the action;
every turn:
	follow the examination check rule;

We start with a room, “lab.” Lab is a popular choice for programs like this. It’s usually accurate, for one thing. At three characters, it is also a lot easier to type than “laboratory.”

Next, we declare that some things are in the lab: an apple, a ball, a hat. Unmentioned but present is the player, who is also a thing in the lab (a person is a kind of thing in Inform terms).

You’re with me so far, right? Let’s have a look at some substantial (and possibly new for some of us) code.

I chose to declare a rule instead of making a specific action-processing rule. That’s because I want to run the code in multiple places. There’s no special trick to it. All we have to do is say

this is the examination check rule:

I could have called the rule anything I wished. “This is the apple pie rule” or “This is the post-examination rule”. It’s up to you! Choose something readable, because you’ll see the rule name if you are using the “Rules” dubug command.

Next, we start our loop. In this construction, we need something to check as well as a nickname we can use for the objects we check. In the construction

Repeat with T running through things:

In this construction, we are checking all things in the game, one at a time. I’m using “T” to refer to the specific thing that Inform is checking as it works through its list. You don’t have to call it “T.” In fact, the name is largely up to you, though you should avoid words that Inform is already using, like “Door” or “Vehicle.” These can fail outright or cause strange behavior, so avoid this pitfall! One popular construction is “repeat with item running through things.” Do whatever works for you: readable code is good code.

While Inform is working, one at a time, through all things in the game, we have a chance to intervene. We can check a property or value. We can move the things from one place to another. Generally speaking, we can do anything the syntax will permit (which is largely the same as typical action processing rules). In this example, I’m writing a text for each thing in the game. This text is conditional, checking to see if the player has “examined” the thing before.

say "[t]: [if we have examined t]examined[otherwise if we have not examined t]unexamined[end if].";

We are referring to the specific Item that Inform is evaluating as “T”.

I’m using the the extremely helpful “if we have…” construction. Inform is smart enough associate many (most) verbs, even made up ones, with their action names. So here, Inform knows whether we have examined a thing or not. We can use that information to print our output. If the player has examined T, say “examined.” If the player has not examined t, say “unexamined.” (Edit: you could just as easily say “otherwise rather than “if we have not examined t.” Whatever reads better for you!)

Alright! We have a rule that can list every item in the game, declaring whether it has been examined or not. This kind of thing can be useful for debugging. Right now, we don’t have the rule doing anything; it just exists. Let’s hook it up!

To get this rule to fire, we need to get it into the turn sequence someplace. Every turn rules are often good for this sort of thing.

every turn:
	follow the examination check rule;

That’s all there is to it! Maybe. Every turn rules only happen after we do something. What if we want our rule to print when the game begins? We have a couple options there:

When play begins:

This is fine, but it prints before, well, play begins, which means that our output will print before the banner and room description. It’s probably cleaner if we print our output after all of that. That’s not too tricky.

after looking when we have not looked:
	follow the examination check rule;
	continue the action;

A game starts with a looking action, which prints the room description for the first time. If we want to latch onto that, we can use “looking when we have not looked,” our rule will only fire after printing the room description for the first time. Note the use of “continue the action.” After rules typical stop action and prevent Report rules from running. We have no specific need for that right now, so I’ve added “continue the action” to keep things moving.

Here’s a sample transcript:

Welcome
An Interactive Fiction
Release 1 / Serial number 250825 / Inform 7 v10.1.2 / D

lab
You can see an apple, a ball and a hat here.

yourself: unexamined.
apple: unexamined.
ball: unexamined.
hat: unexamined.


>examine ball
You see nothing special about the ball.

yourself: unexamined.
apple: unexamined.
ball: examined.
hat: unexamined.


>examine hat
You see nothing special about the hat.

yourself: unexamined.
apple: unexamined.
ball: examined.
hat: examined.

This is a simple, straightforward example, but we can do a lot more. Perhaps we want to narrow our search a bit. Imagine the we have an either/or property:

a thing can be cooked or uncooked.

We might want to find those things and move them to a refrigerator. In this pretend example, we have an action called “cleaning”

carry out cleaning the kitchen (this is the kitchen clean-up rule):
	repeat with C running through uncooked things:
		move C to the refrigerator;

We might have timers on some explosives set at various points in a building, all counting down at the same time.

an explosive is a kind of thing.
an explosive has a number called countdown.
the countdown is usually 10.
every turn:
	repeat with E running through explosives:
		decrement the countdown of E;

In a game, of course, we’d want to have things explode when the countdown of E reaches zero. That’s a good thing to experiment with! Timers are fairly common in parser games.

We’ve talked about this before, but did you know you can assign properties to a scene? Sometimes, it can be hard to troubleshoot scenes. Here’s a simple debug command that checks the properties of scenes and gives feedback.

a scene can be long or short.
a scene is usually short.
the entire game is long.
scene-checking is an action out of world applying to nothing.
understand "scenes" as scene-checking;
carry out scene-checking:
	repeat with act running through scenes:
		if act is long and act is happening:
			say "[act] (long) is happening.";
		if act is short and act is happening:
			say "[act] (short) is happening.";

Perhaps a house fire occurs, and we’d like to assign everything in the house a property. In this example, “house” is a region made up of multiple rooms.

a thing can be burned or unburned.
a thing is usually unburned.
house is a region.
 
after burning down the house:
	repeat with B running through things in house:
		now B is burned;

We could go further and update the printed names of these things. We can add this:

		let p be the printed name of b;
		now the printed name of B is "[p] (burned)";

As one last thing, and this is more or less straight from the documentation. Let’s say we need to list the exits in a room. This one is kind of rich. Stay with me!

exits is a list of directions that varies.
	
this is the exit listing rule:
	truncate exits to zero entries;
	repeat with way running through directions:
		if the room way of the location is a room:
			add way to exits;
	if number of entries in exits is zero:
		say run paragraph on;
	otherwise:
		say "Available exit[if number of entries in exits is greater than one]s[end if]: [exits].";
		say line break;
			
after looking:
	follow the exit listing rule;
	continue the action;

This is the first time we’ve used a list. There’s a lot of things we can do with them—some if them quite complex—but at essence they are just what the name implies: lists. We can list all kinds of things. Values, things, objects. The only real requirement is that they have to be constant. We can’t add “a number that varies” to a list, for instance. In this case, we are building a list of directions. Let’s walk through it.

First, we declare our list. We can state the initial contents of it, or just say that it exists. We’re doing the latter, as we’ll let our code fill it in.

exits is a list of directions that varies.

We name a rule, first of all.

this is the exit listing rule:

Next, we’ll clear out whatever is in our list of exits so that we have up-to-date information there.

	truncate exits to zero entries;

Next, we can start repeating through directions.

	repeat with way running through directions:
		if the room way of the location is a room:
			add way to exits;

This construction probably looks a bit odd. The thing to bear in mind is that “directions” are always parsed, whether there is an exit or not. We can actually bypass “you can’t go that way” messages with Before stage rules. So we need to check for rooms associated with directions, if that makes sense. “If the room way of the location is a room” checks this.

If there is a room in the direction checked (way), we add that direction to our “exits” list.

If there are no exits, we don’t need to print anything.

	if number of entries in exits is zero:
		say run paragraph on;

If we do have entries in our exits list, we can just print the list.

	otherwise:
		say "Available exit[if number of entries in exits is greater than one]s[end if]: [exits].";
		say line break;

Note the check: we ask inform to add an “s” to “exit” if there is more than one exit.

Where to fire it? I decided to add it as an After looking rule. Though if we want to make sure it’s the last thing that prints we could go with “last report looking”.

after looking:
	follow the exit listing rule;
	continue the action;

OK! Here’s some output.

Welcome
An Interactive Fiction
Release 1 / Serial number 250825 / Inform 7 v10.1.2 / D

lab
You can see an apple, a ball and a hat here.

Available exits: south, east and down.

This is only scratching the surface! Repeating through is a powerful tool. I use it all the time! Time learning about them is time well spent.

It’s possible to loop through lists, number counters, and tables, but I think we’ve seen enough for today. We can pick that up next time.

Sunday, 24. August 2025

My So Called Interactive Fiction Life

Validate, Execute, Report

The standard library in Sharpee has easily received the most attention with change. We've mowed through at least a dozen refactors because my design thoughts keep finding improvement opportunities.The latest changes are about how events are emitted (not what - that was covered in the last blog

The standard library in Sharpee has easily received the most attention with change. We've mowed through at least a dozen refactors because my design thoughts keep finding improvement opportunities.

The latest changes are about how events are emitted (not what - that was covered in the last blog post). This also led to a discussion of the data we need within each action and decided to make this configurable. There is required data elements for each action, but the author can inject extra data to be used in event reporting.

We also refactored the engine's command-executor so that it's just orchestrating the action functions and nothing else. We dropped it from over 700 lines to around 150.

Now we have validate and execute returning events so report has all of the info for the completed action and is responsible for all event output.

/**
 * Examining action - looks at objects in detail
 * 
 * This is a read-only action that provides detailed information about objects.
 * It validates visibility but doesn't change state.
 * 
 * Uses three-phase pattern:
 * 1. validate: Check target exists and is visible
 * 2. execute: No mutations (read-only action)
 * 3. report: Generate events with complete entity snapshot
 */

The data configuration is built into each action.

/**
 * Build examining action success data
 * 
 * Creates the complete data structure for examined events,
 * including entity snapshots and trait-specific information.
 */
export const buildExaminingData: ActionDataBuilder<Record<string, unknown>> = (
  context: ActionContext,
  preState?: WorldModel,
  postState?: WorldModel
): Record<string, unknown> => {
  const actor = context.player;
  const noun = context.command.directObject?.entity;
  
  if (!noun) {
    // Shouldn't happen if validation passed, but handle gracefully
    return {
      targetId: '',
      targetName: 'nothing'
    };
  }
  
  const isSelf = noun.id === actor.id;
  
  // Capture complete entity snapshot for atomic event
  const entitySnapshot = captureEntitySnapshot(noun, context.world, true);
  
  // Build base event data
  const eventData: Record<string, unknown> = {
    // New atomic structure
    target: entitySnapshot,
    // Backward compatibility fields
    targetId: noun.id,
    targetName: isSelf ? 'yourself' : noun.name
  };
  
  if (isSelf) {
    eventData.self = true;
    return eventData; // No trait checking for self-examination
  }
  
  // Add trait-specific information
  
  // Identity trait (description/brief)
  if (noun.has(TraitType.IDENTITY)) {
    const identityTrait = noun.get(TraitType.IDENTITY);
    if (identityTrait) {
      eventData.hasDescription = !!(identityTrait as any).description;
      eventData.hasBrief = !!(identityTrait as any).brief;
    }
  }
  
  // Container trait
  if (noun.has(TraitType.CONTAINER)) {
    const contents = context.world.getContents(noun.id);
    const contentsSnapshots = captureEntitySnapshots(contents, context.world);
    
    eventData.isContainer = true;
    eventData.hasContents = contents.length > 0;
    eventData.contentCount = contents.length;
    // New: full snapshots
    eventData.contentsSnapshots = contentsSnapshots;
    // Backward compatibility: simple references
    eventData.contents = contents.map(e => ({ id: e.id, name: e.name }));
    
    // Check if open/closed
    if (noun.has(TraitType.OPENABLE)) {
      eventData.isOpenable = true;
      eventData.isOpen = OpenableBehavior.isOpen(noun);
    } else {
      eventData.isOpen = true; // Containers without openable trait are always open
    }
  }
  
  // Supporter trait
  if (noun.has(TraitType.SUPPORTER)) {
    const contents = context.world.getContents(noun.id);
    const contentsSnapshots = captureEntitySnapshots(contents, context.world);
    
    eventData.isSupporter = true;
    eventData.hasContents = contents.length > 0;
    eventData.contentCount = contents.length;
    // New: full snapshots
    eventData.contentsSnapshots = contentsSnapshots;
    // Backward compatibility: simple references
    eventData.contents = contents.map(e => ({ id: e.id, name: e.name }));
  }
  
  // Switchable trait
  if (noun.has(TraitType.SWITCHABLE)) {
    eventData.isSwitchable = true;
    eventData.isOn = SwitchableBehavior.isOn(noun);
  }
  
  // Readable trait
  if (noun.has(TraitType.READABLE)) {
    const readableTrait = noun.get(TraitType.READABLE);
    eventData.isReadable = true;
    eventData.hasText = readableTrait ? !!(readableTrait as any).text : false;
  }
  
  // Wearable trait
  if (noun.has(TraitType.WEARABLE)) {
    eventData.isWearable = true;
    eventData.isWorn = WearableBehavior.isWorn(noun);
  }
  
  // Door trait
  if (noun.has(TraitType.DOOR)) {
    eventData.isDoor = true;
    
    // Check if door is openable
    if (noun.has(TraitType.OPENABLE)) {
      eventData.isOpenable = true;
      eventData.isOpen = OpenableBehavior.isOpen(noun);
    }
    
    // Add lock status
    if (noun.has(TraitType.LOCKABLE)) {
      eventData.isLockable = true;
      eventData.isLocked = LockableBehavior.isLocked(noun);
    }
  }
  
  return eventData;
};

This refactor was merged last night and I'm going through unit tests to make sure we get back to a functioning Cloak of Darkness.


Zarf Updates

Hugo Best Game: a look at the stats

Caves of Qud just won the Hugo Award for Best Game or Interactive Work. This is extremely awesome. I was pushing for a "Best Game" category ten years ago. Here's my list of suggested nominees which a 2015 award might have gone to, if there was ...

Caves of Qud just won the Hugo Award for Best Game or Interactive Work. This is extremely awesome.

I was pushing for a "Best Game" category ten years ago. Here's my list of suggested nominees which a 2015 award might have gone to, if there was one, which there wasn't. But a couple of years later, the Nebulas (a different SF award) added a Best Game Writing category. (Black Mirror: Bandersnatch was the first winner.) Then in 2021, the Hugos added an experimental Best Video Game category. (Hades won.) The experiment was deemed a success, so the fans got down to the necessary rule futzing to add a permanent Best Game award. In 2024, that went to Baldur's Gate 3; in 2025, Caves of Qud.

I should point out up front that I haven't played Qud. I've read many articles about Qud, including the essays in the very excellent Procedural Game Design books (ed. Short/Adams). I've chatted with my friend Jmac, who has sunk many hours into playing Qud. But the prospect of sinking my hours into Qud felt scary, so I just didn't. Sorry!

Yes, I submitted a Hugo ballot. I will say only that 1000xResist was my top pick. What an amazing game. I replayed it last month, to refresh my memory, and it blew my mind all over again. I was on a Worldcon panel with Remy Siu, the creative director of the game, and I got to tell him so.


But see how I said "top pick"? Hugo voting uses an "instant runoff" system, which is a ranked-ballot model. You can vote for any or all of the candidates, putting them in preference order. That way, if your top pick doesn't win, your ballot isn't completely ignored. Your second- and lower-rank preferences still influence the outcome.

The Hugo site has a complete explanation, but let's look at this specific race -- the Best Game voting for 2025. The Hugo admins have posted detailed stats (PDF) about the voting, including some wonderful "Sankey diagrams" that illustrate how the runoff-voting system works.

A flow-chart of colored ribbons. It begins on the left with the six nominees listed below. Then the colors divide and converge as four of the nominees are eliminated, leaving "Dragon Age: The Veilguard" and "Caves of Qud" as the survivors on the right. Best Game 2025 runoff. Click for larger version.

As you see, we have six nominees:

  • Dragon Age: The Veilguard
  • Zelda: Echoes of Wisdom
  • Caves of Qud
  • 1000xResist
  • Tactical Breach Wizards
  • Lorelei and the Laser Eyes

"No Award" is also an option, for voters who feel that no candidate is worthy. That was important a few years ago (google "Sad Puppies", I'm not getting into it) but it was not an issue this year.

As you can see, the Dragon Age and Zelda entries were initially at the top. The stats post also gave the exact numbers. (Bold shows the top candidates for each round.)

Title R1 R2 R3 R4 R5 R6 Runoff
Caves of Qud 104 104 112 143 159 246 331
Dragon Age 109 109 121 134 169 193
1000xResist 98 98 115 137 147
Zelda 108 108 116 123
TBW 81 81 94
Lorelei 74 74
No Award 29 34

The first column shows the first-rank votes on each ballot. In the flow diagram, the width of the colored stripe shows the same thing graphically. So 109 people ranked Dragon Age: Veilguard on top; Zelda and Qud were a hair behind at 108 and 104.

But we want to consider all of everybody's preferences, not just which game they ranked first.

We'll have seven rounds. In each round, the lowest-ranked candidate is eliminated. Here, we start with "No Award". 29 people voted for "No Award" -- I guess taking the fuddy-duddy view that the Hugos should not have a game award. Okay, that's an opinion. But with just 29 votes out of 603 ballots, it did not carry the day.

Next round. We're looking at a pretty close race, really! Lorelei and the Laser Eyes has 74 votes, which isn't that far behind the leader. But, sadly, it is the lowest ranked candidate, so out it goes. (I really liked Lorelei, for what it's worth.)

Here's where we can see the "instant runoff" in action. Lorelei's votes are distributed to other candidates, based on what those voters ranked second. Look at the purple stripes that splay out. Of the Lorelei ballots, 17 put 1000xResist second; that's the widest stripe. 13 went for TBW, 12 for Dragon Age, 8 for Qud, 8 for Zelda. Looks like the other 16 didn't give a second choice, so they fall off of the chart. (That's the bit of the Lorelei bar that looks cut off.)

Now we have new totals. The following rounds work the same way. TBW is eliminated next, with the greater part of its votes going to Qud and 1000xResist. Then Zelda is eliminated; many of its votes go to Dragon Age, but about half disappear (no lower-ranked vote for any remaining candidate).

1000xResist drops out next, with the majority of its votes going to Qud. This is enough to put Qud over the top in the showdown.

(There's a final step to check whether the winner is really more popular than "No Award". Qud passes easily.)


That's a lot of vote algorithm, but the diagram lets us see a few things. There's a pretty clear split between fans of mainstream games and fans of indie games.

(I know, those terms are an infinite swamp. "Triple-A" is just as bad. Let's just say that Nintendo and Bioware are big companies with big budgets to sling around, whereas the other games on the list were made by small teams and either self-published or handled by indie publishers.)

If you look at the chart, every indie game that was eliminated (Lorelei, TBW, Resist) handed the majority of its votes to the other indie games. And when Zelda was eliminated, the largest share of its votes went to Dragon Age. So the fans of each group tended to favor their entire group over the "opposite" group. Half the Zelda didn't bother to put Qud or 1000xResist on their ballot at all.

To put it another way: the two mainstream games were on top in the first round, but the mainstream group was behind the indies 213 to 361. And that was a pretty good predictor of the final showdown between Dragon Age and Qud.

I don't have any particular opinion about this. It makes sense that a lot of people didn't play Qud. I didn't! I just think it's neat that this insight jumps right off the page when you visualize it this way.

To be clear, Qud aside, I am the indie type. Don't even own a Nintendo Switch.


Is this an ongoing pattern? The 2024 Hugo stats post doesn't have the nice diagram, but we get the numbers:

Title R1 R2 R3 R4 Runoff
Baldur's Gate 3 564 564 581 627 943
Zelda: TotK 241 241 253 259
Chants of Sennaar 199 199 200 210
Dredge 111 111 117 124
Alan Wake 2 87 87 87
Jedi: Survivor 59 60
No Award 57 76

This doesn't tell us a lot, because BG3 started a mile ahead and stayed there. We can say that Jedi Survivor and Alan Wake 2 gave the better part of their votes to BG3, and almost none to the "indie" candidates (Dredge and Chants of Sennaar). But after that BG3 had an absolute majority so further rounds were unnecessary. We never saw what the indie voters ranked second.

And in the future? I dunno. I guess the lesson is that nominations matter. If next year's nominee list is four big-studio games and one weird indie game nobody's heard of, the indie will have a hard time breaking out.

But what do I know? I'll tell you this: in our game panels, just one title drew appreciative "yeah"s from each roomful of Worldcon fans, consistently. I'm giving Blue Prince good odds for 2026.

Saturday, 23. August 2025

Zarf Updates

Weird little games, summer edition

I have been playing weird games that are little. I mean, short. One evening, two evenings tops. Maximum weirdness density. (Twist ending: one of the games listed here is not short. Read on to find out which one! Spoiler: it's the last one. I ...

I have been playing weird games that are little. I mean, short. One evening, two evenings tops. Maximum weirdness density.

(Twist ending: one of the games listed here is not short. Read on to find out which one! Spoiler: it's the last one. I said twist ending, I mean, obviously.)

  • Strange Jigsaws
  • Öoo
  • Sword of the Sea
  • Mini Mini Golf Golf
  • The Drifter

Strange Jigsaws

Jigsaw puzzles from the 20 Small Mazes guy. If you didn't play that, here's the deal: the screen fills up with a mess of jigsaw puzzle pieces, and then you realize that they all have weird little tricks to them.

It gets meta. You know that line about "uses every part of the pig"? This game uses every part of the jigsaw, including the fourth wall of the box and the outside-the-box.

With that wild collage of ideas, it's not surprising that the game is a bit uneven. I thought the best gimmicks turned up in the first half. And the finale metapuzzle should have been better telegraphed. (You get the keys before you discover the big gate, as it were. That always feels like an anticlimax. You want the narrative tension of finding the lock first!)

Those are minor complaints, though. Strange Jigsaws was a great way to kill an evening. I snickered and said "Oh jeez" a lot.

Öoo

A short puzzle-platformer. You are a bug that poops bombs. You can't jump, but you can lay a bomb underneath yourself and then blow it up.

Note: this is not a precision platformer, but some moves require setting off bombs in tight intervals or while falling. There's a lot of "squish" to make the timing easier, but it's still timing. So, not a pure puzzle game.

That aside: Öoo is impeccably designed. The entire game is built around you and your two bombs. No power-ups, no new abilities. (You start with one bomb, so getting the second bomb is like a power-up, but really it's the end of the tutorial.) Every room requires a different trick, and I'm pretty sure every possible trick with two bombs is used in exactly one room.

"No new abilities" doesn't mean no new mechanics. A few room elements are introduced as you move through the game. But the real tricks are the things you learn to do with those elements -- and with your bombs. You have to discover these tricks on your own; but the game does a fantastic job of leading you into them. If a room makes you say "Wait, why is that there?" then I guarantee you that the answer is important.

The final sequence is a bit shaky. The intent is clearly to force you to use every trick you've learned, in places where you've already been, but in ways you couldn't before. That works -- but it's not as stitch-perfect as the earlier parts of the game. No matter! Öoo is absolutely worth a go; I'd put it up with Monster's Expedition for tight design work.

Sword of the Sea

I looked back at my Abzû review (2016!), where I wrote:

Sometimes I just want to sit down with a couple of hours of narrative experience that has arc, theme, variation of interaction model, a bit of challenge, and (not tangentially) is really, really pretty.

Same comment exactly again!

In between Sword and Abzû, this studio did The Pathless, which was a more traditional openish-world-exploration game of a more traditional size: 15-ish hours. Explore large areas, do a lot of bonus quests in each one, wrap up with a boss fight, on to the next area.

I enjoyed that, but that's not where Sword of the Sea landed. This is a three-hour tour of small areas (or large but zippily-traversed areas). There's a few well-defined goals in each. You can coin-hunt -- there's bonus stuff all over each map, some of which is quite tricky to reach. But that's all very optional. The game's momentum (embodied as streams of sparkly fish and dolphins) always pulls you on to the next area.

Which is really, really pretty. The is-it-sea-or-desert motif reminded me a bit of Jusant, although the style is completely different. Same magical space whales, though. Well, the designer has always had a cetacean fetish.

The point is swooping around in a world of sparkly sand-or-sea. Or snow, etc. Top-notch swooping. Well done.

Mini Mini Golf Golf

Man alive, I do not know what to say about this one. It's 2057 -- I think? you've got a 2050s-era teletype-tablet along with three janky 1990s CRTs. Climate change almost destroyed Europe, but humanity has survived through large-scale geo-engineering... hang on, I'm tapping my headset and getting a message that maybe it didn't. The message is from the future. It's encoded in a mini-golf game from the past. Got it?

The mini-golf game is glitchy, and in fact you have to proceed by playing glitchily. Hints are embedded in an adorably low-budget Euro talk show about videogames and life. (You can play in easy mode, which obviates the golf challenges and makes the hints unnecessary. But watch the talk show anyhow; it's the best part.)

This absolutely ought to be my jam. It's got everything: glitchy live video, videogame interfaces warped to other ends, messages allusively encoded in other messages, metaphors about videogames and life. I love that stuff. I found this game almost impossible to play. Something about the slow-roll text -- literally slow roll; letters appear as you putt the ball. The putting interface is slow to begin with. You have to wait just a teeth-cracking moment too long for the ball to come to rest.

Then, at the end, the mini-golf game got stuck. I'm pretty sure this was on purpose -- one last glitch-puzzle. I couldn't figure it out, though, and quit out of the (real) game. Oh well.

This is the most creative narrative game I've seen in a year. (And that's after I played Occlude and Phoenix Springs!) I wish I could have gotten into it more.

The Drifter

Okay, this one isn't a tiny little game. It's a full-sized adventure game.

Have some Australian pixel-art point-and-click pulp. Grindhouse? Thriller? I'm not sure what label I'm looking for, but The Drifter sure is one. You're a loser ("I'm not homeless, I've just got a nomadic lifestyle") hobo-ing across the country to attend one last family affair. The family you ran out on. Then someone shoots up your train car and kidnaps a reporter, and also there's monsters? Or hallucinations? You're not really in good shape here.

This roughly alternates between high-tension cliffhangers (window-ledge hangers, precarious-mine-tunnel hangers...) and more traditional detective-game scenes (ask everybody about every topic you've got, collect more topics). Puzzles are a distant third place -- lightweight, not too many, meant to move the narrative along rather than hold it back.

The funny thing is, this is the "polite" "merciful" style of adventure game. You can't get stuck or lock yourself out of winning. Familiar ground -- but it's a weird fit for a plot built of escalating life-or-death crises. A lot of scenes are narratively high-tension but mechanically "try as many times as you want until you figure out what to do." The actors do their best to sell it, as do the music and sound effects and everything else, but it wears thin at times.

In fact you can die... maybe. The first chapter introduces your apparent ability to rewind death by a few minutes. Unless that's a hallucination? This is a story element so I won't say more. But, gameplay-wise, it's just another way to say you can experiment forever.

"Loser" and "I can't tell what's real" aren't great hooks for a story. I was initially worried that this would go off the rails. But once the game gets into your real history (your wife, your child, characters who talk to you instead of just threatening to open fire...) then the plot firms up. The game is on solid footing thereafter. Or, you know, on a solid rollercoaster of life-or-death crises.

The Drifter has adopted the recent point-and-click concept that you don't have to click on absolutely everything. Hovering your mouse over a scenery object displays its description, tooltip-style, with an x cursor. No clicky! This is great; it saves time and avoids hearing "I can't do anything with that" a million times over. (Return to Monkey Island did something similar.)

(The game is fully voiced, but "fully" means dialogue and the narrator's internal monologue. Scenery descriptions are text-only. I approve of this too; you can get in a lot more descriptive detail without blowing up your voice budget.)

A wild ride and goofy in parts, but it's good fun and good writing in the end.


Renga in Blue

Castle Dracula (1983)

Nearly all the haunted mansions (or castles) that we’ve experienced through All the Adventure have been, at their essence, fan fiction. This isn’t necessarily a negative thing for the circumstances, given the tiny space most authors have had to work with. As I’ve observed before, fan fiction is a shortcut of sorts that allows an […]

Nearly all the haunted mansions (or castles) that we’ve experienced through All the Adventure have been, at their essence, fan fiction.

Solihull, Birmingham area.

This isn’t necessarily a negative thing for the circumstances, given the tiny space most authors have had to work with. As I’ve observed before, fan fiction is a shortcut of sorts that allows an author to put Spock in their game by just writing

Spock is here.

with all the different associations and abilities Spock has already implied, without having to waste more precious memory space with explanation. Similarly, with spooky games by Morgan or O’Hare or Bassman a stereotypical monster can be implied by just mentioning its name. “Dracula is here” implies not only a visual, but what sort of puzzle elements might be used.

From Morgan’s Haunted House, after using SHOW CROSS, an action hinted at nowhere in the game, but rather applying the “fan fiction” aspect. This allows us to steal Dracula’s chocolate chip cookie. Maybe he’s Count Chocula in disguise.

The is the first of four games at CASA titled Castle Dracula, although the only one from 1983. The author, Paul T. Johnson, has the distinction of most of his games being written later (1996-2004, not counting he was a contributor to Cragne Manor in 2018). He rewrote Castle Dracula twice, first as House of the Midnight Sun and later as Dracula — Prince of Darkness. The first game includes some historical detail about Castle Dracula:

I wrote this text adventure game in 1983. The game, written in BASIC took me a year to program. For its time 1983, the verbose descriptions of the 40 locations impressed even me. “House Of The Midnight Sun” Was based on this early game. Untill recently I had thought the game was lost, however thanks to the work of Simon Hardy and Robert Boyd an early build of this game is once again available to play. The ’83 game was aimed at a younger audience. “House of the Midnight Sun” is a larger and far more complex game. It is also a far darker game.

The author’s web page gives the further detail that the game was mail-order only, sold via ads in magazines, and he “sold copies of the game all over the world including Japan.” He explains the “main problem” was a lack of computer memory (surprise!); out of the list of platforms (Spectrum, MSX, Commodore Plus/4, Atari, Dragon, Texas Instruments TI-99/4A) the TI at least meant it was restricted to 16K.

To help with the games longevity some of the puzzles were as tough as old boots. None of your – ‘need a brass lamp to explore a darkened room’ – These puzzles were mean!

(… blinks, notes that the game we just played here had “need a brass lamp” as the only puzzle …)

It was sold by Mercury Software (Johnson’s house) out of the Birmingham area, not to be confused with the Mercury Software in Manchester (selling “arcade quality games” for the Oric).

Via World of Dragon.

The author implies the difficulty is in the puzzles, whereas I would argue it is in the highly bespoke parser. This is another of the type where everything is implemented “manually”. That is, there is no real “world model”, but rather each room has a custom listing of prompts that will move the game forward. Even dropping inventory items is not allowed!

There’s also some unconventional commands: the only directions are N, S, U and D (no E or W) and typing E is actually short for “examine”. (This is akin to how Robots on Terminus IV had to avoid all words including a Z because Z was being used for backspace.) I admit to misreading things and being confused for a while thinking maybe I was turning my character east to see something, and by coincidence the thing always happened to be the east. The other shortcut is “R” for read; according to the author the E and R notation is used to save memory. (If this was coded “normally” where all the verbs are stored centrally, this wouldn’t be a problem, but there is almost no code re-use in the logic flow at all.)

Our goal is to rescue a princess from Dracula. Isn’t the will supposed to say who our possessions go to, not explain how we’ll probably die?

You start approaching a graveyard, and E (for “examine”, remember, not “east”) will reveal a freshly dug grave.

The game is fishing for DIG EARTH specifically to make progress.

750 IF I$=”E” THEN 800
760 IF I$=”R”THEN 820
770 IF I$=”DIG EARTH”THEN 840
780 IF I$=”S” THEN 600
790 GOTO 470
800 E$=”ONE OF THE TOMBSTONES LOOKS NEW.THE EARTH HAS JUST BEEN DUG,YOU SEE SOME WRITING”
810 GOTO 70
820 E$=”THE TOMBSTONE HAS YOUR NAME ON IT!A WARNING OR A CLUE?”
830 GOTO 70

(70 gets the room description and inventory, and is the only part of code that is re-used in the program flow.)

Moving forward is a “guardian” which blocks your way.

This is honestly terrific atmosphere (in the spooky-game-written-by-enthusiastic-kid sense) and has two options: you can either hand over the stake as requested or use HIT SKELETON. (That verb specifically, of course.) Giving the stake almost seems like a softlock:

YOU NO LONGER POSE A THREAT TO MY MASTER. YOU ARE NOW HIS SUPPER THE SKELETON DISAPPEARS BACK INTO THE GROUND

However, you’ll get your items yanked away later, and it isn’t like the game is really keeping track; to remove the stake the game simply changes the string used to print inventory (IN$=”A HAMMER AND SPADE”).

Moving on…

…there’s an underwater waterfall where the game is fishing for ENTER WATERFALL, followed by a Smuggler’s Cave where there’s algae visible if you use the E command; the game specifically wants REMOVE ALGAE.

Not TAKE, SCRAPE, GET, etc. because the code is just a line that checks if I$=”REMOVE ALGAE”.

The writing says

I MUST DESTROY THE MONSTER
ITS SIGNED REV.POTS 1817
VAMPIRE KILLER

Onward is a very slight amount of exploration (everything is linear from here on out); you arrive at a “main hall”, can go north to find barred doors and a “letter”…

It’s backwards.

…and go south to find a library.

The book is meant to hint you can go into the mirror (or rather, quite specifically, ENTER MIRROR).

The right response here is IGOR. This is hinted at from the backwards text earlier, and note that you need to just type the word IGOR, not SAY IGOR or RESPOND IGOR or anything else like that, elsewise:

If you IGOR correctly you will still be left to be attacked by rats. Examining reveals a message on the wall from the helpful REV. POTS:

This is a direct letter code (1=A, 2=B, 3=C, etc.) which prompts the player to REMOVE MORTAR.

If it isn’t clear yet: the author sacrificed world model aspects (or more likely, didn’t know at the time how to code them) for the sake of “cinematic” text to describe events. We’ve had this sort of contrast with Peter Kirsch games, which more properly have a world model, but by jettisoning everything the author is laying everything down on the text.

Another timed scene, the coffins start to open. With a better parser (and some clarity that it is in fact daytime) this could have been the best moment of the game. REMOVE SHUTTERS:

One of the coffins can be entered, revealing a down-staircase to some bones. A stake lies amongst the bones but it is just a fakeout.

You then get confronted by a GUARDIAN OF LOGIC who wants you to prove you exist; now we are on literal guess-the-phrase with I THINK.

Onward more, there is a chamber of steel with a large rock; this rock gets used immediately, as the room after has a classic crushing trap you can foil with DROP ROCK.

This allows progress to a “haunted bedroom” with a hint I’ll return back to later.

Past here is none other than Reverend Pots himself, who is sleeping in a bed.

ITS POTS ALRIGHT.MAYBE YOU
SHOULD WAKE HIM.

Waking him is a bad idea.

You should instead just ignore him and move forward, whereupon a countdown timer starts.

A GHOSTLY APPARITION STANDS
BEFORE YOU.IT SPEAKS WITH THE
VOICE OF THUNDER’KILL THE
VAMPIRE BEFORE SUNSET OR HE WILL
KILL YOU!’

You now have 10 turns to beat the game.

In a bedroom that follows, there’s some wallpaper to remove opening a passage to a secret vault.

This is where the game’s bragged-about difficulty really kicks in. You have to realize the game is making a pun here and PLAY C, opening a passage to the princess.

I kind of wanted the princess to already be a vampire. It would fit with the plot of the game.

The princess gives you a note which indicates what to do, while Drama happens:

You only get one turn to act. I love the tension, although note this game doesn’t have a saved game feature so there’s a fair chance (especially given the parser) there would be a lot of restarts.

And here I admit I did not figure out the puzzle, but checked a walkthrough. This refers back to the Reverend Pots hint, and suddenly jumps the game to hyper difficulty, because these are references to the book of Genesis, specifically the King James Version. V2,14 means look at Genesis 2:1, letter 14, and I’m guessing most players in the 80s just cracked open the source code.

Thus the heavens and the earth were finished, and all the host of them.

The code comes out to SAY MAGIC.

Despite this game fitting into the many haunted houses we’ve seen (and will still see), the focus on scenes with driving tension did make it come across very different and it had a janky charm; I would have just preferred a different parser, but fortunately the future version of the author has already obliged that (twice) as the remakes are written in Inform.

Via World of Dragon.

I am a realist and know it will take an awful long time to get there, so let me finish by quoting the author about his first remake, describing his overall process and using the term “interactive ghost-train ride”:

When I wrote “House of the Midnight Sun” in 2002 I use to work as a paramedic in Birmingham, England, (I have now retired.) I spent my ten hour shifts, waiting for emergency calls on my own in a Paramedic car at Sarehole Mill. There, where Tolkien grew up, and later used as a setting for his novel “Lord of the Rings,” I wrote the game on a tiny Psion Revo. (Today I’m using a Sony Vgn P11Z.) I remember sitting by the stream, next to the mill, writing the ‘nest of rats’ puzzle, a routine with a gruesome solution. I was just wondering if I had gone too far, when I looked up to see that I was being watched. I was not alone, I had been joined by a large brown rat. I took this as a sign, and the rats’ nest stayed. Since then the rat comes round from time to time to check on my progress. I must remember to take him something to eat.


Zarf Updates

Worldcon after-action report

I went to the Seattle Worldcon and I had a good time. (Some Worldcons take on a unique name. The last one I went to, in Montreal, was Anticipation. The 2001 Worldcon in Philadelphia was called the Millennium Philcon and I went purely because ...

I went to the Seattle Worldcon and I had a good time.

(Some Worldcons take on a unique name. The last one I went to, in Montreal, was Anticipation. The 2001 Worldcon in Philadelphia was called the Millennium Philcon and I went purely because of the name. Also because it was great. But it didn't occur to me to look up the Seattle Worldcon's name until just now. Turns out it was called "Seattle Worldcon 2025". Oh well.)

A stack of colorful perfect-bound booklets commemorating Worldcons. They include "Seattle Worldcon 2025", "Anticipation", "Denvention 3", "Bucconeer", "Torcon 3", "Conadian", and "Noreascon 4". Also visible are a couple of booklets from the World Fantasy Convention (it's different). My stack of Worldcon souvenir books. Mixed in with other cons and a couple of issues of Games magazine.

I've posted my trip photos on a separate page. Mostly Seattle tourism, rather than Worldcon per se.


I was on three panels. They all went great. I don't believe any of them were recorded or streamed, so you'll have to use your imagination. (Worldcon was slightly hybrid -- they had like 25 event rooms and streamed five of them. Understandable, to be sure.)

Thanks to my co-panelists, and to Justin for moderating two of the panels and Eleri for the third. Justin did heroic work this event -- I think he was on eight panels on the (brand-new) gaming program track, and moderated five of them.

We got one question of "Where can I donate my collection of Infocom memorabilia?" and Justin jumped right on that with an IFTF business card.

(IFTF doesn't have physical storage space, but Justin has plans for one set of memorabilia. He teaches college in his mundane existence so it's probably useful for that. If we get more donations? I don't know! Contact us and ask.)

My best panel moment: in the last 90 seconds of the Q&A for the IF panel, someone asked if we'd considered using LLMs for interactive fiction. I immediately pumped my fist in the air and said "Yesss!"

Of course everyone stared at me like I'd crapped my pants. I smiled gently and said "...I just won a bet."

This wasn't literally true. But in panel planning discussion, I mentioned that the AI question was 100% likely to arise. Everybody on the panel agreed that we didn't really want to get into it. Welp, it did, and we didn't. No time!

The actual answer is "yes, many people have considered it." (See repeated threads on the IF forum.) There's more to be said, but if you think that tech-giant LLMs are a one-size-solves-all revolution for IF, I assure you that's not the case.


So what was it like returning to Worldcon after sixteen years?

Honestly, I felt a bit disconnected. I had a good time. Really! But I'm definitely not in the scene the way I used to be -- and that was never very much.

Look, I am an introvert. (You will be absolutely stunned to hear me say this.) I get anxiety about inserting myself into random social situations.

I used to have a pretty steady SF convention habit. I would, roughly in order of importance: (1) go to panels; (2) wander the dealer's room and browse books; (3) hang around the con suite and eat snacks; (4) wander into room parties and eat snacks; (5) sit in back in the filk room and sing along. When tired of one option, pick another. Sometimes I ran into people I knew and we'd chat. Sometimes I'd get into a conversation with J. Random Fan. Or not! No pressure. (The "no pressure" part is important. Also the snacks.)

(By the way, if you are J. Random Fan, please don't hesitate to come up and say hello to me. That's fine, I appreciate the effort, it doesn't freak me out. If I want to be left alone, I'll be in my hotel room.)

(Also, of course, if I'm on a panel or running an event, I'm there to talk to people about that topic. Please ask questions. I am prepared.)

Anyhow. This year's Worldcon was terrific for (1) and (2). The program schedule was first-rate; every single time slot (for five days) had multiple talks that I was interested in. I feel like the dealer's room was smaller than I remember from 2009 (or 2001, etc) -- but I don't have a solid comparison. Anyhow there's been this enormous self-publishing boom since then, so there were lots of new-to-me authors with stacks of books I've never heard of. Highly variable, but fun to look through.

Not so good on (3). There was no con suite. Usually the con hotel -- or the hotel attached to the convention center -- will have a penthouse suite set up with snacks for grazing, chats, and quiet time. (Reading in the con suite is totally a thing.)

Seattle didn't do that. Possibly because the "attached hotel" was three blocks away. The convention center had many lounge spaces, and some of them had food concessions -- pretty good stuff -- but it wasn't the same vibe at all. Plus, I had promised myself to keep the N95 mask in place wherever I possibly could. This interferes with snacking as a pastime.

Room parties, same problem. I looked in on one and realized it just wasn't going to work for me. And singing in a mask doesn't work at all, so filk was out too.

(Yes, I took off the mask when speaking on a panel, and for meals. But I tried to eat in the least populated corner I could find. I ate dinner out with small groups of people I knew. Worldcon has had some COVID post-action reports, but my nose-test remains negative as of today, so I guess my plan worked. This time.)

More generally, the Worldcon crowd has just shifted. I used to recognize most of the authors who attended. Some of them were the authors I read, some were authors I wasn't into, but I knew the names. Now, not so much. See above about self-publishing. Good in some ways, bad in others.

Not everybody who attends Worldcon is an author -- it is a fannish convention, not a professional conference. But, you know, when you go to the event every couple of years, you see a lot of the same people. Even I (partially face-impaired) wind up recognizing people. I might wave. They might wave. It's introvert-friendly.

If you skip fifteen years of the event, that falls away.

I dunno. Next year's Worldcon is Los Angeles. In 2027 it's Montreal again. I like Montreal better! I could go back. Two Worldcons in a row is a lot, anyhow. Once every couple of years feels right.

Also, I know more fans in Montreal, because I sometimes go to a smaller con there. Those folks weren't in Seattle, because the US is not attractive to tourists right now, but they'll all absolutely be at Worldcon 2027. Some as guests, even.

Hopefully I can make it. Depends on how jobs work out.

Friday, 22. August 2025

Renga in Blue

Skatte Jagt: i en labyrint

I’ve finished, and this continues from my previous post. First, briefly, regarding the verbs: they’re inside the machine code in plain text, but backwards. I don’t know if this is meant as a slight bit of “encryption” or if there’s some technical reason based on how input sequences are treated. It was mainly useful to […]

I’ve finished, and this continues from my previous post.

First, briefly, regarding the verbs: they’re inside the machine code in plain text, but backwards. I don’t know if this is meant as a slight bit of “encryption” or if there’s some technical reason based on how input sequences are treated. It was mainly useful to find that “med” is the word to get inventory (as in “jeg har med”, “I am carrying”) and “dro” as in “drop” lets you drop stuff. (I really need to remember to test English words in foreign games, because sometimes they work.)

I also found “fjolet” and “idiot” on the list, both translating to, er, idiot; essentially this is for insulting the computer, which responds with “Det forstod jeg godt” or “I understood that!”

A book on Treasures and Treasure Hunters. One of my results while using image search for vocabulary. Via GPRIS.DK.

I needed advice from the comments (via Rob) to find one object that was tricky to get, and then the entirety of the rest involved mapping and digging in every room. I never even found the nails to build a ladder; I assume they’re somewhere because I poked at the machine code to list the nouns. The ladder points represent alternate exits from the labyrinth area but neither is needed.

For that one object, it was back in the shed:

That’s listing a shovel, an empty oil barrel (except it has a hammer if you check), a stack of boards, a garden rake, a hoe, a saw, and the door. Everything is takeable except the barrel and door, and knowing a ladder was coming I had automatically grabbed the boards and the saw. Somehow — and it doesn’t exactly make sense why this happens — you can be carting around the boards but be missing an item hidden if you examine them: a lamp. (You can find the lamp while carrying the boards, at least.)

With the lamp and matches in hand I was able to “taend lampe” (“put on the lamp”) and that vanquished the dark areas and any puzzles remaining in the game: as I said, the rest is pure map-making.

Starting with the dark place next to the kitchen, that just leads to a north/south tunnel, where the south opens out to the forest, and the north to the shed. This doesn’t really represent a shortcut, but rather just the author trying to add more connectivity to the world.

The other dark part was next to the shed, leading down to a cellar.

“Skeleton” and “matches” are marked rooms in the labyrinth after this section.

There are four marked rooms, and each has a treasure that is found by digging with the shovel (“grave”). There are five treasures total, so almost the entire rest of the game can be found without entering the labyrinth at all! (Except you are likely to enter by accident as you map things out.)

I incidentally had trouble translating “klipperum”. The pictures that I found were all editing rooms, like this one from a Danish film site…

…and the best I could find digging through dictionaries was “cloakroom” but that also doesn’t make sense to me based on the context. ADD: Petter Sjölund in the comments mentions “klippe” is stone or rock so it could be “room (carved out?) of rock”.

Leaving that behind, and heading into the labyrinth (pardon the mess, I know I’m missing a few exits)…

…it’s a fairly standard “drop items to map scenario”. One passage includes a paper at the end which suggests the treasures be dropped at the starting cottage in order to be scored. This happens to be the otherwise-inaccessible basement of the cottage; a hole is mentioned from the very start of the game, so it is a nice piece of geographic connection to mention it here.

One room also has a skull there (which serves both as decoration and a map-making marker) and another lets you dig up a skeleton of a past treasure-hunter.

The skull and skeleton are the two “sinks” of the maze (that is, random travel will more likely land in one of those two) so it makes for an interesting narrative moment to have a skeleton of a past adventurer dropped in there. However, our long expertise with Dropping Stuff makes it not hard to find the fifth and final treasure, which is right under the giant hole we found earlier outside.

(You know, I didn’t see if the treasure had the nails. I’m too exhausted to go back and check, after a while the Danish was hurting my brain.)

So all that’s left to do is make sure all the treasures are deposited followed by typing SCORE, kicking us back to the operating system prompt.

This was about the joy of exploration with an attempt at verisimilitude in environment, with the massive number of red herrings like a rake in the shed or a bottle cap buried on a random path. The “shortcuts” weren’t really needed but I’m not sure the author even thought of them in a design sense, but more in a sense that it’s logical for a realistic world to have multiple routes passing through it.

In a way this was good for a language-beginner game (that is, for me), as it didn’t in the end make horrendous demands on vocabulary. What I found most interesting was a general lack of puzzles at all; while it is essentially certain the author had experience with at least some standard adventure games, this one also harkens back to the Chaffee Quest, which when translated into Danish also was given the name Skatte Jagt.

Labyrinth north of Copenhagen, via The Copenhagen Post.

Thanks to Mikkel Christensen who did the scans of NASCOMNYT which helped find out the year of the game.

There is allegedly another Danish game from 1983 so we’re not done with the language yet, but I’m not sure where to find it. CASA states the Christmas-themed Juleadventurespil is in the December 1983 issue of Hjemmedata magazine. This is the Norwegian issue but we don’t have the Danish one.

For now, I need to stick with English for a while anyway for a mental breather; coming up there’s one spooky game, one Tolkien game (that hasn’t been discussed here yet), and finally Urban Upstart (for real this time).

Thursday, 21. August 2025

My So Called Interactive Fiction Life

Another Refactor Bites the Dust

Note: This is me writing again. I heard from some of you and I will save the info dumps for the repository under /docs/blog. Going forward, the blog will be the tumbled chaos of my own brain.We have another reveal, discovered when attempting to make a standard text

Note: This is me writing again. I heard from some of you and I will save the info dumps for the repository under /docs/blog. Going forward, the blog will be the tumbled chaos of my own brain.

We have another reveal, discovered when attempting to make a standard text service for a WebAssembly browser client. The interface in ISemanticEvent has a data property of type Record<string, unknown> and Typescript sometimes gets befuddled trying to convert that to an array of objects. This led to an initial refactor to change the type to any or unknown. That was very late last night. Today, I was thinking about it again, discussing it from the Desktop app without any direct knowledge of the project. I dropped some code and thoughts in and then mentioned, "what if the events were atomic?" and things got interesting.

This actually revealed a number of things:

  • the current event source, on replay, could be inaccurate if there were entity description changes.
  • without every event being atomic, the event source is not a "true event source".
  • this would make testing much simpler.
  • this would eliminate the querying interface of the world model and cut the cord in that tightly-coupled relationship.
  • any text service is just a report. no more need for translation from layer to layer.
  • events would be larger, but that's an acceptable outcome.
  • we would need to ensure properties could be values or functions, which is something we've been wrangling with all along.
  • we also had some legacy properties in ISemanticEvent that we can prune.

This is another top to bottom refactor that will touch nearly every file. I thought about doing a hybrid refactor, but this directly impacts my vision for dumb text services (read the events, organize the text by semantics, emit the text into a json object and send that to a client (browser or cli or whatever).

The weird part is removing the world model querying interface. That was something I thought was required, but with true atomic events, we have everything we need at the end of a turn.

Some of the questions I've gotten from the int-fiction forums will be added to unit tests, integration tests, or eventually what we're calling, story tests. Story tests seem to be needed to test complex capabilities, though it's possible atomic events will alleviate that as well.


I've also added to the wish list a full conversion to C#, but that's definitely coming after we have a few working games.

Wednesday, 20. August 2025

The People's Republic of Interactive Fiction

August meeting (online)

The Boston IF meetup for August will be Wednesday, August 27, 6:30 pm Eastern time. We will post the Google Meet link to the mailing list on the day of the meeting. It looks like some playing with code, lead by Josh, will be a topic, but we’ll reserve time for general chatting and other […]

The Boston IF meetup for August will be Wednesday, August 27, 6:30 pm Eastern time. We will post the Google Meet link to the mailing list on the day of the meeting.

It looks like some playing with code, lead by Josh, will be a topic, but we’ll reserve time for general chatting and other brief discussions, too.

Tuesday, 19. August 2025

Renga in Blue

Skatte Jagt (1982)

(Continued, more or less, from my previous post.) While the Sinclair ZX-80 and ZX-81 launched computing “for the people” in Denmark (and a battle with Commodore after), today’s game is from another one of those “hobbyists” separate from the mainstream: Henrik K. Jensen, writing on a Nascom kit computer. While the home origin of the […]

(Continued, more or less, from my previous post.)

While the Sinclair ZX-80 and ZX-81 launched computing “for the people” in Denmark (and a battle with Commodore after), today’s game is from another one of those “hobbyists” separate from the mainstream: Henrik K. Jensen, writing on a Nascom kit computer. While the home origin of the Nascom was the UK (just like the ZX-80) it managed to make inroads in both Denmark and Sweden.

NASCOM kit parts, from a video by GlassTTY. This forms in the end a “proper” computer, rather than something a little more skeletal like the KIM-1.

The “kit” aspect was a definite part of the experience which is part of what allowed the launch of the Nascom 1 in the UK (January 1978) to be at more or less half the price of competitors. However, it was still cheap even for the parts; in fact, it was too cheap, as it had “inadequate profit margins” which led to the company falling into receivership two years later, leading to it being taken over by the company Lucas. A pre-assembled Nascom did not come out until very late, 1981, with the Nascom 3, which was simply the Nascom 2 but now you didn’t have to solder. By this point the industry had already moved on.

However, that didn’t equate to cheap in Denmark! An an account of buying one in Denmark, circa 1979 notes it was 4481 DKK, “about two month’s salary”, and

… what you got was a keyboard, a circuit board and a number of plastic bags full of resistors, capacitors and integrated circuits.

Yes! You had to build it yourself.

And you have to supply your own power supply (+5V,+12V,-5V,-12V (expensive!)), and a monitor or television for screen. Not to mention a box.

Then came the fun of finding the correct place for all the components and soldering them into place.

1839 component pins!!

I wonder if anyone ever got it to work on the first try.

Enough Danes figured it out that a club was kicked off in late 1979 with a newsletter. 18 members are listed in the second newsletter, and by 1982 the list reached hundreds (note not “thousands” like the ZX80/81 club in the UK had).

Half an “invader” graphic from the October 1980 issue.

Just like most clubs at the time, there was a “library” of software for members; March 1982 includes a mention of “Skattejagt” (“Treasure Hunt”) as entry B13:

This is not today’s game! In fact, you’ve seen this game before; a catalog that includes up to the end of 1982 gives a fuller description:

You are hunting for treasure that a pirate has hidden in an underground cave system, where secret passages open and close during the game.

This is Chaffee’s Quest, a game we’ve now seen translated into Dutch (twice) based on source code from the July 1979 issue of Byte. It landed in Danish too and probably more languages we haven’t unearthed.

The game we’re instead concerned about is only listed in the later catalog, meaning it first appeared in 1982; prior to my research today’s game only had a date of 19xx.

The program requires 48K and is in machine code; the computer is turned into a robot that you give commands to like “go north”, “take shovel”, and “build ladder”. It “demands a lot of imagination and patience, and it can take a while to find the treasures.”

The catalog states “Adventure” but the title screen of the game itself gives Skatte Jagt, so despite the clash with Chaffee I’m sticking with the more distinctive name.

The instructions mention “tag skovl” (take shovel) and “gaa nord” (go north) but notice it does not mention “lav stige” (build ladder) like the user group catalog does. (Ladder supplies get loaded on the player quickly enough I was quite suspicious, but it’s still good to have the exact phrasing in Danish.) Nord, syd, oest, vest, op, ned are the words for north, south, east, west, up, and down.

I’m in a cottage with a hole in the floor. I can see: stairs, locked door, door, hatch, hatch. I can go: east, up.

I typed hjaelp (help) right away:

For at laase en doer/lem op skriv aaben.
Skatte I igger ofte nedgravet.
Det er en god ide at undersoege alle ting.

To open a door/hatch, put “open”.
Treasures are often buried underground.
It is a good idea to investigate everything.

Incidentally, Danish uses special characters (å, æ, ø) and there is a version of the Nascom system that allows for them, but this one flattens things, so “åben dør” is “aaben doer”. ø is still used once in the game but I think it’s just the “zero” symbol.

Based on the help messages and my experimentation the verbs I’ve found are

tag (take), gaa (go), lave (build), laeg (drop), grave (dig), undersoeg (examine), and aaben (open)

although only the first three letters are needed of each (so it’s useful to “und” all the nouns). “Aab” is particularly quirky as you’ll see in a moment. I didn’t say “I started the game by dumping the verb list, like I normally do with languages I’m not good at”, and that’s not because of being a Danish master, but because after heavy searching through the machine-code file I can’t find where the verbs are stored. I imagine they’re broken up somehow. The upshot is that I’m not done with the game yet:

Heading up via “gaa op” (up the stairs one of the two hatches, or both?) there is an attic with a “rode kasse” (red box). You might think that the verb “aaben” would come into use here, but instead the game wants you to examine the box, which contains a second smaller box. Then examining the smaller box reveals some keys (noegler, or nøgler if special characters were being used).

Jeg er paa er loft. Jeg kan se: Noegler. Lille aeske. Rode kasse. lem. Mulige udgange: ned

I am in an attic. I can see: keys, little box, red box, hatch. I can go: down.

With the keys in hand (“tag noe”) you can then go downstairs to unlock the locked door, and I struggled for a while since no variation of “unlock door” or “open door” worked. I finally hit upon “open” alone. That’s what the help is supposed to indicate, and maybe it’s clearer in Danish, but I was mentally translating that as it requiring a noun, plus it’s common for a separate verb to do the door-unlocking as opposed to the keys being passively used while held.

The unlocked door leads to a kitchen (with a kitchen cabinet that seemingly has nothing) and another door leading further on into darkness. I don’t have any way through the darkness.

This is despite just outside seemingly having a solution:

This is a “courtyard” (or maybe “farmyard”) with a stone trough. Searching the trough reveals a box of matches, but nothing I’ve tried has let me light a match, so the darkness has to be left behind for now. (Sometimes adventure games don’t let you light a match by itself; the matches are just a tool for lighting a lamp. I haven’t found one of those either, though.)

The most fun way I’ve found to do vocabulary is to search on Google Images. This 1895 picture by Fritz Syberg (“An Old Farmyard”) came up looking at the word “gaardsplads”.

To the south is a “graesmark” (meadow) but nothing seems to be there (other than “looping” exits to make it seem bigger than it is) so let’s head north instead.

There’s a branching path with a locked hatch and a shed at the end. (Or rather “udhus”, a literal “out-building”, which could be an “outhouse” except there’s enough stuff inside the game clearly is meaning a shed.)

L. A. Ring from 1907, “Gammelt udhus”. Gammelt is “old”.

Inside there’s a shovel, oil barrel (with hammer), stack of boards, saw, rake, and hoe. Those boards and saw and hammer make it tempting to start building a ladder right away but the game says we’re missing something (I assume nails). The shovel, though, can be taken out right away for some digging, and here the game gets interesting in a ludology sense.

Crystal Cave (1977) modified the original Adventure source to start the game with a cave that had “treasures” that were all breakable formations, and park ranger that would kick you out if you caused too much havoc; essentially, a satire of cave-delving that imagined what things really would be like for a treasure-hunter in the real world. In the real world, if you start digging at random, you might find a rusty iron or an old beer bottlecap; such is the same here.

That’s a zero, right? Also this is the beer bottlecap.

I would guess, just like Crystal Caves, we’ll eventually break down to a lower layer with the real treasures.

Digging also reveals a stump in the forest, but I haven’t been able to do anything useful with it; no treasures have revealed themselves. Other than the dig-fest, the north part of the map has a locked hatch leading down to darkness (again, no light) and also what’s just a big hole.

Jeg er ved et huli jorden. Jeg kan se: . Mulige udgange: nord

I am at a hole in the ground. I can see: . I can go: north

(I assume this is where the ladder gets used.)

If anyone wants to take a shot at the game, directions for getting and playing it are here; all I really want is a verb list, if I’m stuck on an actual puzzle I don’t want to hear about it yet.


My So Called Interactive Fiction Life

Announcing Sharpee v1.0.0-alpha.1

By Claude Opus 4.1 and David CornelsonToday marks an important milestone in the Sharpee project as we release our first alpha version. After months of careful architecture design and implementation, we're ready to share our vision for a modern, Typescript-based interactive fiction platform.Why Sharpee?Interactive
Announcing Sharpee v1.0.0-alpha.1

By Claude Opus 4.1 and David Cornelson

Today marks an important milestone in the Sharpee project as we release our first alpha version. After months of careful architecture design and implementation, we're ready to share our vision for a modern, Typescript-based interactive fiction platform.

Why Sharpee?

Interactive fiction has a rich history spanning decades, from Zork to modern narrative games. Yet many IF development tools still reflect design decisions from the 1980s and 90s. Sharpee re-imagines interactive fiction development with modern software engineering principles:

  • Type Safety First: Full Typescript implementation catches errors at compile time.
  • Event-Driven Architecture: Every game state change is an immutable event, enabling features like unlimited undo/redo.
  • Extensible by Design: Add magic systems, combat, economics, or any mechanic through clean plugin interfaces.
  • Test-Driven Development: 2,700+ tests ensure reliability
  • Text Service: queries world model and event source to report game state. Authors can can create their own Text Service for any type of client.

What's in Alpha 1?

This release establishes the core foundation:

The Engine

Our event-sourced architecture treats every game action as an immutable event. This isn't just a technical detail—it fundamentally changes what's possible. Perfect save/restore, replay systems, and debugging tools all become trivial when your entire game history is a sequence of events.

The World Model

Entities in Sharpee aren't just objects with properties. They're compositions of traits and behaviors that interact dynamically. A mirror isn't hardcoded to be reflective—it has a mirror trait that provides that behavior. This composability means you can create entirely new types of objects without touching the core engine.

Natural Language Understanding

Our semantic parser doesn't just match patterns—it understands intent. "Take the red ball" and "pick up the crimson sphere" can resolve to the same action because the parser works with meaning, not just syntax.

The Standard Library

We've implemented 40+ standard actions that form the vocabulary of interactive fiction: take, drop, examine, go, open, close, wear, eat, and many more. Each action follows our validate/execute pattern, ensuring consistent behavior across the system.

A Different Approach

Sharpee takes some unconventional approaches that we believe will pay dividends:

Separation of Concerns: The physical world model is completely separate from meta-game features like scoring or saving. This clean separation makes the code base easier to understand and extend.

No Global State: Everything flows through events. There's no hidden state to worry about, no globals to accidentally mutate. This makes Sharpee games inherently more predictable and debuggable.

Extension-First Design: Rather than building every possible feature into the core, we've created a powerful extension system.

The Road Ahead

This alpha release is just the beginning. We're working on:

  • The Forge API: A fluent, author-friendly API for creating games without diving into Typescript.
  • Story Showcases: Completing our potential IF Comp 2025 - Reflections story and rebuilding sample stories like Cloak of Darkness.
  • Platform Expansion: Web and Electron clients for broader reach.
  • Visual Tools: VS Code Plugin for syntax highlighting and compile/test features.

For Early Adopters

If you're technically inclined and interested in the future of interactive fiction, we'd love your feedback on this alpha. The architecture is stable, the tests are passing, and the extension system is ready for experimentation.

Some ideas to try:

  • Port a classic IF game to see how Sharpee handles it.
  • Create an extension for your favorite game mechanic.
  • Stress-test the parser with complex commands.
  • Build a small story to explore the authoring experience.

A Personal Note

Interactive fiction has always been about pushing boundaries—not just in storytelling, but in what's technically possible with text. With Sharpee, we're trying to push those boundaries again, bringing modern engineering practices to a beloved genre.

This alpha release represents thousands of hours of design, development, and testing. It's built on lessons learned from decades of IF development, but it's not afraid to challenge conventional wisdom when we believe there's a better way.

Get Started

Ready to explore? Check out:

  • [GitHub Repository](https://github.com/ChicagoDave/sharpee)
  • [Release Notes](https://github.com/ChicagoDave/sharpee/releases/tag/v1.0.0-alpha.1)
  • [Documentation](https://github.com/ChicagoDave/sharpee/tree/main/docs)

We're excited to see what the interactive fiction community will build with Sharpee. The foundation is solid, the architecture is clean, and the possibilities are endless.

Welcome to the future of interactive fiction development.

David Cornelson
Creator of Sharpee


Download: [Sharpee v1.0.0-alpha.1](https://github.com/ChicagoDave/sharpee/releases/tag/v1.0.0-alpha.1)
License: MIT
Requirements: Node.js 18+, pnpm 8+
Status: Alpha (not for production use)


Extensions, Interfaces, and Semantic Grammar

[Written by Claude Opus 4.1]When building an interactive fiction (IF) engine, one of the most challenging aspects is creating a system that's both powerful enough for complex stories and flexible enough to accommodate different authoring styles. Today, I want to share three interconnected architectural decisions in
Extensions, Interfaces, and Semantic Grammar

[Written by Claude Opus 4.1]

When building an interactive fiction (IF) engine, one of the most challenging aspects is creating a system that's both powerful enough for complex stories and flexible enough to accommodate different authoring styles. Today, I want to share three interconnected architectural decisions in Sharpee that work together to create this flexibility: our extension system, interface refactoring, and semantic grammar parsing.

The Extension Challenge

Every IF story is unique. A mystery game might need a conversation system with interrogation mechanics. A puzzle game might require complex object interactions. A fantasy adventure might implement a magic system. How do you build an engine that can support all these different needs without becoming a bloated, unmaintainable mess?

Traditional approaches often fall into two traps:

  1. The Kitchen Sink: Include every possible feature in the core engine, making it heavy and complex.
  2. The Walled Garden: Provide limited customization points, forcing authors to work around the engine's limitations.

We chose a third path: a lean core with a powerful extension system.

Extensions as First-Class Citizens

In Sharpee, extensions aren't an afterthought—they're how the engine itself is built. Even our standard library of actions (TAKE, DROP, EXAMINE, etc.) is implemented as an extension. This dog-fooding approach ensures that story authors have the same power as engine developers.

An extension in Sharpee can:

  • Add new actions and commands
  • Define custom traits for entities
  • Register event handlers for game events
  • Provide language-specific vocabulary and messages
  • Implement entirely new game mechanics

Here's what a simple extension looks like:

export const conversationExtension: IExtension = {
  metadata: {
    id: 'conversation',
    name: 'Conversation System',
    version: '1.0.0',
    description: 'Adds dialogue and conversation mechanics'
  },
  
  traits: [
    {
      id: 'conversable',
      schema: ConversableSchema,
      implementation: ConversableTrait
    }
  ],
  
  actions: [
    {
      id: 'if.action.talking',
      pattern: 'talk to :character',
      implementation: TalkingAction
    }
  ],
  
  eventHandlers: {
    'conversation.started': handleConversationStart,
    'conversation.ended': handleConversationEnd
  }
};

This extension adds the ability for entities to be conversable, implements a TALK TO command, and handles conversation-related events. A story that doesn't need conversations simply doesn't load this extension.

The Interface Refactoring Journey

As our extension system grew, we encountered a problem. We had interfaces scattered across packages with inconsistent naming. Some interfaces in our `core` package were actually implementation details. Others in our `stdlib` package were mixing contracts with implementations.

More critically, we discovered naming collisions. Both `core` and `stdlib` defined an `Action` interface, but they meant different things. The core version was a low-level execution interface, while the stdlib version was a rich, author-friendly abstraction.

This led to our I-prefix refactoring initiative. We established clear rules:

  • All interfaces get an `I` prefix (following Enterprise Typescript conventions)
  • Core package contains only pure interface definitions
  • Implementation classes live in their respective domain packages
  • Extension points are clearly marked as interfaces

The refactoring revealed our true architecture:

@sharpee/core (IAction, IEntity, ISemanticEvent)
    ↓
@sharpee/world-model (IWorldModel, IFEntity extends IEntity)
    ↓
@sharpee/if-domain (contracts for IF concepts)
    ↓
@sharpee/stdlib (rich implementations with scope & validation)

This layering allows extensions to hook in at the appropriate level. A simple extension might just use stdlib's rich interfaces. A complex extension might implement core interfaces directly for maximum control.

Semantic Grammar: Understanding Intent

The third piece of the puzzle is semantic grammar parsing. Traditional IF parsers match patterns and extract objects:

Pattern: "put :item in :container"
Result: { verb: "put", directObject: item, indirectObject: container }

This works, but it loses information. Did the player type "carefully place," "jam," or "gently set"? These variations carry semantic meaning that can enhance the story's response.

Our semantic grammar system preserves and enriches this information:

{
  pattern: 'put|place|jam|shove|stuff :item :container',
  semantics: {
    'put': { manner: 'normal' },
    'place': { manner: 'careful' },
    'jam': { manner: 'forceful' },
    'shove': { manner: 'forceful' },
    'stuff': { manner: 'careless' }
  }
}

When a player types "jam coin slot", the action receives:

{
  actionId: 'if.action.inserting',
  directObject: coin,
  indirectObject: slot,
  semantics: {
    manner: 'forceful'
  }
}

Actions can now respond appropriately:

if (semantics.manner === 'forceful') {
  return event('action.success', {
    messageId: 'inserted_forcefully',
    params: { item: coin.name }
  });
}

This semantic information flows through the entire system. Extensions can define their own semantic properties. Event handlers can react to how actions were performed, not just what was done.

Bringing It All Together

These three architectural decisions reinforce each other:

  1. Extensions need clear interfaces to hook into the engine.
  2. Interfaces need to be well-organized to support extensions.
  3. Semantic grammar provides rich information that extensions can leverage.

Consider a combat extension. It can:

  • Define interfaces for combat-capable entities (using our refactored interface system)
  • Add semantic properties for attack manner (slash, stab, swing)
  • React to these semantics in combat resolution

The result is a system where:

  • The core engine remains lean and focused
  • Story authors have unlimited flexibility
  • The architecture stays clean and maintainable
  • Player intent is preserved and understood

Looking Forward

We're continuing to evolve these systems. Current work includes:

  • Standardizing extension APIs across all packages
  • Adding semantic properties for emotional tone
  • Creating a marketplace for sharing extensions
  • Building developer tools for extension creation

The goal isn't just to build another IF engine. It's to create a platform where story authors can focus on their narrative while having the power to implement any mechanic their story needs.

Interactive fiction is a unique medium that sits at the intersection of literature and software. Our architecture embraces both sides of that intersection—providing the structure of good software engineering while preserving the expressiveness needed for compelling storytelling.


Sharpee is an open-source interactive fiction engine written in Typescript. Learn more at [sharpee.plover.net](https://sharpee.plover.net) or contribute on [GitHub](https://github.com/sharpee/sharpee).

Monday, 18. August 2025

Choice of Games LLC

Author Interview: Brian Rushton, “Star Crystal Warriors Go!”

It’s tough fighting evil by moonlight and being an ordinary 90s kid by daylight! Can you save your city’s dreams from monsters, halt a magical plague in its tracks, and still help your new club prepare for the best school festival ever? Star Crystal Warriors Go! is a 250,000-word interactive retro magical girl anime novel by Holly McMasters, with additional content by Brian Rushton. It releases nex

Star Crystal Warriors GoIt’s tough fighting evil by moonlight and being an ordinary 90s kid by daylight! Can you save your city’s dreams from monsters, halt a magical plague in its tracks, and still help your new club prepare for the best school festival ever?

Star Crystal Warriors Go! is a 250,000-word interactive retro magical girl anime novel by Holly McMasters, with additional content by Brian Rushton. It releases next Thursday, August 28th, and you can wishlist it on Steam today. (Even if you don’t plan to buy it on Steam, wishlisting really helps!)

You’ve spent a lot of time thinking about Choice of Games, including having played every game in our catalog (at least up through 2021). Can you share a little about that process and whether you’ve continued to play every release?

I’ve been a heavy reader my whole life, and I enjoy diving into new genres and reading the best they have to offer. Before I worked with Choice of Games, I reviewed hundreds of interactive fiction games, from 80’s parser games to Porpentine’s Twine games and everything in-between.

I played a few early Choicescript games and got hooked. Choice of Robots and Slammed! were my early favorites. I was really taken with the way Choice of Robots lets you take such divergent paths (I’ve replayed it many times!) and I thought the twists and choices in Slammed! were really gripping, especially with the main NPCs.

So I was excited when, after working with Choice of Games, I was offered the opportunity to get review copies of the catalog up to that point. It was fantastic; playing the whole back catalog revealed so many hidden gems. Besides the super-famous games like Creme de la Creme and Choice of Rebels, I really liked games like Heart of the House and The Tower Behind the Moon and even scrappy, unusual games like Treasure Seekers of Lady Luck.

But I think I learned more from the less-popular games than the great ones. The best games make it all seem natural: the stats, the choices, the branches, you barely notice them as you’re engrossed in gameplay. But when a game goes ‘wrong’, it usually has something that sticks out like a sore thumb: tests that are too hard, too many stats, not enough branching, too short of a conclusion. And, playing more games, I saw that a lot of lower-rated games had issues in common, which became the body of the essay I wrote.

I should say, though, that this is all a matter of degrees. Compared to the amateur interactive fiction I usually play, every published Choicescript game is at least 4/5 stars for me. And even ‘bad’ games have their own charm. A good example is Gilded Rails. It’s one of the lowest-rated games, but I think that’s mostly due to how unusual it is, focusing on intense resource management and multiple romances over traditional plot.

I haven’t played every release since then, mostly due to money issues. The early 2020’s were pretty rough for me. I did pick up a lot of games I knew I’d like, though, like several Vampire: The Masquerade games, Stars Arisen (I’m looking forward to that author’s upcoming game!), and Restore, Reflect, Retry. I’m doing a little better financially now, though, and have started going through more games, starting with the cheapest Hosted Games.

Your first game with us was In the Service of Mrs. Claus, which is a really fun romp and a unique take on a Christmas story. What has been your experience coming back to ChoiceScript with SCWG having both written a game yourself in the past, and done this heavy analysis of our games?

Some people say the first book is the hardest, and that’s definitely true for me. I loved the concepts and themes of In the Service of Mrs Claus, but I was pretty overwhelmed while writing it. Due to family circumstances, I had to hurry the writing process, and I also suffered from extreme writer’s anxiety, so much that I’d spend hours just trying to overcome my writer’s block, only to write a few hundred words. The game ended up pretty short.

I also struggled with overall design, and so many of the most egregious examples of ‘stat disease’ and other common author problems in my essay were taken from my own game! Fortunately, editing and beta testing reduced a lot of issues and I’ve really enjoyed the positive responses I’ve gotten for Mrs. Claus over the years. But I definitely felt like I could have done more.

With SCWG, I had a much better grasp on both how to make good games and how to overcome writer’s block. I had just come off of writing a 350K-word parser game called Never Gives Up Her Dead, which I had written in just over a year, and I had a lot more experience with Choicescript games. More importantly, I didn’t have to rush. I came on after 100K words were written in the project, and only contracted to write 50K, but I wanted to do the very best I could to flesh out this game and fulfill the first author’s artistic version. I ended up adding 150K words instead of 50K, and made sure to do frequent check-ins with beta testers while writing and at the end. I especially wanted to avoid stat confusion, and made sure to change stat names to be distinct, allow the game to use the full stat bars and not stay stuck down low, added a ‘stats explanation’ guide and a visible stats mode, and included end of chapter saves. Everything I could think to add to the game mechanically, I did. Every plot thread I could resolve or character I could develop, I did. But, of course, writing isn’t an exact science, so I’ll have to see how readers respond to this game and learn from that response.

What did you find surprising about things this time around, given that you were adding work to another author’s project?

Well, my biggest surprise was finding out how similar my own writing is to Holly McMaster’s! Reading the draft project, I varied between, “this sounds like I could have written it” and “I wish that I had written this!” We both have a love for magic powered by creativity and dreams, with terrifying monster opponents and multiple worlds.

Working with another author was both challenging and rewarding. The biggest benefit, to me, is the original author’s skill at writing character relationships. Many people who’ve played the drafts and the final version have commented on how much they love the character arc of Polaris, your animal companion. It also helps that the first author writes good dialogue, something which I often struggle with and have to refine through multiple drafts and rounds of feedback. On the other hand, I was able to contribute to the fight scenes and spicing up the location descriptions, skills which are important in the parser games I wrote before working for Choice of Games.

The challenges were in working with a pre-existing setting and characters. My biggest goal was to fully realize the original author’s concept and not to replace it with my own plans. If I had written it from scratch, then I probably would have designed it differently, with my own take on the branching and scene structure. But this was someone else’s project first. I loved the initial draft I played (I even made fan art of the characters) so I’ve thought, “How can I make a finished version of this game that others can enjoy?” instead of, “How can I make this my own?”

The most significant additions I made to the author’s vision came from beta testing. One thing I’ve learned over the years is that if multiple beta testers ask for something, you should definitely give it to them, even if it’s not what you originally intended. Comments from beta testers led to more romance scenes and options as well as a deeper exploration of the loss of the main character’s mother.

Overall, my experience with this collaboration has made me want to collaborate again. I’ve even talked to my sister about working on a Hosted Games concept based on a Brazilian Jiu-Jutsu gym as a fun side project for us to write casually over the next few years; she loves Jiu-Jitsu and the stories she tells about the people there could work well in Choicescript format.

What do you think our readers will enjoy most about SCWG?

To me, this game feels like an animated movie you’d watch on a Saturday morning. Some of my favorite Choicescript games are simulationist, where you replay over and over again to test your ideas and maximize your rewards. Other favorite games have characters I feel like I can really get into and roleplay. And others, like Slammed!, have great plot with characters that I end up connecting with and which have left me with a satisfying narrative experience. SCWG is the latter, for me. When I played the first draft, I felt really invested in characters like Kit (your alluring nemesis) and Polaris (your mysterious animal friend) and the ways that my character could influence them and bond with them. Everything I’ve added to the game myself has just been to build on those characters, to help others read about them and get to know them, and to give them a rewarding ending. That’s where a lot of the extra writing went; each of the main characters has around 12 different possibilities for how they can end up and their relationship with you, and each of those branches has some variation of its own.

Do you have any new favorites in the COG, HC, or HG catalog?

Well, in the last year I played Wayhaven, and I finally get why everyone enjoyed it so much. I’m a big mystery fan and I love the variation in the 4 romantic leads. It’s definitely influenced the way that I think about and write romance in games. And Stars Arisen was a lot of fun for me. I like being powerful in games, so being the child of a goddess and using high-level magic was definitely fun.

What advice do you want to offer prospective authors of a ChoiceScript game?

I would offer two pieces of advice:

Get feedback early and get feedback often! If you put off compiling and playing your game or letting others try it until the very end, you have no time to fix anything. And there’s no telling how things will go over until you actually try it. For instance, beta testers and my editor found that Star Crystal Warriors Go had extremely difficult challenges in a lot of places (some with a success rate of less than 5 in 10,000!). With their help, I was able to tone it down. Other testers noted that the game started off rough but really took off around chapters 5 and 6, so I went back and gave a lot of extra care to early chapters. The more feedback you get, the better!

Find a writing rhythm that works for you. In my first game, I shot for writing 1000 words a day. I ended up not being able to reach that, and would feel bad, and do worse the next day. Now, I set really small milestones. If I write 300 words, I get to listen to one podcast or beat one level of a game. Then I write another 300 words. That helped me quadruple my writing rate. Everyone is different, so feel free to experiment and try different styles until you find something that you feel comfortable with!

Sunday, 17. August 2025

IFComp News

The 2025 Colossal Fundraiser has begun!

Hello, friends. We are just a couple of weeks away from this year’s IFComp games being released. Are you looking forward to them as much as we are?? IT’S SO EXCITING!! (Unless you’re an author who is furiously testing and revising and recompiling and testing and revising and recompiling and… Good luck, authors! You can do it!)While we eagerly await the new games to come, we’d like to ask for

Hello, friends.

We are just a couple of weeks away from this year’s IFComp games being released. Are you looking forward to them as much as we are?? IT’S SO EXCITING!! 
(Unless you’re an author who is furiously testing and revising and recompiling and testing and revising and recompiling and… Good luck, authors! You can do it!)

While we eagerly await the new games to come, we’d like to ask for your help with the Colossal Fund. If you already know about the fund and are able to contribute, please go to ifcomp.org and hit that blue “Donate with PayPal” button!

If you’d like more information first, keep on reading…

The Colossal Fund raises money for the cash prizes that are awarded to the top two-thirds of IFComp entries. We use 80% of the funds for that, and the remaining funds are used to provide support for the programs and projects of the Interactive Fiction Technology Foundation, including the Interactive Fiction Competition, the IF Archive, the IFDB, the forums at intfiction.org, and other projects.

This year, we are shooting for $8K.

We’re now accepting donations for 2025!
The donation button is live at IFComp.org. See your name listed on our donor page (or listed as “anonymous” if you prefer)!
Our fundraising deadline is October 15th - the last day of competition voting. 80% of the proceeds (~$6.4K if we hit our goal) will be distributed among the top two-thirds of IFComp finishers. 

What does this mean for authors?
Because we’re dividing the money among the top two-thirds of games, the exact numbers depend on how many entries there are. If we have 75 entries, then we will divide the money among the top 50. If we hit our goal, that would mean that the winner of the competition will be offered a prize of $357, second place will be offered $343, third prize $329… and so on and so forth until 50th place, which will be offered $10.  Our goal is to distribute prizes across a broad range of IF styles and ideas. Any game which does even moderately well is offered a decent prize. (If you wanna get nerdy, there’s information about the formula with a link to a Python script here.)

How do I donate?
Please go to https://ifcomp.org and push the big blue Donate button.

Is my donation tax-deductible?
Yes, to the extent allowed by law. (Consult a tax professional.)

Does the Colossal Fund replace the usual IFComp prize list?
Nope! These cash prizes will be in addition to the usual IFComp prize list. We do need more of those non-cash prizes as well! Please visit our prize page to see what objects and services others have donated, get ideas from donations given in previous years, and see how you can contribute.

How will the cash prizes be distributed?
Via PayPal or Venmo. (The IFComp entry form has a field for your Paypal address.) If you can’t accept PayPal or Venmo, we can mail a US check to a US address. If that doesn’t work for you, or if you wish to decline the cash prize, we will roll the money into next year’s prize fund, which means it will continue to support authors and IFTF programs.

Saturday, 16. August 2025

Renga in Blue

Citadel (1981)

Many of the British product samples remained at the company. We tested as hard as we could but didn’t dare sell any hardware that was obvious crap. The British were more relaxed about that kind of thing than the Danes. — Rolf Ask Clausen, of the company ZX-Data In late 1980, the Danish journalist Svend […]

Many of the British product samples remained at the company. We tested as hard as we could but didn’t dare sell any hardware that was obvious crap. The British were more relaxed about that kind of thing than the Danes.

Rolf Ask Clausen, of the company ZX-Data

In late 1980, the Danish journalist Svend Garbarsch made a fateful call to Clive Sinclair, regarding a ZX80 he had seen in a British magazine.

By that time, Denmark certainly had a tradition of computing in general dating back to Regnecentralen (funded directly via Marshall Plan money for reconstructing Europe after WWII) with the companies Christian Rovsing and Danish Data Electronics later big contenders. None really tried to enter the consumer space. Regnecentralen modified a Data General Nova mini-computer to be the RC 7000 in 1970…

…and then transformed it into the RC 3600 as a business/school computer. Christian Rovsing also focused on mini-computers; the latecomer DDE made their first computer in 1975 for “data collection, process control and monitoring”.

An ID-7000, the first computer from Danish Data Electronics.

Arguably the most interesting early stab at Danish home computing was the ICL Comet. (ICL we’ve seen before: essentially Britain’s counterpart to IBM, with the I in the name meaning International.) As their computers generally used CP-M as their operating system we won’t have any Comet-specific software in this Project’s future; the important point is that it still tended to be targeted at the higher end / hobbyist audience, along with various computer kits like the Nascom. Even the Commodore PET was considered more of an expensive business machine.

What all this means is when Svend Garbarsch made his call from Denmark to England, a “cheap” computer for the masses in Denmark had yet to be introduced. Somehow in the process of the conversation with Clive Sinclair, the salesman-CEO talked the journalist into forming a distribution outlet for ZX80s: hence the founding of ZX-Data. According to his nephew Rolf Ask Clausen, the first test computer came at Christmas 1980 through the post office, and he had to “explain to the customs officers what the ZX80 machine was, and thus how it should be cleared through customs.”

In their first ad, the Sinclair ZX80 was dubbed “Folkedatamaten” — “The People’s Computer” — and orders started streaming in. According to his nephew Rolf Ask Clausen who was there from the beginning, he “worked day and night” trying to keep up. After a month they had to increase their warehouse space and hire more people.

Note this is after the ZX81 already launched elsewhere! One might suspect leftover product being handed off, especially given the failure rate sometimes went to 10%. ZX-Data did switch to shipping out ZX-81s by November 1981; the ZX Spectrum (where the failure rate finally calmed down) filtered down to Denmark by 1983.

Cover of a March 1982 newsletter from ZX-Data.

Now, I need to back up the story a little. Today’s game, while written by a Dane in Copenhagen, was first published (as far as we know) in February 1981, which is before the ZX-Data launch. To explain, let’s go back to a pivotal moment in 1980–

The Australian Tim Hartnell had floating through multiple jobs, including news reader for a TV station, before landing in London as a journalist working for the Australasian Express; his writing was of the “nerdier” inclination and included a mathematics column.

The photo above was taken in April 1980 outside Madame Tussaud’s. Tim was puzzling over the ZX80 which had launched two months before. He had obtained a book on BASIC programming that he is shown reading here, specifically having trouble with the chapter about For/Next loops. According to Young:

It was while he was reading this chapter that Tim realised that if he was having difficulty understanding this programming stuff, then other people probably were too. This photo virtually shows the instant that Interface Publications was born.

He swerved his journalist career towards computers, writing one of the very early books for ZX80, Making the Most of Your ZX80.

This particular book was put out by Computer Publications (later well-known for the magazine Sinclair User) but Hartnell went on to form his own publisher, Interface (co-founded with Robert Young); he also launched a ZX-80 club which quickly got “thousands” of members.

The club’s February 1981 issue of their publication advertised (for the first time) a 16K SUPERGAME.

Citadel on the bottom. Labyrinth is from Hartnell’s ZX80 book and is even more marginal as an adventure game, but I’ll still visit it sometime.

Ole Noerregaard of Copenhagen was a regular contributor starting in 1980, so he somehow got a hold of a ZX80 anyway despite them not having an official distributor in Denmark. (There’s always either talking past or smuggling through customs!) With the caveat that this is only a quasi-adventure game, it’s the first of its type we know of from Denmark. It was written in English. (My next game, which involves a completely different story, will get into the first one written in Danish.)

The game did have some “professional distribution” but the word “professional” earns those quote marks.

If you think that’s bad, look at the inside:

The publisher is not Lion. The publisher is the exceedingly obscure CDS Micro Systems. Lion is the one who made the tape, and CDS flipped it over and slapped CITADEL on it and called it good. CDS does have a few other games (all ZX80) and two of them (Andromeda and Timestar) are sort-of adventure games (with Wumpus-style navigation) but they don’t seem to have any connection with Ole Noerregaard so we’ll pitch studying them for some future time.

To summarize:

a.) Tim Hartnell launched a club and publication in the UK after discovering the ZX80 as a journalist.

b.) Denmark in general didn’t get any kind of distribution until a different journalist (Svend Garbarsch) called Clive Sinclair and got talked into founding ZX-DATA, which started distributing mid-1981.

c.) Prior to that, it was still possible through other means to cart hardware between countries, and Ole Noerregaard not only expanded his computer to 16K but was an enthusiastic contributor to Hartnell’s publication Interface, getting a SUPERGAME published starting early 1981 with some extra distribution by the dodgy CDS Micro.

Commentor Rob (who clued me in on the game’s existence) sent a less-damaged picture of a later issue of Interface with a blurb.

16K SUPERGAME: Make the most of your new, expanded memory with CITADEL. In the remote land of Destaphnya; shrouded in mist at the peak of Mt. Nganra, stand the CITADEL. For a thousand years, men have sought to find the secret hidden in the citadel, to possess its power. All have been repelled by the Dark Agents of Protection. Will you succeed where the others have failed? Can you storm the CITADEL? If you have a 16K RAM pack, you need CITADEL.

The game’s lore involves the titular Citadel “existing in many dimensions”; your job is to get as much treasure as possible.

You can carry four objects at a time, and bring them back to the start in order to “place” them in your home dimension, getting points. You are given three items at the start (none of which are explicitly treasure, but any item in the game gets points when stored as a treasure). The instructions give a goal of 1200 points. Commands are all single-letter.

(As an aside, regarding the ZX80, I think it’s notable we haven’t seen attempts at parser games, Planet of Death aside. It isn’t like the expanded version is really that much different from the ZX81 in a BASIC-code sense, but rather, the screen-blinks-at-every-keypress when typing long commands gets very grating. The issue is mitigated with single letter commands. If you need to see what a parser game looks like on ZX80, this link will take you to a playable version of Planet of Death.)

Room descriptions in the citadel are randomly generated, and not in a consistent positional way. That is, the room description changes every turn, even if you stop and “look” while hanging out. While some descriptions are genuinely vivid the overall effect is to make them be ignored; there is no “exploration pleasure” in finding a vivid new scene.

Both this and the previous room are the exact same room, the second screen obtained but using Look.

The map is randomly generated each time, making a 7 by 7 map. I have one of them fully rendered here, where monster encounters are marked with a danger symbol.

Notably, the map is not just a single path, but has some merging, meaning that you could technically avoid monster encounters if you knew where they were ahead of time. Alas, with no save game feature, it’s a matter of spinning the dial at random.

There’s no running away: each encounter requires you ATTACK with your choice of inventory item (like POLE ARM) and as far as I’ve been able to find by squinting at the source code the choice of weapon does not matter: it’s random if you have anything good happen or not.

Usually combats end by the enemy running away, either delivering a blow (as shown above) or having a draw with no damage given (a good result). You have a LIFEFORCE that starts at 400 and goes down by 100 on a good hit.

The one (1) time that I managed to kill a monster was on a skeleton. One of the “weapons” was a silver cross so you might think that might give an advantage in undead-combat but no: this was with a pole arm, and there seems to be no effect to the choice of weapon.

I did eventually scrounge out by luck what I think is essentially a max score. However, the game never acknowledges such and still claims there’s more treasure in the Citadel (there wasn’t).

This hence doesn’t rise to the level of an adventure — no real exploration, object choice doesn’t matter — but it isn’t an RPG either, as there are no stats other than the overall life force going down. So it’s in that weird in-between space that happened in early games where it isn’t a recognizable genre at all. Clearly the author put a lot of effort into the map generator and had some legitimately colorful room descriptions to match, but simply rose to the level of a “slot machine game” and stopped there. This was still worth playing as it will make an interesting comparison with the other ZX80 “quasi-adventure” specimens out there; for now, we’re going to switch to Danish, and look at their first “real” adventure.

The enormous chess board is my favorite of the random descriptions.

POSTNOTE: There’s a version of Citadel called Catacombs of Morglim that was tweaked by Trevor Sharples of the ZX80 club. It was published as actual source code in the pages of the Interface, but with the map generator taken out. A follow-up article by Sharples mentions methods of tweaking the source code; weirdly, the follow-up talks about having it generate a new cave each time, putting a generator back in. And no point during either article is Citadel mentioned as the original. This still seems to be in the hacker-code-sharing mode where “ownership” was very loose. Or maybe Catacombs of Morglim was the first version (only distributed “person to person” so to speak) and Citadel was the enhanced version? Citadel started being published first, but that doesn’t mean it was written first.

Friday, 15. August 2025

Interactive Fiction – The Digital Antiquarian

Bullfrog in the Dungeon

This article tells part of the story of Bullfrog Productions. In January of 1995, Electronic Arts bought the prestigious British games studio Bullfrog Productions for an undisclosed sum that was rumored to be in the neighborhood of $45 million. The lives of the 35 or so people who worked at Bullfrog were transformed overnight. Peter […]

This article tells part of the story of Bullfrog Productions.


In January of 1995, Electronic Arts bought the prestigious British games studio Bullfrog Productions for an undisclosed sum that was rumored to be in the neighborhood of $45 million. The lives of the 35 or so people who worked at Bullfrog were transformed overnight. Peter Molyneux, the man who had built the studio’s reputation on the back of his “god game” Populous six years earlier, woke up the morning after the contract was signed with real money to spend for the first time in his life. For him and his colleagues, the new situation was gratifying, but also vaguely unsettling.

The acquisition came with all of the expected rhetoric from EA about “letting Bullfrog be Bullfrog.” Inevitably, though, the nature of the studio’s output changed in the years that followed. EA believed — and not without evidence — that series and brands were the key to long-term, sustainable success in the games industry. So, it encouraged or pressured the folks at Bullfrog to connect what they were doing now with what they had done before, via titles like Magic Carpet 2Syndicate WarsPopulous: The Beginning, and Theme Park World. Iteration, in other words, became at least as prized as the spirit of innovation for which Bullfrog had always been celebrated.

And where the spirit of innovation refused to die, you could always do some hammering to make things fit. The most amusing example of this is one of the two best remembered and most beloved games to come out of this latter period of Bullfrog’s existence. What on earth could be meant by a “theme hospital?” EA couldn’t have told you any more than anyone else, but the name sounded pretty good to it when one considered how many copies Theme Park had sold the year before the acquisition.


Theme Hospital was born as one of about a dozen ideas that Peter Molyneux wrote on a blackboard during the heady days just after the acquisition, when Bullfrog had a mandate to expand quickly and to make more games than ever before. This meant that some of the Bullfrog old guard got the chance to move into new roles that included more creative responsibility. Programmer Mark Webley, who had been doing ports for the studio for a few years by that point, thought that Molyneux’s idea of a simulation of life at a hospital had a lot of potential. He plucked it off the list and got himself placed in charge of it.

In the beginning, he approached his brief with a measure of sobriety, not a quality for which Bullfrog was overly known. He even thought to do some field research at a real hospital. He and visual artist Gary Carr, the second person assigned to the team, talked the authorities at Royal Surrey County Hospital, conveniently located right next door to Bullfrog’s offices in Guildford, England, into giving them a behind-the-scenes tour. It proved rather more than the pair had bargained for. Videogame violence, which Bullfrog wasn’t noted for shying away from, was one thing, but this was something else entirely. The two young men were thrown out of at least one operating theater for retching. “I remember we watched a spinal operation one morning, which was bad enough,” says Carr. “Then the person who had been assigned as our guide said, ‘Alright, after lunch we can pop down to the morgue.'” It was right about then that they decided that an earnest simulation of life (and death) at a National Health Service hospital might not be the right way to go. They decided to Bullfrog the design up — to make it silly and irreverent, in Bullfrog’s trademark laddish, blackly humorous sort of way. “It’s not about how a hospital runs,” said Mark Webley sagely. “It is about how people think [it] runs.”

Webley played for a while with the possibility of making Theme Hospital a sort of satirical history of medicine, from the Middle Ages (“when curing people usually meant hacking their legs off with a bloody great saw, covered in leeches”), through the Victorian Age (“lots of mucking about with electric shocks and the like”), and on to the present and maybe even the future. In the end, though, that concept was judged too ambitious, so Theme Hospital returned to the here and now.

That said, the longer the slowly growing team worked, the less their game seemed to have to do with the real world of medicine that could be visited just next door. A former games journalist named James Leach came up with a matrix of absurd maladies: Bloaty Head (caused by dirty rainwater and putrid cheeses), Broken Wind (caused by too much exercise after a big meal), Slack Tongue (caused by too much vapid celebrity gossip), Infectious Laughter (caused by hearing too many sitcom laugh tracks), King Complex (afflicting Elvis impersonators who spend too much time in character). The cures are as imaginative as the diseases, generally involving slicing and dicing the patients/victims with one or more horrifying-looking Rube Goldberg contraptions. Theme Hospital is healthcare as those with a deathly fear of doctors imagine it to be.

The finished game is deceptively complex — perhaps a little too much so in my opinion. You start each scenario of the campaign with nothing more than a plot of land and a sum of starting money that never seems to be enough. You have to build your hospital from scratch, deciding where to place each and every room, and then where to put everything that goes inside each room, from the reception desk to the toilets to the even more important soda and candy machines. (This is most definitely not socialized medicine: your hospital is expected to make a profit.) Then you have to hire doctors, nurses, janitors, and administrative personnel from a wide variety of applicants. Figuring out how best to fiddle the countless knobs that affect the simulation requires considerable dedication; every input you make seems to result in a cascade of advertent and inadvertent consequences. Once the action really starts to heat up, Theme Hospital can become as frenzied as any session of Quake or Starcraft. Keeping the pot from boiling over in the midst of an epidemic or a disaster — events that become more and more frequent as you progress further — requires constant manual intervention, no matter how efficiently you’ve laid out your hospital and how judiciously you’ve selected its staff.

Your reaction to all of this will depend on two factors: whether you’re someone who is inherently drawn to open-ended simulations of the SimCity and Theme Park stripe, and whether Bullfrog’s brand of humor causes you to come down with your own case of Infectious Laughter. My answer to both of these questions is a qualified no, which makes Theme Hospital not really a game for me. By the time I’d played through the first couple of scenarios, I could see that the ones to come weren’t going to be all that different, and I just didn’t have the motivation to climb further up the campaign’s rather steep ladder of difficulty. Speaking of which: the campaign is as rudimentary as the simulation is baroque. Each of its scenarios is the same as the one before, only with more: more diseases to cure, more requirements to meet, more pressure. It left me with the same set of complaints I recently aired about the campaign in Rollercoaster Tycoon: I just wish there was a bit more there there, an attempt to provide a more interesting and diverse set of challenges that entailed less building of the same things over and over from scratch.

But, just as was the case with Rollercoaster Tycoon, the game about which I’m complaining today did very well for itself in the marketplace, an indication that plenty of people out there don’t share my peculiar preferences. (Who would have thought it?) Released in the spring of 1997, Theme Hospital was by all indications Bullfrog’s biggest single latter-day commercial success, a game which continued to sell reasonably well for several years, sufficient to reach the vicinity of that magic number of 1 million units. In the process, it became sneakily influential. You don’t have to squint too hard to see some of the DNA of Theme Hospital in the more casual time-management games that became crazily popular about ten years on from it.


Dungeon Keeper’s box sports its mascot, the Horned Reaper. Or, as the lads at Bullfrog preferred to call him, Horny.

The other widely acknowledged classic from this period of Bullfrog’s history took even more time and effort to make than Theme Hospital. In fact, Dungeon Keeper — one does have to breathe a sigh of relief that EA’s marketers didn’t insist that it be called Theme Dungeon! — had the most extended and torturous development cycle of any game Bullfrog ever made.

The idea for Dungeon Keeper came to Peter Molyneux some time before the EA acquisition: in mid-1994, when he had just finished up work on Theme Park.

I was sitting in my car in the middle of a traffic jam. I was bored to tears, waiting for the cars in front to begin moving again. Then the idea of a reverse role-playing game popped into my head. Yes, I thought, this could be a good game. You could have loads of monsters crawling around deep, dark tunnels. You could have the power to control them directly, deal with all their problems and petty grievances. As your dungeon grew, your power would increase. You could mine and hoard gold and have to put down rebellions. On top of all this, you could have the traditional heroes invading the trap-laden dungeon you’d created. I was so deep in thought, I hadn’t realized the traffic had cleared.

Dungeon Keeper was a set of answers to questions that some of the more literal-minded players of Dungeons & Dragons and its ilk, whether played at the tabletop or on computers, had been asking for many years already. Just what was up with those nonsensical labyrinths filled with creatures, traps, and treasure that seemed to be everywhere in the worlds of Greyhawk and the Forgotten Realms? What was the point of them? For that matter, what did all those monsters eat while they were hanging out waiting for the next group of adventurers to come by? And what was it like to be the evil wizard with the thankless job of taking care of this lot?

Peter Molyneux, who called CRPGs “my favorite type of game” even though he had never made one, proposed to find some answers now by approaching the genre from the opposite point of view from the norm. It was one of the most brilliant conceptions he ever came up with: quick and easy to explain to just about anyone who knew anything about computer games, and at the same time something no one had ever attempted to do before. And it was as on-brand as could be, gently transgressive in that trademark Bullfrog way. Molyneux:

You have to hire monsters and keep them employed. How do you keep a monster employed? There are basically two ways to motivate your staff. The first is basically to pay them money, but you really don’t want to do that. The second and preferred method of influence is fear. Say you have a band of ten goblins and you want to maintain their loyalty. What’s the best way to do that? Kill off five of them. Ritual sacrificing is really important. You have to prove to the people below you that you’re evil. This is a dungeon, after all.

When the acquisition negotiations began, Molyneux was already tinkering with Dungeon Keeper alone. He was joined by a second programmer, Simon Carter, in November of 1994. EA loved the idea; in the wake of DOOM, dark and gritty violence was in in games. The two-man project may have been in its infancy, but it was a major selling point for Bullfrog during the talks with EA, who saw it as a game with the potential to become huge.

Alas, after the deal was done EA promptly started to pull Molyneux in way too many directions for his liking. He was given a set of executive titles and the executive suite to go along with it, removing him from the day-to-day work in the trenches.

There was me, this passionate sixteen-hour-a-day coder, who kind of lived with these other blokes who were in the office, and all of a sudden Electronic Arts came in and said, “Okay, right. We think you’re fantastic, and we want to expand your studio, and rather than one game [per year] we can get five games out of you.” The company literally went from 35 people to 150 people in nine months, and suddenly there were all these strangers there. Then they said to me, “We think you’re fantastic. We’re going to make you head of our studio in Europe,” and part of me was thinking this was amazing — these people really think I’m clever — but there was another part of me that felt awful, that this was alien and horrible to me. The foundation stones of my work completely changed…

A man with an obsessive-compulsive relationship to the games he made, who would increasingly acknowledge himself to be neurodivergent in later years, Molyneux was painfully ill-equipped for the role of a glad-handing EA vice president; it just made him uncomfortable and miserable. He was forced to oversee Dungeon Keeper — his own baby! — from afar. “I didn’t have time to look at games,” he says. “I was walking in, spending half an hour with them, and then walking out. That was the worst period of my life. Bullfrog was everything to me, and suddenly I was this character that would have to walk into a room and make instant judgments about things.”

From the beginning of 1995, Dungeon Keeper was extravagantly hyped in the gaming press, which ran preview after preview. This gives us an unusual insight into the stages of its evolution. For example, a preview published in the American magazine Computer Games Strategy Plus in the fall of that year describes a heavy focus on multi-player action. At this point, Dungeon Keeper sounds almost like a proto-Diablo, with the important twist that one player is allowed to be the mastermind of the dungeon itself. For those on the side of Good, “one strategy for building up your character would be to enter the dungeon, kill off a few creatures, and run away. Return later (fully healed, but at a cost), kill a few things, and run away again. Stats are kept for the usual physical attributes as well as experience and monsters killed. One interesting feature will allow players to take their saved [character] with them to other people’s dungeons as well.” A player character who conquered a dungeon’s overlord would have the option to come over to the side of Evil and take his place.

In truth, however, progress throughout 1995 was slow and halting, a matter of two steps forward and one step back — and sometimes vice versa. “We spent quite a bit of time just messing around with the idea, but not getting very far in terms of a design,” admits lead artist Mark Healey. Dungeon Keeper may have had a brilliant core concept, but there was no clear vision of how that concept would be implemented, of what kind of game it would ultimately be at the gameplay level. Was it primarily a puzzle game, a kind of Tower Defense exercise where you had to set up your monsters and traps just right to fend off a series of different heroes? Or was it an open-ended sandbox strategy game, a SimCity — or Theme Park — in a dungeon? Or was it, as Strategy Plus dared to write, a game “which may redefine the role-playing genre”? At one point or another, each of these identities was the paramount one, only to fall back down in the pecking order once again. Programmer Jonty Barnes, who was responsible for the Dungeon Keeper level editor, left Bullfrog in the summer of 1995 to finish up his degree at university. He claims that when he rejoined the team a year later the game had “reset. It was back to where we were when I’d left off.”

Be that as it may, the inflection point for the project had already come and gone by then. EA was extremely disappointed when Dungeon Keeper failed to ship in time for the Christmas of 1995, to supplement a Bullfrog lineup for the year that otherwise included only the under-performing Magic Carpet 2 and the thoroughly underwhelming racing game Hi-Octane — a poor early return indeed on a $45 million investment. Management started to make noises about cancelling Dungeon Keeper entirely if it didn’t show signs of coming together soon. Meanwhile Peter Molyneux was as miserable as ever: “I still really love games, and I hate what I’m doing at the moment.” He thought about resigning, then trying to find or found another company where he could make games like he had in the old days, but he couldn’t bear to lose all influence over Dungeon Keeper. And as for seeing his baby axed… well, that might just send him around the bend completely.

So, at the beginning of 1996, he went to the rung above him on the EA corporate ladder with a modest proposal. He’d had enough of meet-and-greets and wining-and-dining, he told his bosses forthrightly. He wanted to quit EA — but first he wanted to finish Dungeon Keeper. He wanted to climb back down into the trenches and make one last amazing game before he said farewell. EA scratched its collective head, then said okay — on two additional conditions. He couldn’t make his game from the Bullfrog offices, where he would be privy to inside information about the other projects going on and might, it was feared, try to poach Bullfrog employees for whatever he decided to do after Dungeon Keeper. He would have to find another spot for the team to work from. And naturally, he couldn’t tell the public that he was leaving the studio with which he was so closely identified until Dungeon Keeper was done. This sounded reasonable enough to Peter Molyneux.

He didn’t have to look far for a new workspace: he simply moved the core of the team — consisting of no more than half a dozen people — into a space above the garage at his house.[1]Some details of the arrangement — namely, the financial side — remain unclear. Molyneux has claimed in a few places that he paid for the rest of Dungeon Keeper’s development out of his own pocket in addition to providing the office space, but he is not always a completely reliable witness about such things, and I haven’t seen this claim corroborated anywhere else. Suddenly it was like the old days again, just a small group of friends working and playing together for a ridiculous number of hours each day to make The Best Game Ever. The team effectively became Molyneux’s roommates in addition to his colleagues. Jonty Barnes:

We would play the game at night drinking beers, arguing over who should have won based on how the game should be versus the way it was. If somebody won too easily, we could change the design the following day, and that really honed the intensity and the strategy of building Dungeon Keeper. We ended up working pretty much six or seven days a week for a long period of time, but we didn’t notice because we cared so much about what we were creating.

Over these endless hours of work and play, the what of the game slowly crystallized. Certain elements of the puzzler were retained: each scenario of the campaign would require you to fend off attacks by one or more avatars of Good. Ditto some elements of the CRPG, whose legacy would take the form of the ability to “possess” any of the monsters in your dungeon, running around and fighting from a first-person view. At heart, however, Dungeon Keeper would be a management strategy game, all about setting up and running the best dungeon you could with the resources to hand. It would borrow freely not only from the likes of Theme Park (and now Theme Hospital) but also from the more straightforwardly confrontational real-time-strategy genre that was exploding in popularity while it was in development.

Despite the jolt of energy that accompanied the move into Molyneux’s house — or perhaps because of it — work on the game dragged on for a long, long time thereafter. The Christmas of 1996 as well was missed, while EA’s bosses continued to shake their heads and make threatening noises. At last, just a few weeks after Theme Hospital had shipped, Molyneux and company declared Dungeon Keeper to be finished. True to his word, Bullfrog’s co-founder, leading light, and heart and soul officially resigned on that very day. “Dungeon Keeper is my final game for Bullfrog, and this is part of the reason I wanted to make it so good,” he told a shocked British press. “It’s a sort of goodbye and thanks for all the great times past.”


You start each scenario with only a Dungeon Heart. You must protect this nerve center and in particular the orb it contains at all costs, for if the orb is destroyed, you die instantly.

Keeping a dungeon turns out to be a bit like keeping a zoo. You need a Hatchery to provide food for your minions, in the form of hordes of woebegone chickens.

Each type of monster also needs its own Lair to retreat to. (It turns out that a lot of these creatures don’t like each other very much.)

Neither a zoo nor a dungeon can run for long without a steady supply of filthy lucre.

The second scenario introduces the Training Room, where you can “level up” your monsters in exchange for gold.

The third scenario introduces the Library, where you can research spells with which to smite your enemies (or your minions). The campaign continues in this vein, layering on the complexity piece by piece.



When he looks back upon his career, Peter Molyneux tends to be a harsh critic of his own games. Dungeon Keeper is no exception: “It had a lot of things wrong with it. Too many icons. Too many game mechanics that were just wrong. It ended up being too dependent on little bits that were supposed to be there as jokes. In the end, I didn’t feel as proud about it as I had hoped.”

Very few people have agreed with this assessment. In its heyday, Dungeon Keeper enjoyed the best reviews of any Bullfrog game in years, outdoing even Theme Hospital in that respect. (Combined, the two titles created a real if fairly brief-lived “Bullfrog is back!” frisson.) Computer Gaming World called Dungeon Keeper “a damned fine creation. Its utter uniqueness and sense of style alone are worth the price, especially in these days of recycled inspiration. It’s a true gamer’s game — tremendously deep, demanding, and open to exploration.” GameSpot deemed Dungeon Keeper “among the best games released so far this year, and any fan of real-time strategy or classic fantasy role-playing games should run right out and buy this game. Hopefully, this is the new face of Bullfrog…”

Sales were solid, although not quite as strong as the reviews — not to mention EA’s early expectations — might have led one to believe. The game’s Achilles heel, to whatever extent it had one, was a dated presentation, a byproduct of the long development cycle and the small development team. It was among the last slate of games to be targeted at MS-DOS rather than Windows, and its muddy, pixelated graphics, caked with enough brown sauce to recreate the Mona Lisa, looked to be of even lower resolution than they actually were. At a glance, Dungeon Keeper looked old and a bit dull, in a milieu obsessed with the new and shiny.  (Theme Hospital was another MS-DOS anachronism, but its brighter color palette and cleaner aesthetics left it looking a lot more welcoming.)

But if you can get beyond the visuals, Dungeon Keeper goes a long way toward living up to the brilliance of its central conceit. If the first half of its development cycle was one extended identity crisis, the creators more than figured out what identity their game should have by the time that all was said and done. Its every element, from the silkily malevolent voiceovers by the actor Richard Riding, who sounds like all of Shakespeare’s villains rolled into one, to the countless little sadistic touches, like the way you can slap your minions with your big old claw-like hand to get them working faster, serves to justify the marketing tagline of “Evil is Good.” Even if you’re someone like me who genuinely prefers to be the good guy in games, you can’t help but admire Dungeon Keeper’s absolute commitment to its premise. And for those who do like the idea of playing the dark side more than I do, this game is the perfect antidote to all of those CRPGs that claim to let you do so, only to force you to do the right thing in the end for the — horror of horrors! — wrong reason. (A whole Parisian salon worth of existentialist philosophers would like to have a word with those game designers about the real nature of Good and Evil…) There’s no such prevarication in Dungeon Keeper; your intentions and your deeds are in complete harmony.

For my part, I enjoyed the game more than I really expected to — in fact, more than any other Bullfrog game I’ve played in the course of writing these histories. It helped immensely that Dungeon Keeper marks the point where Bullfrog finally gave us a proper, bespoke campaign, complete with a modest but effective spine of story, which sees you corrupting a succession of goodie-goodie realms with sticky-sweet names like “Eversmile.” The first half in particular of the 20-scenario campaign is one of the best of this era of gaming. Unlike a lot of earlier Bullfrog games, which were content to throw you in at the deep end, Dungeon Keeper starts off with just a handful of elements, then gradually layers on the complexity scenario by scenario, introducing new room types, new monsters, and new spells in a way that feels fun rather than overwhelming. The game plays quickly enough, and the scenarios are varied enough, that having to start over and build a new dungeon from scratch each time feels tempting rather than punishing. You’re always thinking about how you can build the next one better, thinking about how you can integrate the new elements that are introduced into what you’ve already learned how to do. It’s enough to win over even a middle-aged skeptic like me, whose heart isn’t set all aflutter by the transgression of being Evil.

Unfortunately, the happy vibes came to a crashing halt when I hit the tenth scenario of the campaign. Here the game breaks with everything the previous nine scenarios have been painstakingly teaching you; suddenly it’s not about constructing an efficient and deadly dungeon, but about bum-rushing the domain of another dungeon keeper before he can do the same to you. This aberration might be acceptable, if the game clearly communicated to you that a dramatic change in tactics is needed. But instead of doing so, the introductory spiel actively misleads you into believing that this scenario should be approached the same way as the nine preceding ones. Even worse, if you fail to attack and kill the enemy quickly, he will soon make himself effectively invulnerable, leaving you stuck in a walking-dead situation; you can easily waste an hour or more before you realize it. Coming on the heels of so much good design, the scale of the design failure here is so enormous that I want to believe it’s some sort of technical mistake — surely nobody could have intended for the scenario to be like this, right? — but it’s hard for me to see how that could be the case either.

I did eventually figure out what the scenario wanted from me, but I was left feeling much the same as when I run into a really bad, unfair puzzle in an adventure game. At that point, the game has lost my trust, and it can never be regained. I played through a couple more scenarios — which, to be fair, returned to the old style that I had been enjoying — but somehow the magic was gone. I just wasn’t having fun anymore. So, I quit. Let this be a lesson to you, game designers: just like trust between two people in the real world, trust between a game and its player is slow and hard to build and terrifyingly quick and easy to destroy. For any of you readers who choose to play Dungeon Keeper — and there are still lots of good reasons to do so — I’d recommend that you go in forewarned and forearmed with a walkthrough or a cheat for the problem-child scenario.[2]When you hit the tenth scenario, you can skip over it by starting the game from the DOSBox command line with the additional parameter “/ level 11”.


The Dungeon Keeper story didn’t end with the original game. Late in 1997, Bullfrog and EA released a rather lazy expansion pack called The Deeper Dungeons, a collection of leftover scenarios that hadn’t made the cut the first time around, with no new campaign to connect them. Far more impressive is Dungeon Keeper 2, which arrived in the middle of 1999.

The team that made Dungeon Keeper 2 was mostly new, although a few old hands, among them programmer Jonty Barnes, did return to the fold. The lead designer this time was Sean Cooper, the father of Bullfrog’s earlier Syndicate. He remembers the project as “a shift from writing games without many plans to getting really organized about what we were going to build. It was about keeping everyone in full view of what we were all trying to do together. That’s common practice today, but it was one of the first times for us.”

Less an evolution of the first game’s systems than a straight-up remake with modernized graphics and interface, the sequel’s overall presentation is so improved that this doesn’t bother me a bit. What was murky and pixelated has become crisp and clear, without losing any of its malevolent style; Richard Riding has even returned to louche it up again as the velvet-tongued master of ceremonies. I only played about five scenarios into this 22-scenario campaign due to time pressures — being a digital antiquarian with a syllabus full of games to get through sometimes forces me to make hard choices about where I spend my supposed leisure time — but what I saw was an even better version of the first campaign. Plus, I’m given to understand that there are no aberrations here like the tenth scenario of that campaign. Some purists will tell you that the sequel lacks the first game’s “soul.” Personally, though, I’ll take the second game’s refinement over any such nebulous quality. If I was coming to Dungeon Keeper cold today, this is definitely where I would start.

But, whether due to a lack of soul or just because it was too much too soon of the same idiosyncratic concept, Dungeon Keeper 2 didn’t sell as well as its predecessor, and so the series ended here. Sadly, this was a running theme of Bullfrog’s post-Molyneux period, during which the games became more polished and conventionally “professional” but markedly less inventive, and didn’t always do that well in the marketplace either. “I felt the heart of the place was missing,” says Mark Healey. “Bullfrog was no longer a creative haven for me. It felt more like a chicken factory.” And the chickens kept laying eggs. Populous: The Beginning, the big game for 1998, disappointed commercially, as did Dungeon Keeper 2 the following year. The same year’s Theme Park World[3]in North America, Theme Park World was dubbed Sim Theme Park in a dubious attempt to conjoin Bullfrog’s legacy with that of Maxis of “Sim Everything” fame, another studio EA had recently scarfed up. did better, but had much of its thunder stolen by Rollercoaster Tycoon, an era-defining juggernaut which had been partially inspired by Bullfrog’s first Theme Park.

Early in 2000, EA closed Bullfrog’s Guildford offices, moving most of the staff into the mother ship’s sprawling new office complex in the London suburb of Chertsey, which lay only ten miles away. The Bullfrog brand was gradually phased out after that. Old games studios never die; they just fade away.

Setting Dungeon Keeper aside as a partial exception, I’ve made no secret of the fact that the actual artifacts of Bullfrog’s games have tended to strike me less positively than their modern reputation might suggest they should, that I consider the studio to have been better at blue-sky innovation than execution on the screen. Yet it cannot be denied that Bullfrog laid down a string of bold new templates that are still being followed today. So, credit where it’s due. Bullfrog’s place in gaming history is secure. It seems only fitting that Peter Molyneux have the last word on the studio that he co-founded and defined, whose ethic has to a large extent continued to guide him through his restlessly ambitious, controversy-fraught post-millennial career in games.

It [was] an amazing, joyful roller coaster which I wouldn’t have traded for anything. It was an obsession. We were just obsessed with doing stuff that other people hadn’t done before. It was working very late and very hard and smoking lots of cigarettes and eating lots of pizza and bringing together some crazy insane people. We just had the reason to do stuff. There wasn’t a lot of process involved. We didn’t have producers. There were some brutally tough times there, but it was amazing.



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 book Bullfrog’s Official Guide to Dungeon Keeper by Melissa Tyler and Shin Kanaoya; PC Zone of May 1996 and May 2000; Retro Gamer 43, 71, 104, 110, 113, 130, 143, and 268; Computer Gaming World of December 1995, August 1997, October 1997, and October 1999; Computer Games Strategy Plus of November 1995.

Online sources include Peter Molyneux’s brief-lived personal blog, “Peter Molyneux: A fallen god of game design seeking one more chance” by Tom Phillips at EuroGamerGameSpot’s vintage review of Dungeon Keeper, and “Legends of Game Design: Peter Molyneux” by Rob Dulin at the old GameSpot.

Where to Get Them: Theme HospitalDungeon Keeper Gold, and Dungeon Keeper 2 are all available as digital purchases at GOG.com.

Footnotes

Footnotes
1 Some details of the arrangement — namely, the financial side — remain unclear. Molyneux has claimed in a few places that he paid for the rest of Dungeon Keeper’s development out of his own pocket in addition to providing the office space, but he is not always a completely reliable witness about such things, and I haven’t seen this claim corroborated anywhere else.
2 When you hit the tenth scenario, you can skip over it by starting the game from the DOSBox command line with the additional parameter “/ level 11”.
3 in North America, Theme Park World was dubbed Sim Theme Park in a dubious attempt to conjoin Bullfrog’s legacy with that of Maxis of “Sim Everything” fame, another studio EA had recently scarfed up.

:: CASA ::

CASA Update - 35 new game entries, 75 new solutions, 74 new maps, 8 new hints

♦ Busy spending your time panning for text adventure gold? Here's a quick summary of all the hints, maps and solutions that our regular posse of tipsters have sent in during the past couple of months... Contributors: iamaran, ASchultz, J-_-K, wilko0070, nimusi, FredB74, sequornico, wesp5, Strident, Oloturia, boldir, Garry, OVL, Exemptus, Canalboy, Sudders, benkid77, Bieno, Ingerson, Duffadash, A

Image
Busy spending your time panning for text adventure gold? Here's a quick summary of all the hints, maps and solutions that our regular posse of tipsters have sent in during the past couple of months...

Contributors: iamaran, ASchultz, J-_-K, wilko0070, nimusi, FredB74, sequornico, wesp5, Strident, Oloturia, boldir, Garry, OVL, Exemptus, Canalboy, Sudders, benkid77, Bieno, Ingerson, Duffadash, Alex

Thursday, 14. August 2025

Renga in Blue

Robots on Terminus IV: Somehow, Humanity Survived

(Previous posts here.) Thanks to Jeremy and Matt W. in the comments nudging a bit more at the game, humanity has been saved. I had made my way to a computer room which needed blowing up, and already had an escape vehicle in place, but actually placing the explosive was eluding me. The magic word […]

(Previous posts here.)

Thanks to Jeremy and Matt W. in the comments nudging a bit more at the game, humanity has been saved.

Placement of backspace and space on the ZX-81 keyboard specifically for this game.

I had made my way to a computer room which needed blowing up, and already had an escape vehicle in place, but actually placing the explosive was eluding me. The magic word for step one was PRIME.

This automatically combines the detonator and explosive together, and if the explosive is now dropped, it blows up.

As I theorized, TURN DIAL does now work (previously just saying YOU CANT), but it’s still a serious pain, because it asks

TO WHICH SETTING???

and I flailed for quite here. I was in the middle of my next post (which involves the same emulator that this game is on) and inspiration occurred to me:

I had actually tried THREE SETTING first, thinking about the unused THREAD verb that Matt mentioned — it’s a four-word parser, so it could have just been THREE as a verb — but that didn’t work. I immediately followed up with swapping the order to SETTING THREE.

PLACE EXPLOSIVE will now set everything to blow up.

I booked it to the escape craft…

…then pushed (I mean, pressed) the button to indicate my mission was over, and failed.

The explosive takes too long to blow up. This explains why the dial was needed in the first place! At setting THREE it is possible to walk your way to the exit, but I had pre-emptively solved what I think may have been intended as the central puzzle: make the timer tighter (TWO) and you can still escape by intermediate ship (not by walking!) and it will blow up before the patrol robots discover it.

Without the parser issues this is a short and well-designed vignette. You’re on a mission you’re actually well equipped to start, there’s some brief visit to a city which is minimal but vivid, you find the robot fortress and need to experiment to use their elevator, there’s some robot blasting with a LASER GUN, and the final part where you need to set a quicker timer to avoid the bomb being discovered (meaning you need a quicker exit) is genuinely satisfying. The problem is the “without the parser” exception, which dragged the game out to a week.

I have an idea what the CODEWORD is referring to: it might be used for a contest when the game was released. Computer Input from November 1983 mentions a contest for one of the other Antarctic Software games…

…so I could see an entry consisting of giving the codeword.

This game did not make much an appearance outside New Zealand; the only reference I’ve seen otherwise is from a truly puzzling mention in the UK Computer and Video Games magazine, August 1984. This comes from the column (common amongst magazines at the time) with people asking for help with their adventure game troubles.

The surreal cover is due to the adventure game based on the TV show Dallas.

New Zealand reader, Colin Foster, from Levin, is playing Antarctic Computing’s Robots on Terminus IV. He says it makes Espionage Island look simple and he can’t unseal the door in the spaceship, nor go near the pub. The fruit machine doesn’t seem to do much and he’s certain he has to go down the well, but can’t. Quite a daunting list, Colin, and unfortunately about а game I have never heard of. Are there any ZХ81 users out there who can cast light on these problems?

How did the door get sealed in the first place? Why would they have trouble entering the pub? Why would you be putting the fruit machine down the well (which only served as a landmark to help with mapmaking)? How did they pick up the fruit machine in the first place? If intended as a guerilla ad of sorts, why would it be in a UK magazine (where they would not have been able to get a hold of the game in the first place)?

ADD: Combining comments from ScienceBall and Gus Brasil, it appears the letter writer is not talking about leaving the ship but the armory. If you don’t get the armory open there’s no laser gun, and in order to enter the bar safely you need the gun (I never tried this) meaning no coin so no lever from the fruit machine. The author mentions the fruit machine and the well together but they’re just two separate dilemmas. Note he mentions Espionage Island (Arctic Adventure D) but Artic Adventure C (Ship of Doom) has a very similar puzzle to the armory one (POINT to use a device).

Coming up: The curious tale of how Clive Sinclair managed to kickstart the low-cost personal computer market in Denmark by a combination of charisma and accident.