
Fredrik Ramsberg has announced the immediate release of the latest version of the PunyInform library for retro adventure programming. PunyInform is a library written in Inform 6 which allows authors to create text adventure games / interactive fiction using the Z-machine virtual machine, to be played on 8-bit computers as well as newer platforms. It provides a parser, implementations of common verbs, as well as a framework for writing text adventures. According to the release notes, the following items are of note or have been changed:
Important to note when upgrading:
- If you replace the message MSG_PARSER_DONT_UNDERSTAND_WORD, you should take a look at this message in messages.h now, and update your definition accordingly. (If
oops_unfixedis non-zero, you may not call _PrintUnknownWord, but must provide a generic message, not mentioning the word that wasn’t understood. This only happens if the player has typed “oops “, so the player will know which word it’s about anyway.)
New/changed functionality:
- Message MSG_PARSER_DONT_UNDERSTAND_WORD has been altered, as part of a fix for the issue that when the player types “oops xxx” and ‘xxx’ is another unrecognized word, the parser would repeat that the original non-recognized word wasn’t understood. (Issue #151)
Optimizations:
- Made automatic assignment of reactive attribute faster, for games that don’t use custom common properties for a lot of objects.
- Optimized _ParseNounPhrase and _IsSentenceDivider routines a little.
Bugfixes:
- Fixed so a full stop and ‘then’ always separate commands (unlike comma and ‘and’ which can be used to separate commands OR objects in a list). (Issue #157)
- Fixed: Debug verb ‘routines’ didn’t print anything in z5 when calling GamePreRoutine and GamePostRoutine.
- Updated tests/runtests.rb to accept Frotz not always appending “.qzl” to save file names.
- Changed format of routine names printed by debug verb ‘routines’ to match Inform 6 output (which is used for methods being called in z5 in PunyInform as well), e.g. from (small rock).before() to [ “small rock”.before() ].
You can download the latest version of the PunyInform library from the GitHub page at:
https://github.com/johanberntsson/PunyInform














