ZZT looked old-fashioned the day it came out. Its world is drawn in the IBM PC’s text characters: the player is a smiley face, walls are solid blocks, and every lion and bear is a single character on the 80-column text screen. Its author, Tim Sweeney, admitted in 1997 that the graphics “looked dated even in 1991”. What set it apart was in the box. Every shareware copy came with the editor Sweeney had built the game with, and with a small programming language, ZZT-OOP, that let anyone give the objects in their world behaviour of their own. Computer Gaming World, in what Sweeney later called Epic’s first mainstream press, called it “truly charming” and noted that it boasted “not only an easy, yet challenging game, but also a construction set!”
Players used that construction set for decades. The registration fees paid for Sweeney’s next game, and the one-man company in Maryland that sold ZZT became Epic MegaGames.
Fast facts
- Author: Tim Sweeney.
- Publisher: Potomac Computer Systems of Potomac, Maryland, soon renamed Epic MegaGames.
- Released: 1991, as shareware; the Museum of ZZT dates it to 15 January 1991. The last official version, 3.2, followed in 1992.
- Machine: IBM PC compatibles running MS-DOS, with 512K of memory and any graphics adapter, colour or monochrome.
- Written in: Turbo Pascal, “20,000 lines of Pascal code” by Sweeney’s count.
- Included: the game Town of ZZT, a world editor and the ZZT-OOP language; further worlds came with registration.
- Source code: lost; a reconstruction was released in 2020 and a 1991 development copy in 2023, both under the MIT licence with Epic’s permission.
From text editor to game
“The funny secret behind ZZT is it started out while writing a text editor,” Sweeney told Benj Edwards in 2009. “I got bored with that at some point and decided to make the cursor into the smiley face character.” Sweeney wrote it in Pascal, a language he said “forced the programmer to be more structured”; Adrian Siekierka’s reconstruction of the program later showed the compiler was Borland’s Turbo Pascal 5.5. The name meant nothing. “It wasn’t an abbreviation for anything,” Sweeney said, and he had thought of it years before. The Museum of ZZT, the fan archive of the game, gives the practical reason: a title starting with ZZ would appear last in software listings.
He sold it under the name Potomac Computer Systems, chosen when he had planned to go into computer consulting. ZZT was shareware. The first world, Town of ZZT, was free to copy and pass around bulletin boards and user groups; players who paid received more worlds, Caves of ZZT, City of ZZT and Dungeons of ZZT, by post. Sweeney later thanked Apogee’s Scott Miller “for his early advice and encouragement with ZZT”, and thanked Computer Gaming World’s editor Johnny Wilson “for the first mainstream press that Epic received”.
Playing it
PC Review’s shareware pages in 1992 warned that to finish Town of ZZT “you must master 43 game boards filled with creatures and ingenious puzzles”, and reckoned on about 20 hours. Each board is one screen. The player walks off its edge into the next, collecting keys, gems, ammunition and torches for the dark rooms, and shooting or dodging lions, bears, centipedes and ruffians. “When you discover a new object, try touching it,” the reviewer advised. “Nearly everything has some sort of purpose (but watch out for red herrings!)” Computer Gaming World described it as a quest game “with a bit of arcade reflex required”, where “strategy and puzzle solving are the real keys to the ‘keys’ required for success”.
ZZT-OOP
In the editor, a designer can place walls, creatures, items and terrain, link boards to each other, make a board dark, limit how many shots the player can fire, or set a time limit. The interesting pieces are objects: a character on the board with a program attached. ZZT’s own help file teaches the language with this example:
@BadGuy
/s/s/s
#shoot n
#end
:shot
#shoot seek
#end
:touch
Ouch! Stop touching me.
#send shotThe object names itself BadGuy, walks south three times, shoots north and stops. After that it waits for messages. When the player shoots it, it receives the message SHOT and fires back at the player. When the player touches it, it prints a line of text and sends itself SHOT. The help file points out that the “primary difference between ZZT-OOP and conventional languages such as BASIC is the use of messages”. Objects can send messages to each other by name, and a set of flags, switched with #SET and #CLEAR and tested with #IF, carries state from one board to the next. That was enough to build doors that open when a switch is thrown, characters who talk, and puzzles that remember what the player has done.
Computer Gaming World passed on the billing that ZZT was “the first major computer game to use object-oriented programming”. Sweeney’s own later claim was more careful: “To the best of my knowledge, ZZT was the first PC game to feature a built-in level editing tool and scripting language.”
Sales and Epic
ZZT was a modest seller. “After ZZT came out, I was selling about three or four copies a day, which is a hundred dollars a day,” Sweeney recalled in 2009; by then he estimated “four or five thousand” copies in total. It was enough to persuade him that he could make games for a living. “Registrations from ZZT paid for the computer, hardware and artwork I used to create my second game, Jill of the Jungle,” he wrote in 1997. He also changed the company name to Epic MegaGames, which he later called “kind of a scam to make it look like we were a big company”. A sequel, Super ZZT, followed; PC Review described its seven-level Monster Zoo and “ultra-colourful four-way scrolling playfield”.
Jill of the Jungle, Sweeney wrote, “put Epic MegaGames on the map” and helped bring in developers such as James Schmalz and Cliff Bleszinski. By 1997 Sweeney was at work on his third game, Unreal, and Epic went on to become Epic Games, the maker of the Unreal Engine. In 2010 Edge visited Epic’s offices in North Carolina and described it as “the same tight-knit family that made DOS-based puzzler ZZT some 19 years ago”.
Worlds made by players
ZZT’s editor outlived its commercial life. Sweeney wrote in 1997 that it had “inspired hundreds if not thousands of user-created levels”, traded on bulletin boards, online services such as AOL and early websites. Later creation tools such as MegaZeux took up its idea of a text-mode world with a scripting language attached. Epic kept selling the registered worlds by post long after it had moved on; according to Siekierka, the last physical copy shipped in 2013.
The Museum of ZZT now catalogues the worlds players made with it. The community also built its own tools: KevEdit, a more capable editor, and Zeta, an emulator that runs the original program on modern systems and in web browsers. In 2014 the designer Anna Anthropy published a book-length study of the game, ZZT, in the Boss Fight Books series.
Released source code
Sweeney’s 1997 page asked people not to request the code: “if I had it, I’d release it, but I lost it in a crash a long time ago.” Two releases have filled the gap since, both by Adrian Siekierka.
- The Reconstruction of ZZT (15 March 2020). Siekierka asked Sweeney for permission in February 2020 and decompiled ZZT 3.2, the last official version, into Turbo Pascal source that compiles to an executable “byte-for-byte identical” with the original. It includes the source for ZZT’s help files and the official demonstration world, and is published on GitHub under the MIT licence, with the notice that it is “Based on a reconstruction of code from ZZT, Copyright 1991 Epic MegaGames, used with permission.”
- The Almost of ZZT (28 January 2023). A surviving backup of Sweeney’s own development source, dated 12 to 19 June 1991 and close to ZZT 3.0. It is “not a decompilation”, but it is not complete: parts suspected to be other people’s copyright were removed and marked. Siekierka published it on GitHub under the MIT licence, again with Epic’s permission.
Sources
- Computer Gaming World issue 84, July 1991, p. 78, “Taking a Peek”: ZZT from Potomac Computer Systems, Potomac, Maryland; “first major computer game to use object-oriented programming”; “truly charming”; four or sixteen colours or monochrome; the construction set; $14.95.
- PC Review issue 11, September 1992, shareware section (also in issue 9, July 1992): Town of ZZT’s 43 boards and 20 hours, the editor and ZZT-OOP, system requirements, and Super ZZT.
- Edge issue 215, June 2010: visit to Epic Games for Bulletstorm (“DOS-based puzzler ZZT some 19 years ago”).
- ZZT’s built-in documentation, reproduced in the Reconstruction of ZZT: the ZZT-OOP tutorial (the BadGuy example, messages), the language reference (flags,
#SET,#CLEAR,#IF), the board information help, and the lists of creatures and items. - Tim Sweeney, “The Official ZZT Home Page”, Epic MegaGames website, 1997, archived at https://web.archive.org/web/19991010013339/http://www.epicgames.com/zzt.htm: release in 1991 as Epic’s debut; the dated graphics; Jill of the Jungle paid for by registrations; the first PC game with a level editor and scripting language “to the best of my knowledge”; thanks to Scott Miller and Johnny Wilson; the lost source code.
- Benj Edwards, “From The Past To The Future: Tim Sweeney Talks”, Gamasutra, 25 May 2009 (web, secondary; interview): the text editor and the smiley-face cursor; Pascal and 20,000 lines; the name; Potomac Computer Systems and Epic MegaGames; sales of three or four a day and four or five thousand in total. https://www.gamedeveloper.com/design/from-the-past-to-the-future-tim-sweeney-talks
- Museum of ZZT, “About ZZT” (web, secondary): release on 15 January 1991; the name chosen to appear last in listings; the registered worlds. https://museumofzzt.com/about-zzt
- Adrian Siekierka, “Reconstructing ZZT”, blog, August 2020 (web, secondary): permission from Sweeney in February 2020; Turbo Pascal 5.5; ZZT 3.2 in May 1992; the release on 15 March 2020; the last physical copy in 2013; MegaZeux. https://blog.asie.pl/2020/08/reconstructing-zzt/
- Adrian Siekierka, The Reconstruction of ZZT, GitHub repository and LICENSE.TXT, 2020 (source code, MIT licence). https://github.com/asiekierka/reconstruction-of-zzt
- Adrian Siekierka, The Almost of ZZT, GitHub repository, 28 January 2023 (source code, MIT licence). https://github.com/asiekierka/almost-of-zzt
- Anna Anthropy, ZZT (Boss Fight Books, 2014).