motd.co: ZZT Cartography
Last year my friend Allison learned a bit about a Python library called ctypes, which allows you to use compiled dynamic libraries from within Python scripts, making calls to the functions in those libraries written originally in C or C++. Allison showed me how she had managed to get this working with a compiled copy of zztlib2, a library by Kevin Vance made for the purposes of interpreting the world file format for the ZZT game creation system (which we had both used during its heyday). By using this, she was able to read information about worlds, extract text from their various components, and even draw the “boards” which made up each screen of a game by dumping them to an RGBA file format and then converting them using the imagemagick toolchain into a regular image format such as PNG.
Intrigued by the sight of the individual boards as a set of images, it occurred to me that the ZZT boards had properties that could be set that told the interpreter that if the player tried to move their character off of a given side of the screen, what board they should be moved to. By doing this, you could create a 2D plane of connected boards— a map— and most games used this to some extent.
There are no strict rules about how you set these properties. If I told ZZT that going east from Board A led to Board B, I could still tell it that going west from Board B went to Board C. However, many games tried to create actual coherent maps that made sense when drawn out in one big grid, and I thought that maybe I could actually build a data model out of that information that would allow me to automatically generate larger images that tiled the boards appropriately.
And that’s exactly what I did. The algorithm is naïve; it doesn’t work well for a number of games that “cheat” and create strange distortions in the 2D grid nor can it handle complicated cases like art (such as a staircase) implying a different 3D plane that overlaps with the rest of the world’s plane. That said, it was pretty easy to just run the script on every ZZT game available on the z2 archive, filter it down to just the maps that ended up being larger than a 2×2 grid, and then manually search through, looking for interesting maps.
So I present to you my findings; the most interesting (as determined arbitrarily by me) 2D maps created from ZZT games throughout its history. Make sure to click through for the full detail; a couple of them in particular are almost stunningly huge.