Yottabytes: Storage and Disaster Recovery

Dec 29 2019   10:56PM GMT

Remember Zork Text Games? Its Source Code is Available

Sharon Fisher Sharon Fisher Profile: Sharon Fisher


In case Entombed, Magnetic Scrolls, and Prince of Persia aren’t enough, you ow have access to a number of the 1980s-era Infocom games, ranging from Zork to Leisure Suit Larry.

If you’ve forgotten, or weren’t alive at the time, Infocom games were text-based, because this was back in the day before graphics were particularly available in games.

“It was 1977, and home computers were big, expensive, heavy, and were almost entirely lacking in computing power by today’s standards,” writes Krypton Radio. “Yet, in this primitive environment, the first computer adventure games were born. Zork was the first commercial offering.” It was based on the very first text adventure game, Colossal Cave Adventure — or, as some people called it, just Adventureand originally written for the Digital Equipment Corp. DEC-10 minicomputer. “That’s right, it took a mainframe to run it!” Krypton Radio notes.

Now, the source code to some of the Infocom games has been posted to GitHub, so that people who have been longing for the days of text-based games can indulge themselves to their heart’s content.

However, that was also back in the day when there were multiple types of computers and each game needed to be written for each. Consequently, the games were all written in a proprietary language called ZIL.

“ZIL, or Zork Implementation Language, is the unique programming language used to make the Zork games and was based on another old coding language called MIT Design Language (MDL),” writes Matt Kim in US Gamer. “[ZIL] is written to create adventure games in an environment people haven’t used commercially in over 25 years. And even then, it was about 15 people. ZIL then is a pretty niche coding language with a niche group of followers. There are actual online communities that teach and carry on ZIL, but it’s not a modern coding language like C++.”

As with other games, looking at the source code reveals all sorts of things about the game. For example, when the source code had first become available a couple of years earlier, people learned that some aspects of Zork were completely random. “While Zork checks the player’s item count to determine if they’re carrying too much, it also uses a random roll just to mess with the player,” writes Logan Booker in Kotaku. “The roll used a number between 0 and 100, forcing players to keep trying to pick things up until it finally worked. I was skeptical at first — surely a system as important as inventory wouldn’t be so cavalier with capacity? My skepticism grew when searches of Zork‘s MDL code from MIT and the public domain source from Infocom came up empty. But, after checking various sources of decompiled code from Zork, it does indeed appear the game would fire out an overburdened message based solely on randomness.”

Source code for other Infocom games were posted as well. “Leisure Suit Larry, the complete source code, have been uploaded to GitHub – alas, not the assets too, so you can’t build Leisure Suit Larry from this, but you can certainly get a glimpse as to how the game was created and how the asset system worked with the game script itself,” Krypton Radio adds, as well as The Hitchhiker’s Guide to the Galaxy and others. “There are about two pages of listings, mostly Infocom, but there are some hidden gems there too, like an open source version of the engine Croteam created for Serious SamPeter Spronck’s Space Traderas well as the complete source for Hexen and Hereticboth from Raven Software.”

If Fortnite has lost its appeal for you, it might be worth checking out.

 Comment on this Post

There was an error processing your information. Please try again later.
Thanks. We'll let you know when a new response is added.
Send me notifications when other members comment.

Forgot Password

No problem! Submit your e-mail address below. We'll send you an e-mail containing your password.

Your password has been sent to:

Share this item with your network: