ZZT Cartography

Generated atlases of ZZT worlds

Authored By: Casey Kolderup
Published: Aug 8, 2022
RSS icon

This article was originally published on https://motd.co/2012/12/zzt-cartography/. It has been reposted to the Museum with permission from author Casey Kolderup. Minor changes to game names have been made along with adding links to each game as hosted on the Museum of ZZT.

You can find more of Casey's works at: https://casey.kolderup.org/

— Dr. Dos

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.


Ultimate Adventure: Part 2: The Journey to Ang-Mar


Acecaves


Battle Tech 2: Alienated


The Adventure of Bertil


Bloodlines


Boof Remix


Banana Quest


Legend of Brandonia


Carrot War


Castle of ZZT


Code Red


Die Anna


Fantasy World Dizzy


Dungeons of ZZT


Dragon Woods


Gem Hunter


Gem Hunter Special Edition


The Guardian


Invasion ZZT


Search for the Floating Isle


Karateka


Landing


L.O.M.E.


nightplanet


Neesboy’s Fantastic Adventure


Nightmare ZZT


Piromaze


Plankton: Undersea Adventure


The Lost Pyramid


Into the Maelstrom Part II: Hardpoint on Remulo III


Smash or Be Smashed


Shades of Gray


Starbase ZZT


Temple of Souls


Unlimited Maze Works


Winter


Top of Page
Article directory
Main page