PunyInform v3.6 released

We just released PunyInform v1.0, a library for writing interactive fiction or text adventures in Inform 6, with focus on making the games fast enough and small enough to be enjoyed on 8-bit platforms like the Commodore 64. Games are compiled to Z-code, the format used by Infocom, and more specifically they can be compiled to z3, z5, z7 or z8 format. This allows the games to be played on anything from an early eighties home computer to the modern computer of your choice running Windows, Mac OS, Linux or pretty much any other operating system.

The main github page: GitHub - johanberntsson/PunyInform: A fast and compact library for writing text adventure games for the Z-machine running on 8-bit computers as well as other platforms.

The manual (also included as PDF with the library): Manual · johanberntsson/PunyInform Wiki · GitHub

The download page: Releases · johanberntsson/PunyInform · GitHub

PunyInform behaves very much like the standard Inform 6 library. Some features have been dropped and others have been altered to gain speed and decrease code size. Also, some features are optional, so you can choose to enable or disable them depending on the game. The Designer’s Manual, 4th Edition (DM4) is still recommended reading, and the PunyInform manual lists everything that is different from the standard library.

While the smallest possible Z-code version 5 game using the standard library takes up 57.8 KB, the same game compiled with PunyInform takes up only 23 KB. With abbreviations enabled, the PunyInform version shrinks to 22.2 KB. PunyInform comes with a standard set of abbreviations which is good for shrinking the strings used by the library, but of course you can also supply your own abbreviations.

Additionally, you can compile games to Z-code version 3. This allows the minimal game size to go down to 21.2 KB, with abbreviations. With the standard library, it’s not possible to compile a Z-code version 3 game.

The most notable feature which isn’t present in PunyInform is the handling of identical objects - all objects need to be distinguishable from each other. Having a red book and a green book isn’t a problem, but having two green books is. Also, when compiling to Z-code version 3, you can’t use dynamic object creation or destruction.

PunyInform comes with a few handy extensions. Converting extensions written for the standard library should be quite straight-forward as well, in most cases. Many extensions will work out-of-the-box.

PunyInform comes with a fully working demo game called Library of Horror, as well as a minimal game template which can be used as a starting point for building your own game. There is also an implementation of Cloak of Darkness, which is compiled with the standard library if you compile it to a z8 file, but with PunyInform if you compile it to z3 or z5.

PunyInform requires the recently released Inform v6.34 compiler, which can be found at Index: if-archive/infocom/compilers/inform6 .

To compile a game, unpack the files, place the Inform 6 compiler binary in the base directory, and type i.e. “inform6 +lib -v3 -s -e library_of_horror.inf” (type “inform6 -h2” for an explanation of all commandline switches).


So glad to see Puny is finally out. Kudos to the team, what an outstanding, contemporary achievement :purple_heart::pray:


PunyInform v1.1 is now out: https://github.com/johanberntsson/PunyInform/releases/tag/v1_1

It has some critical bug fixes, so please update if you’re using PunyInform.

Looks like we will have new bug-fix releases coming out quite often now. Not sure if I should post about each release in a separate thread? I’m sticking to this thread for now.


PunyInform v1.2 has been released. Go to https://github.com/johanberntsson/PunyInform/releases to download it.

It has some important bug fixes, and TAKE ALL works better than before.

Also, I have written two articles on PunyInform for Vintage Is the New Old:

The first article is an introduction to PunyInform, to raise awareness of the library and what it’s good for.

The second article is a step-by-step guide on setting up your programming environment for PunyInform development. Thought it could be useful to some people here.


And we released v1.2.1 to fix a single issue: The version number for PunyInform v1.2 was printed as v1.1 in games. Could cause a lot of confusion.

1 Like

I created a first video tutorial for anyone wanting to try developing a text adventure using PunyInform: https://www.youtube.com/watch?v=oe-kxdHw4ec . This video is 25 minutes long and doesn’t require any prior knowledge of PunyInform or Inform 6.

Before watching the video, you probably want to set up a programming environment for PunyInform. This is explained at https://vintageisthenewold.com/punyinform-installing-the-tools-and-compiling-a-game/

If there is any interest in this tutorial, I will make another one, continuing where this ends.


Outstanding work.

Thank you!


Really liking how accessible you are making Puny.


PunyInform v1.3 has now been released.


And v1.4 is out.


Which official interpreter(s) were broken on that “support for printing to memory” bit?

Not sure. Got a report from Stefan Vogt on it. The Apple II interpreter would crash on launch (the library started by printing some strings to memory right at the start, before anything else was printed.), and he said “many many” of the Infocom interpreters printed the text to screen instead (and I could tell the length of the strings were not written to memory as they should have been).

Can anyone think of anything that should be done with the inform6unix package to make it work better with PunyInform? I’m not talking about subsuming it into the package, just setup stuff.

I can’t think of anything that would be beneficial to PunyInform users.

The following Infocom terps: Amstrad CPC, Atari 8-bit and Apple II (but the Apple II terps have a more issues, except the non-interleaved version E, which is the only one that works as expected and thus is recommended).

And also non-Infocom terps had problems with printing to memory, for example Edilbert‘s Bit Shifter interpreters (C64, Plus/4, PET and VIC20), at least the special versions he created for us at Puddle Software.

I think Edilbert’s terps are heavily based on some Infocom interpreter, right?

I don’t know to be honest. Edilbert says it is his own creation and he uses his own assembler BSA to compile his interpreter but I am not skilled enough to say how much Infocom there might be in it. He recently published the Mega65 version of BSZ so one could have a look.

1 Like

And PunyInform v1.5 is out. Faster, with less bugs, and with new cool features.


Six weekends in a row, we have released new versions of PunyInform. This weekend, we just didn’t think we had important enough updates to warrant a new version just yet.

So I’m just writing to tell you that a new version is NOT available…

But keep testing, and keep sending us bug reports and feature requests!


Thanks to David Griffith for updating the Inform 6.34 + library 6/12 package for Linux, which has slipped into place at https://www.ifarchive.org/indexes/if-archive/infocom/compilers/inform6/source/

The old version of the package, which contained a pre-release version of Inform 6.34 from 2018 caused some headache for aspiring PunyInform users, since it couldn’t compile PunyInform code.

1 Like