Infidel goes wild

blog.zarfhome.com

177 points by tobr 2 days ago


kqr - 15 hours ago

Someone commented that it's fun to see Zarf is still around, so I want to take the opportunity to say that the entire community around text adventures is likewise still thriving, most visibly on the IntFiction.org forums.

People seem to look at text adventures as relics of a specific era, and it's true that it's hard to make money off of them these days, but there are several high-quality releases per year, and the quality seems to only go up. These games are often playable for free, because they're released for competitions that stipulate the submission must be free.

-----

It can be a little hard to get into text adventures, because the parser interface is designed to accept inputs according to a specific convention (all three of "cut tapestry", "cut the tapestry", "look behind tapestry. cut it." would work, but it's not a guarantee "slice tapestry" would, and almost never would "cut hanging fabric" work).

This convention must be learned. Despite the marketing in the 1980's, it does not come naturally to people. Learning that convention means forcing yourself through a few games. But once you have learned that convention, an ocean of games open up to be played, many of them very enjoyable. I highly recommend taking the time to grind through a few games to get familiar with the convention.

I recommend not starting with the old classics because they were in part made to be frustrating and difficult and played over a long time. Instead, look at modern text adventures that follow more recent advances in game design. A good source is the Interactive Fiction Database, with e.g. a search like this: https://ifdb.org/search?searchfor=tag%3AParser+published%3A2...

-----

Text adventures are also a nice way to dip one's toes into game development. They force the developer to think about game design without having to spend time or money on graphics or music.

We are spoiled choice when it comes to development systems for text adventures these days. Most popular development systems consist of two parts: programming language, and separately, standard library. The library half contains generic definitions of things like rooms, scenery items that cannot be picked up, clothing that can be worn, animals that can be interacted with but not talked to, etc. (The exception is perhaps Inform 7, which tightly couples its compiler to the standard library. In the case of the others, one is fairly free to swap out the standard library for anything else.)

Examples include:

- Inform 7 lets developers write code in a weird subset of English. Some people swear by it, but people who come from programming backgrounds sometimes find it hard to learn. It does have a great IDE though, with automapping, an index of all objects, a "Skein" that records a game tree and lets one play it back and check for inconsistencies, etc.

- Inform 6 is a completely different language, reading more like object-oriented code. There is an alternative standard library called PunyInform which lets you make tiny games that run well on old hardware. (But which can also be used as a creative constraint.) It doesn't have the same level of tooling, but it's been around for a long time and is well supported on many platforms. The compiler is a simple, dependency-free C program one runs `cc -O2 -o inform *.c` to compile.

- Dialog is a newer language and library for making text adventures that's stable, but receives frequent updates still. It's inspired by the rules-based approach of Inform 7, but uses a more consistent, programmer-friendly syntax. It's got a kick-ass debugger that reloads definitions live and supports a highly iterative development cycle. There's also a recent, partly vibe-coded "Dialog Tool" made for it that gives it an Inform 7-like Skein functionality.

Then there are others I haven't tried, like TADS, which, like Inform 6, is closer to traditional programming. The original Infocom games were written in Lisp macros that got translated into the Lisp-like ZIL language. These days, we have an extremely well-documented open source implementation of ZIL, too.

In case anyone is curious, I have written two articles introducing Inform 6 and Dialog respectively as general programming languages outside of their use for text adventures. (But this is not a recommended use case. Just a fun way to learn where the language ends and the standard library picks up.)

- https://entropicthoughts.com/advent-of-code-on-z-machine

- https://entropicthoughts.com/advent-of-code-in-dialog

gertlex - 21 hours ago

I've been gradually reading the Digital Antiquarian's series of posts [0] about history of computer games. Many of these feature links to try out these games (I haven't yet gotten to games that were released after I was born)... with user setup required (take this disk image, run it in a Apple II emulator, etc). The history so far has heavily featured text based simple parser adventure games.

This might be the way in which I finally try one of these games out. Though, I'm betting my attention won't last long.

[0] https://www.filfre.net/the-digital-antiquarian-e-book-librar...

1potato - 3 hours ago

To anyone who hasn't played text adventures before, I highly recommend giving them a try because there's nothing else like them.

Everybody has their own recommended starting points, but here are a few of mine for anyone who might be interested.

9:05

https://ifdb.org/viewgame?id=qzftg3j8nh5f34i2

Can complete in a few minutes. Illustrative of how text adventures can do things that other types of games often don’t.

Violet

https://ifdb.org/viewgame?id=4glrrfh7wrp9zz7b

Fun and logical puzzles. Lovable narrator. Can complete in an hour or two.

Shade

https://ifdb.org/viewgame?id=hsfc7fnl40k4a30q

Made by Zarf / Andrew Plotkin, the guy linked to above. Can complete in 30-60 minutes.

Counterfeit Monkey

https://ifdb.org/viewgame?id=aearuuxv83plclpl

As good as any Infocom game — maybe even better. Great puzzle mechanic. Engaging story. Easy to get around. Absolutely everything you can think of to do has an implemented response. Can complete in maybe two or three evenings. This is my favorite text adventure.

Photopia

https://ifdb.org/viewgame?id=ju778uv5xaswnlpl

I wouldn’t call this one of my favorites, but many people consider it one of the most important works of modern IF. It does have one moment that’s really, really cool. The story is a downer.

kwertyoowiyop - 21 hours ago

Let every 1980s game programmer who never shipped a memory-trashing bug raise their hand.

I thought so! :-)

egeozcan - 15 hours ago

I don't share that opinion but many people believe that LLMs are the new compilers. This make me wonder if there will ever be a time that people get surprised to see LLMs generating wrong code.

Natural language is much more vague than programming languages (understatement of the year), even C, and LLMs are not deterministic. Perhaps you can solve the second (read: I don't know what I'm talking about), but to solve the first one, I think one needs to re-invent programming languages, which would be extremely funny if it really ends up happening :)

ndc - 16 hours ago

I used to frequent rec.arts.int-fiction and rec.games.int-fiction. There Andrew / Zarf was a regular. Looks like now he is still active in interactive fiction. Salute to him!

sehugg - 12 hours ago

I once built a basic fuzzer for the Z-machine and tried it on Mini-Zork (a promotional game). It found at least one bug. I wonder if a smarter fuzzer could find the Infidel bug.

Article: https://8bitworkshop.com/docs/posts/2020/fuzzing-the-z-machi...

Waterluvian - 21 hours ago

> As a C programmer, I am legally required to regard memory corruption as the worst of all possible sins.

Self-flagellation considered harmful.

jdw64 - a day ago

I want to write technically interesting posts like this too, but I don't know how.

My writing is mostly just tracking various internet posts to trace history. How do you create interesting posts based on personal experience like this?

- 12 hours ago
[deleted]
ironqcold - a day ago

Wow. That was interesting.