Aubrey's aimless blog

ZZT is back!

It's been over a month since I've made a post, mainly because I'm a bit of a lamo, but I've had some interesting things happen.

So my birthday happened, and guess what? One of my oldest friends popped by to see me at work and dropped off a present: a book about ZZT, its history, and the community that built up around it. Remembering all the fun times we had growing up playing this stupid game, finding the games others created to play within the ZZT engine, and even making our own (probably awful!) games in its board editor. I was inspired... first, to play the game again.

So I popped open DOSBox and gave it a spin! It was intense, seeing all of these old games I used to play. I remember falling head over heels for this game and the possibilities it opened up for me in the gaming world, as well as its subtle introduction into programming. For a loner of a 12 year old girl, it was amazing to have a way to create a world and make the little objects/people do what you tell them, and have it be fun to play the resulting game. ZZT has a built-in programming language for its objects, called ZZT-OOP. It's pretty darn rudimentary, but it's still super neato.

I downloaded a bunch of the games the book recommended, as well as many of my old favorites, from the z2 archive. Pretty quickly I got super down, because the game kept crashing with a runtime error every time I tried to load a world (or even a board within a world) that had too much going on at once. I managed to make the game last a little longer by upping the CPU cycles and frameskip for DOSBox, but it still crashed anyway, and I couldn't find anyone online having this same issue.

Then I tried installing a virtual machine running FreeDOS, but the errors persisted. I thought maybe it was a memory issue, or maybe it needed to run on metal, so I repartitioned my computer and installed FreeDOS. Nope. Still crashes. (All of the other DOS games run beautifully on the metal FreeDOS though, including the incredible Jill of the Jungle, also created by Tim Sweeney, maker of ZZT. But ZZT was what I really wanted to play.

I figured, well maybe I can at least get Kevedit working. Kevedit is simply the best ZZT game editor that exists. There hasn't been a new release in more than a decade, but that doesn't really matter, since it's not like ZZT is going to be changing any time soon. I downloaded the source code (it's free software—did I mention that?) and did a ./configure and make, but hit a snare... the dosbox portion was having trouble compiling up, something about not having mkisofs?

Well mkisofs doesn't really exist in modern Linux distributions anymore, but what you can do is install the xorriso package. xorriso has a compatibility mode for mkisofs, which you can use simply by running xorriso with the command xorrisofs. I edited the dosbox portion's makefiles in the Kevedit source tree to use xorrisofs instead of mkisofs, and away we go!!

So not only does Kevedit run natively, but it also has the ability to run ZZT from inside Kevedit to test the games you're making. It keeps its own copy of ZZT in a little ISO it made with that mkisofs command, which it uses as a virtual space to run your game from.

And guess what? This one doesn't crash.

So I've been playing ZZT a ton. If I want to keep my save files between sessions, I have to rescue them from Kevedit's /tmp directory and replace them after I relaunch, but it's worth it. It's bringing back a lot of nostalgia, and a lot of the games are still super-duper amazing. I'm surprised by how many classics I never actually played through; today I finished Darbytown (the extended edition). Tomorrow it's Oaktown for me!

I have some major programming urges after getting back into this, especially after looking at the code of Kevedit, but I'll share that news in the next post. For now, I'll just play for a while.

The Town of ZZT
The glory that is ZZT
ZZT crashes
Picture of Kevedit in action
Kevedit editing the Town of ZZT