:touch The legacy and importance of ZZT's #zap touch #end :touch formative game language
Epic MegaGames' ZZT could not have been more important to me. A DOS action-adventure game with ASCII graphics, it was archaic to its very core from the day of its 1991 release, surrounded as it was by SuperVGA scrolling games. You control nothing more than a bathetic "smiley", a little white face with a blue outline who journeys around the packed-in Town of ZZT, solving puzzles and traversing obstacles. Everything about it is fiercely generic, with enemies including lions, tigers, nebulous "ruffians" and giant snakes that split into multiple bodies ala Centipede. You've got various keys to fit various doors, collectable gems, boxes of ammo and torches to light dark areas. It's all very familiar. And that familiarity powers the real masterstroke of ZZT.
Yes, Tim Sweeney's shareware classic included a feature-complete editor, with every element found in the included games available for the player to exploit. While there's no acceptable mouse control, drawing and designing your own "boards" is intuitive and easy. It's possible to create a satisfying, decent-looking game of your own with this extremely friendly little engine, and the ability to save it as a seperate file you can then share is the icing on the cake. That would have been enough to make it essential for childhood me - I can make my own games?! - but ZZT went above and beyond this basic-yet-brilliant functionality with its real depth-charge - "ZZT-OOP".
ZZT-OOP is the programming language integrated into ZZT, which you can use to add untold depth and personality to your created games. Learning ZZT-OOP was huge for me - not only could I make games with this thing, I could give them character, I could write dialogue, flavour text, gags, easter eggs. Using ZZT-OOP transformed my games into worlds with their own rules, their own lore. It is useful for more than just fluff, though; it allows you to create "Objects", which used ASCII symbols to visually represent whatever you wished to inhabit your world. For example, a hash symbol (#) could be anything from a portcullis to a gas cooker, a tilde (~) a worm or snake, you get the idea. You can create relatively complex enemies with this function, boss battles that take multiple hits and have many phases of behaviour, or activate other hazards during the fight. Your only limit - within reason - really is your imagination.
I - and my peers - made a ton of games for this thing. Many of them are lost to time and corrupt floppy disks (the loss of my 50-board epic Tyana still rankles), but a good number of my old games still survive. Destroy All Nerds is a shockingly prescient title in which you must bring down a fascist government run by total geeks, Doompool a somewhat poorly-named dungeon crawler aiming for a dark atmosphere, Catch the Fart an arcade game in which you had to... um... catch the fart. Look, I was a kid. I've illustrated this blog with images exclusively from the games I've worked on, just to prove that it can be done by even the most fundamentally incompetent human.
ZZT, by its very nature, fostered community - websites like z2 (RIP) hosted a huge selection of games submitted by people just like me, only more talented. The likes of Chronos30's Chrono Wars, draco's Edible Vomit and even Chris Kohler's Yoshi may not be well-known or especially advanced games, but I adored them. The level of independence that one designer could create something like the hyper-unknown House of Maullar_Maullar (Maullar_Maullar) yet infuse it with such identity that it has stayed with me over most critically-acclaimed hyper-budget titles, burrows into the very heart of why I adore games.
Much of this history is brilliantly archived over at Dr DOS' Museum of ZZT, and running ZZT is simplicity itself these days thanks to Adrian Siekierka's phenomenal Zeta. If you make some games with it, please show them to me, as I'd be thrilled to see them.