Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Another great tool for interactive fiction is the Inform7 language[0]. It's very close to natural language, there are many good examples[1] online and I found the documentation[2] easy to read.

[0] http://inform7.com/

[1] https://i7-examples.github.io/Bronze/source.html

[2] http://inform7.com/doc/



Inform6 is better if you want something closer to OOP/old-kind programming.

Also, if you want to create a non-English game i7 gets messy fast.


Personally if I would want to write something I'd probably just write it in C++. But a friend of mine who's an English teacher had to create an interactive story with Inform7 during his education. I was really impressed how simple it seemed for someone with no programming experience.


Although the core library is not updated anymore, I find TADS 3 to be the superior language for offline interactive fiction. It's the most technical language by far, but that's why it's also the most feature rich (and for someone with a programming background, probably also the most intuitive). I'm still regularly amazed at what's baked into the standard library, that would be an absolute pain, or even outright impossible to do with other authoring systems.

http://www.tads.org/


C++ would suck for that (and any other language) as Inform6 gives you an object table and a parser for free with lots of object types such as rooms, containers, verbs, cardinal directions... already defined in the standard English library.

And the Z machine games can be run everywhere.

Declaring some room with i6 it's literally four lines of code:

The object name and the internal one, the description upon entering it, a light attribute, and a semicolon.


I recently wrote a text-based adventure game in C, which I then ported to Z80 assembly language. My goal was to write a simple game that could run on a CP/M system.

Using C wasn't too painful, but I agree that using something else would have been more straightforward. I've ended up in a situation where the user can type "USE TORCH", but really they want to type "LIGHT TORCH". So I added that as a synonym, but once you do that in a few different places you end up accidentally supporting commands such as:

LIGHT THE BOOK READ THE TORCH

They work, but they're utterly bogus from a logical point of view.

That said I'm pleased I managed to get it working at all, and my next step will be writing a third version using an infocom compiler & interpreter.


Try Puny Inform, it may be a Frotz port for CP/M 2.2.

https://vetusware.com/download/Infocom%20CPM%20Interpreters%...

You can use infocpm. Just hexedit the COM file to match the DAT file (rename game.z3 to game.DAT).

For example, if the OG interpreter works with zork1.dat, hexedit the file and replace zork1 with "game" so it matches "game.dat".


From dm4.pdf, the advanced manual on inform6:

  Object  -> "flashlight"
    with  name 'flashlight' 'torch',
          description "It's a battery-powered flashlight, of the sort that switches on and off.",
          after [;
            SwitchOn:  give self light;
            SwitchOff: give self ~light;
          ],
    has   switchable ~on ~light;


If you really want OOP, take a look at TADS 3 if you haven't already. Made the switch from Inform 6, and couldn't be happier.

http://www.tads.org/


I absolutely agree that the Inform languages are great for creating interactive fiction, hence why I originally linked it.

But I have created text based adventures (usually with some RPG-style combat) in C++ a few times for fun and it can be done in a fairly clean and simple way.


> And the Z machine games can be run everywhere.

Even on mobile devices!

Which IF programs support Z machine output?


As far as I'm aware, the only modern compiler that supports Z-machine output is Inform 6. Maybe Inform 7 does as well, but that segment of the IF community has basically moved on to the Glulx virtual machine, which Andrew Plotkin created as a 32-bit spiritual successor to the Z-machine.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: