ZZT: Epic’s First Game
howtogeek.com
howtogeek.com
Every few years I have a silly notion I want to write a similar game but with a real programming language like Lua (or one of my own creation). Then I sketch up the easy stuff for a bit, but give up as soon as it gets hard. :-)
I think there's been something of a resurgence of ZZT stuff in recent times, thanks in no small part to Adrian Siekierka's work, particularly his "Reconstruction of ZZT", a reverse engineering of the lost Turbo Pascal source code. That project is incredible to me -- the reconstructed source code, when compiled with Turbo Pascal 5.5, compiles to an executable file that's byte-for-byte identical to the original ZZT.EXE. His description is here: https://blog.asie.pl/2020/08/reconstructing-zzt/
One fun thing I did do was take Adrian's Pascal source code, and write a Pascal-to-Go transpiler to produce a Go version of the same. It kinda works: https://benhoyt.com/writings/zzt-in-go/
There's also a fully functioning Rust port, which was written before the reconstructed source was available: https://github.com/yokljo/ruzzt
Here is an image of TOWN.ZZT loaded into the editor: https://i.imgur.com/mb9OFno.png
And here is the pascal string "SECRET" changed to "NECRET": https://i.imgur.com/kbh5xAm.png
I'm surprised that 12-year old me thought to do this.
Unless... you use the "?" key to open the cheat console, and type in "+DEBUG" as a command (in ZZT 3.1+, IIRC) - then it will let you open the worlds and edit them as-is.
https://github.com/asiekierka/reconstruction-of-zzt/blob/mas...
It looks like the SECRET flag was intended to prevent editing of both save files and built-in worlds.
'91 zzt. Then in 92 they go hellishly rapid-fire - from 92 to 95 we get Jill of the Jungle, Epic Pinball, Zone 66, Solar Winds, Xargon, OMF 2097, Jazz Jackrabbit, Radix, and Tyrian.
Within the small pond of PC shareware games, every single one of those was a hit. They had some of the best 2D art and music available in PC games at the time and were solidly fun. Some of them are a bit stiff by modern standards, but they were excellent for their day.
How the hell did Sweeney go from "I just got a computer" to that in so few years?
I've wasted my life.
Example: The King In Yellow Borders, a horror game: https://stale-meme-emporium.itch.io/the-king-in-yellow-borde...
The other massive shot-in-the-arm for ZZT was asiekierka's disassembly and reconstruction of the original Pascal source code: https://github.com/asiekierka/reconstruction-of-zzt (Tim Sweeney allowed the reconstruction to be released under the MIT licence.)
As an accidental 30th birthday celebration, the community remixed the first world - Town of ZZT - and Dr. Dos livestreamed the first half of it just the other day: https://museumofzzt.com/file/t/TOWNRMIX.zip
Also, Dr. Dos was recently interviewed on "Preserving Worlds", discussing ZZT, the Museum, and Zeta: https://www.youtube.com/watch?v=JhCYQI_XBl0
(It's also a pun on The King in Yellow but that reference is explained in the itch.io page.)
Also, Zeta is a JavaScript/WebAssembly project in this regard (the C part of the codebase is compiled to WASM, but can also produce an SDL-based desktop variant) and developed as such; not just JS!
The game originally was not battle royale, and released as a paid early-access title. To this day, you still have to pony up 15$ to get access to the game as it was released back in 2017. The battle royale expansion was added after the game completely flopped on release and the absolutely insane energy around DayZ and PubG started bubbling over to the rest of the industry. Fortnite : Battle Royale was the only way at the time to play a royale-type game on a minimally spec'd machine and thus quickly became a total hit.
The fact that Fortnite is popular with kids has blinded most people to the fact that it’s the most strategically interesting competitive game to arrive in ages.
Building in Fortnite is a race and the gameplay is too frenetic to "design" anything. It's just a matter of building higher, quicker (or farther if you're rushing). After a while you just go through the motions.
There is no strategic depth to it and it really detracts from the strategic positioning and obstacle navigation that other BRs have, so IMO it's a net loss.
Fortunately I play squads and that can even the score against these architects.. it’s fun, a little silly and they keep iterating on the game to keep it from going stale .
By the way - If you're a ZZT (or MegaZeux!) user from the 90s/early 00s and still have archives from that period of any kind - that is world collections, etc. - we'd love to hear more! A common misconception is that we have preserved almost all ZZT worlds ever released to the public. Unfortunately, that's not true; while it's getting better thanks to modern efforts (with hundreds of previously unknown worlds archived in the past two-three years), archives especially from the BBS and AOL-centric eras (1991-1998) remain particularly spotty.
I remember switching into edit mode on the 'Town of ZZT', and tweaking the responses of the characters.
I was learning to program with Turbo C++ at the time, and actually it was ZZT's 'OOP' that really helped connect some of the concepts in my brain to what Objects were (although ZZT's objects were really sort of Actors that responded to, and could send messages).
I would come back over the years, and I remember on IRC in 94' there was a pretty vibrant community writing games.
What I loved doing was exploiting various ZZT bugs. You could for instance place the player object next to another object, and the next time the player moved they would warp to the object. You could then 'zap' the player object to release them.
One thing you could do is place a stairway to another level, and place the player object on the stairway, and the player would remain on the original level, but the graphics for the other level would be overlaid on it.
I used this to make an RPG engine, where the ASCII art for different encounters were on these other levels, and there was a special level that would basically clear portions of the ascii art to reveal the selected enemy.
There were all sorts of clever hacks developers came up for checking health by converting it to torches, and back, and all sorts of other crazy things.
Based on interviews with Tim Sweeney, it is said that he would let other people playtest pre-release versions of ZZT. What wasn't clear from the context is if anyone else ever had their own copy of these pre-release versions, which have been for a long time - due to some features and traits present in some of the pack-in worlds which were not possible to achieve with the editor as released - a source of speculation in the community. Do you happen to have any recollection of that?
The Reconstruction of ZZT - https://news.ycombinator.com/item?id=22609474 - March 2020 (39 comments)
Museum of ZZT - https://news.ycombinator.com/item?id=17656822 - July 2018 (14 comments)
The Last ZZT Disk - https://news.ycombinator.com/item?id=6772696 - Nov 2013 (6 comments)
zztmmo - classic zzt game engine + node.js + jQuery - https://news.ycombinator.com/item?id=1323888 - May 2010 (6 comments)
Others?
The engine for ZZT was so quirky with lots of limitations, so it was fascinating to see the ideas that people came up with to make elaborate games like RPGs, survival horror, etc.
People would ship games they called toolboxes, which had unique and interesting objects or unnaturally colored blocks that you could use for your own games.
There was a series called ZZTV that was an anthology of small games, stories, and teenage rants https://museumofzzt.com/article/422/closer-look-zztv-3
The term was "toolkits". While most probably followed the convention due to Alexis Janson's 1994 Super Tool Kit, or STK - which utilized hex editing to unlock far more color variants than the engine itself offered - there were actually earlier, based on using in-world interactions to get a more limited set of color variants - such as "Tim's Toolkit" from 1992.
I won't say I learned programming from it, because that started with GW-Basic, but it definitely expanded my understanding at a crucial time in my development.
The book is more of a personal account, but it does a great job placing ZZT in a time that was pre-Internet and pre-creator tools (for most people) and how it was capable of empowering people in ways that were not common before then.
My solution when getting hit with calls every week was a custom sort to push numeric names to the back end of the search results.
Click on the link and get met with an "Unable to load Adobe Flash plugin" box. Not HTML5 so much I think. :)
The best way to play ZZT on the web currently is to use the dedicated Zeta emulator; it's integrated with the Museum of ZZT, as well as used by most ZZT-based games published on Itch.
I wish I had known about ZZT-OOP. I had no clue that was underneath it all.
I still have my original ZZT 3.5" floppy disk, along with the cardboard map it came with.
Anyone know what I might be thinking of?