The Z-Machine Preservation Project
About
The Z-Machine Preservation Project (ZMPP) is a modern implementation of the Z-machine in Java. It is completely written from scratch using Java 5 to provide an architecture that is easy to understand, maintain and extend.
The goal is to provide an interpreter implementation that is standard compliant and offers the possibility to play interactive fiction on many platforms without recompiling the source code.
The current implementation supports the following features:
- all story file versions supported
- Saves and restores in Quetzal 1.4 format (also in applet mode)
- Supports the Blorb standard (graphics, AIFF sound, metadata)
- Reads traditional Z-code files and Inform 7 release files
- runs standalone and applet
- different font styles, accents, unicode
- color support (Frotz style)
- timed input and preinitialized input
- command history
- multiple undo
- customizable text rendering (color, size, antialias)
- -> Further information
- -> Comparison with ZPlet
Download current version
The current version is 1.02, it can be downloaded from the Sourceforge project page or the Interactive Fiction Archive.
Games
As a demonstration, I setup a list of games that are representative showing both the nature of IF and the applet features of ZMPP:
Screenshot
ZMPP on other websites
- Fredrik Ramsberg uses ZMPP for swedish games (using his Inform library Swedish.h) on his website. He also helped finding several bugs in the interpreter.
- Adam Cadre has made a link to his "9:05" to the list of games on the ZMPP project page. This also contains several of his games.
- Dan Sanderson has an entry in his Blog about ZMPP.
- The website fiction-fr offers interactive fiction playable both with Zplet and ZMPP.
- Andrew Baio wrote a great blog entry about an unreleased Infocom game using ZMPP to run it on his blog
Acknowledgements
Over its life span, ZMPP has more and more become a project of the
Interactive Fiction community and I am very happy about it, a lot of
ideas for improvement are now coming from its users.
People, I want to explicitly thank here (in alphabetical order):
- An Ni for testing and suggestions to improve support for Japanese
- Eric Forgeot for the french translation, testing and bug reports,
JNLP implementation and the redesign of the homepage
- Fredrik Ramsberg for bug reports and improvement suggestions, ZMPP's
support for accented latin languages is mainly due to his testing and
sugeestions
- Pichuneke for testing and improvement suggestions for Spanish
- Sandy McArthur for motivating the ongoing development to make the ZMPP
core more reusable