What's missing in PunyInform?

Johan and I, who are developing PunyInform, can see that several PunyInform games have been released and several more are in progress, but we don’t get very many suggestions for new features.

If you’ve kept an eye on PunyInform, you already know that the goal of the library is to allow authors to create compact and fast Z-code games which can be played on 8-bit computers. Programming a game with PunyInform is very similar to programming with the Inform 6 standard library, but some features of the standard library are missing and some are optional. PunyInform also offers a few features which the standard library doesn’t, and some features are present in both libraries but work differently (most notably directions).

An absolutely minimal PunyInform game is about 22.5 KB in size. That’s about 60% smaller than a minimal game using the standard library. Of course, it wouldn’t be possible to make the code so much smaller and still support all the nice things the standard library provides. What we’re aiming to do is drop things that are bulky and not so essential, and to make things that are really nice to have for some types of games but not all, optional.

Still, we are open to suggestions on what to add to the library. If you’ve written, or started to write, a game with PunyInform, and you’ve found that you had to add features which you think would have been better if they were part of the library, let us know. And we’re thinking that maybe it’s even better to have an open thread for it here, so others can react to the suggestions that pop up.

Things can be added to the library in three ways:

  • Core library - it’s always enabled
  • Optional - the author needs to define a constant to enable it
  • Extension - the author needs to include a file to enable it

And of course, some things we get suggestions for aren’t added at all.


My suggestion isn’t precisely about punyInform, but I think that the 10-in-1 scenery and the flag punyinform extension deserve to be ported to the standard library as contribuition (I prefer this term instead of extension for Inform 6)

Best regards from Italy,
dott. Piergiorgio.

1 Like

Thanks for the suggestion. This extension already works with regular Inform. There may be some debug code in it which could be dropped for regular Inform.

Also, there’s an I6 extension called scenic.h which basically does the same thing: http://mirror.ifarchive.org/if-archive/infocom/compilers/inform6/library/contributions/scenic.h

Believe it or not, we hadn’t looked at scenic.h before implementing ext_cheap_scenery.h, but they are eerily similar. :slight_smile:

And ext_flags.h for PunyInform is only a slightly reworked version of newflags.h which I made for I6 (based on Adam Cadre’s flags.h).


Actually, there’s one more way we can add new concepts - as code examples. When we think of a feature which we think some authors miss in the library, but we think most games won’t need it, we may add a sample game in the “howto” folder, showing how this concept might be implemented in a PunyInform game. As an example, we have code that shows how you can implement switchable player characters.


I’ve been pondering how to best allow Punyinform and the Standard Library to coexist on the same machine – perhaps adding it to the Inform6 for Unix package.

1 Like

I was able to shoehorn it into my RPi a while back. I could call either Standard I6 Lib or Punyinform. I am pretty sure I used a batch file. I have been experimenting with the beta 64 bit Raspi OS recently and don’t have it working any longer.

In any case, you need to specify which library folder(s) to use when compiling, since there are files with the same name in both libraries.

When compiling testbench.inf (included in the PunyInform distribution) with the standard library, it still gets the PunyInform extensions from the PunyInform folder, so it looks something like:

inform6 -v8s +inform6lib-6.12.4,lib testbench

PunyInform is a lot more stable now than a few months ago, but we still occasionally make changes which authors need to be aware of when upgrading, so an author should definitely read the release notes when updating to a new version of PunyInform. For this reason, it may be too early to include it in another distribution. Or maybe do it with a word of caution.

1 Like

Thanks for the tip up ! I’ll look up on these pair of contribs… (I generally give “experimenting on library contribs/extensions” low priority, with my already slow pace, if I start fooling around with contribs/extensions, my wip will be never relaesed…)

Best regards from Italy,
dott. Piergiorgio.

We’re starting to think that maybe we’re done with PunyInform now. We’ll keep fixing bugs of course, and maybe we’ll add some interesting extensions over time, but the base library may not see any more major changes. Also, I’ll try to add to the tutorials.

We started working on PunyInform 26 months ago, and we’ve had two longer periods of time with almost no activity for a total of ~10 months, so I’d say we worked on PunyInform for 16 months.