Jason cloned the repository here: https://github.com/historicalsource/zork-1977-source
The troll, who is not overly proud, graciously accepts the gift and not having the most discriminating tastes, gleefully eats it.
"Access to collections in the Department of Distinctive Collections is not authorization to publish. Separate written application for permission to publish must be made to Distinctive Collections. Copyright of some items in this collection may be held by respective creators, not by the creating office."
So, I don't know, does seem a bit on the legal edge?
The original authors might have a copyright claim, but it's not clear that Infocom (or its heirs) would.
Maybe Dockerfile is becoming the programmer's version of what this codemeta.json file is doing (I guess for researchers)?
Eric Lippert wrote an ocaml implementation and blogged about it
I think my personal tabular room-connectivity map I hand crafted in vi is still lurking on backup media, it was fun making it.
No robots and washing machines here.
Edit: and a follow-up question, is there a good Z-Machine interpreter for the macOS terminal?
Inform is a more modern language for text adventures.
Ink is an open-source embeddable language for dialog trees and story puzzles. You’ll need to bring your own game engine, but there’s a Unity3d plugin to help.
Regardless of which you play, there are likely to be frustrating, unfair, perhaps unsolvable puzzles present. Modern players often have the Infocom invisiclues at hand while they do so.
Real releases of the game worked around this with "Invisiclues", which were sets of questions ("How do I get past the troll?") with increasingly specific hints that one is meant to uncover one by one. If you get the game files from a usual sort of place, the invisiclues will probably be included (possibly in the form of a z-machine game file).
Note that the preceding all applies to normal released versions of the game, the source in TFA could be older/different/etc.
For Z-machine on mac, I use one called "Zoom". But it's a windowed app, I don't know if it can run in the terminal or if there are alternatives.
> <SET DUMMY? T>>>
<COND (<OR <AND <MEMQ <SET O <FIND-OBJ "CANDL">>
<AOBJS .WIN>>
<1? <OLIGHT? .O>>>
<AND <MEMQ <SET O <FIND-OBJ "TORCH">> <AOBJS .WIN>>
<1? <OLIGHT? .O>>>>
<UNWIND
<PROG ()
<COND (.DUMMY?
<TELL
"I didn't realize that adventurers are stupid enough to light a
" 1 <ODESC2 .O> " in a room which reeks of coal gas.
Fortunately, there is justice in the world.">)
(<TELL
"Oh dear. It appears that the smell coming from this room
was coal gas. I would have thought twice about carrying a
" 1 <ODESC2 .O> "in here.">)>
<FWEEP 7>
<JIGS-UP " BOOOOOOOOOOOM ">>
<JIGS-UP " BOOOOOOOOOOOM ">>)>)>>
So if you come into this room with a candle or a torch, you're a dummy and get told as much. And then the jigs up, BOOOOOOMCurses can be unbearabily difficult, but not on the "unwinnable by design" as the others, at least not as the old Infocom games.
Vicious Cycles is cool too albeit short.
And Slouch over Bedlam is damn poetry made into a text adventure. Pure steampunk.
This is how I play Zork.
If you want a modern language that is purpose-built for creating games like this, there are a ton of visual novel engines. Those engines are optimized for trees/paths of dialogue and text, and for displaying media (images + audio) with the text.
renpy [0] is probably the most popular of those, but there's a long history of them if you do some digging with those keywords.
There are some pretty nutty things buried in the game, though - there's a spot in Zork 1 where by typing "temple" or "treasure" at the appropriate location you can teleport from one to the other - the supposed hint for this is they both have a granite wall. WTF?
I believe at the time, as a teenager, I finished most of the Infocom games available without using clues - it can be done. I think I never got the optimum outcome for Deadline.
I recently (this year) finished Starcross without hints or clues, aside from the copy-protection "map" at the start.
>EAST
The troll fends you off with a menacing gesture.
#ROOM {"MTROL"
"You are in a small room with passages off in all directions.
Bloodstains and deep scratches (perhaps made by an axe) mar the
walls."
"The Troll Room"
%<> #EXIT {"WEST" "CELLA"
"EAST" #CEXIT {"TROLL-FLAG" "CRAW4" %,TCHOMP}
"NORTH" #CEXIT {"TROLL-FLAG" "PASS1" %,TCHOMP}
"SOUTH" #CEXIT {"TROLL-FLAG" "MAZE1" %,TCHOMP}}
(#FIND-OBJ {"TROLL"})}
<PSETG TCHOMP "The troll fends you off with a menacing gesture.">I worked with him at Sun on NeWS -- he's a great PostScript hacker! When you logged into his workstation, /etc/motd said "Welcome to Adventure. Would you like instructions?" -- but don't type "yes" to the Unix shell or you'll regret it. Here's his implementation of QuickSort in PostScript, and he also wrote the Spider card game for NeWS that shipped with OpenWindows (which is a nice clean well documented example of NeWS PostScript code), and he wrote a bunch of Open Look widgets and user interface plumbing for The NeWS Toolkit, too:
https://donhopkins.com/home/code/quicksort.ps.txt
https://donhopkins.com/home/news-tape/fun/spider/spider.ps
Here's a great interview with Don Woods from GET LAMP, in which he mentions playing Zork at MIT over the ARPANET. He describes the point at which he stopped playing Zork, when he had almost solved the entire game, but then they added a whole bunch of new stuff to the game that night. So he realized he would never completely solve it, and finally stopped playing.
I presume the "One Lousy Point" stamp is a cheeky tribute to Don Woods' ordeal playing Zork, because it's so damned hard to figure out how to find it (which I won't spoil):
https://www.youtube.com/watch?v=A8Z1cKUxD9c
---v----v----v----v----v---
| _______ |
> One / \ G <
| Lousy / \ U |
> Point | ___ | E <
| | (___) | |
> <--)___(--> P <
| / / \ \ o |
> / / \ \ s <
| |-|---------|-| t |
> | | \ _ / | | a <
| | | --(_)-- | | g |
> | | /| |\ | | e <
| |-|---|_|---|-| |
> \ \__/_\__/ / <
| _/_______\_ |
> | f.m.l.c. | <
| ------------- |
> <
| Donald Woods, Editor |
> Spelunker Today <
| |
---^----^----^----^----^---As far as programming the actual story goes, it's an independent implementation based on entirely different principles (Zork was written in MDL which was a Lisp).
If it was some sort of non-exclusive license, there should be no problem, because the authors seem to be on board with the release.
If the authors transferred their copyright to Infocom upon forming the company, then this code is technically no longer theirs to give away, especially since the IP rights were subsequently re-sold (maybe even multiple times).
I agree with others in this discussion that at this point, the code most likely has primarily academic/historical value. But that would not necessarily stop an owner from suing a deep pocketed entity like MIT.
The ITS operating system that Zork was developed on was a extremely open, with very little security, but lots of obscurity.
ITS was like the original "social network," where users would hang out and socialize, with lots of visibility and awareness of each other and what they're doing, where everybody could see each other's files and read each other's email, with programs like "INQUIR" for telling other people about yourself, "WHOIS" and "FINGER" for finding out about other people, "WHOJ" to see who's on and what they're doing, "SEND" and "REPLY" for sending immediate messages back and forth, "UNTALK" for multi-window chatting, "MAIL" for sending email, "RMAIL" and "BABYL" for reading email, etc.
And (important to Zork) also "OS" (Output Spy) to spy on other people's sessions over their shoulders!
Only two people could play Zork at once on DM, and only after east coast business hours. Usually there were a few other people just hanging out, spying on the two lucky people playing, chit chatting with each other and the players by sending messages and email, etc.
It was considered perfectly normal and inoffensive behavior for people to spy on each other and learn about running Lisp, hacking Emacs, or playing Zork. (As long as you're not creepy or obnoxious about it, but people tended to be polite and follow the Tourist Policy, and people liked to help each other learn. And if you liked creepy obnoxious stuff, you could subscribe to REM-DIARY-READERS!)
https://medium.com/@donhopkins/mit-ai-lab-tourist-policy-f73...
>TOURIST POLICY AND RULES FOR TOURIST USE OF ITS MACHINES
>It has been a long standing tradition at both the Laboratory for Computer Science and the Artificial Intelligence Laboratory at MIT to allow non-laboratory people to use the laboratories’ computers during off hours. During the early days of the laboratories’ existence a non-laboratory person (such people have come to be called tourists) could gain access to one of the computers by direct personal contact with a laboratory member. Furthermore, tourist access was controlled because access to the laboratories’ computers was de facto achieved through on site terminals. A tourist sponsored by a laboratory member would generally receive some guidance and tutelage concerning acceptable behavior, proper design techniques for hardware and software, proper programming techniques, etc. The expectation on the laboratories’ part was that a large percentage would become educated in the use of the advanced computing techniques developed and used in our laboratories and thereby greatly facilitate the technology transfer process. A second expectation was that some percentage would become interested and expert enough to contribute significantly to our research efforts. Tourists in this latter group would at some point in time graduate out of the tourist class and become laboratory members. In actual fact a number of former and present staff members and faculty earned their computational wings in just this fashion. [...]
MIT-DM was the Dynamic Modeling Lab's PDP-10 running a slightly different version of ITS, and it was the only ITS machine that had any form of file protection, which was primarily used to hide the Zork source code. But even that was essentially only security through obscurity, which was why the source was eventually leaked.
Zork had its own end-game, but getting an account on MIT-DM was like the pre-game, and logging into MIT-DM itself was like the Zork Lobby where you'd hang out waiting for your turn and socializing.
You could get an account on most of the ITS machines just by asking nicely and using the right magic words, like mentioning Lisp on MIT-AI, or Macsyma on MIT-MC, or SomewhatBasic on MIT-ML. But Zork was so sought after that DM was one of the harder ITS machines to get an account on -- you couldn't just say you wanted to play Zork or hack Lisp: you had to say you were interested in MDL for some plausible sounding mumbo jumbo like "algebraic applications". But they still knew you just wanted to play Zork, though.
PDP-10/its: Incompatible Timesharing System (github.com)
I believe the officially final version is from 1981, and is the one Bob Supnik distributes. Macsyma developer Eric Swenson made off with a 1979 version, but it's virtually identical. I'm not aware of any more preserved versions beyond these three.
But it's an interesting gray area certainly, as Zork was probably not "properly" prepared as a thesis/dissertation including MIT's recommended explicit statement granting the above non-exclusive license: "The author hereby grants to MIT permission to reproduce and to distribute publicly paper and electronic copies of this thesis document in whole or in part." [1]
IIRC, both Witness and Bureaucracy had physical stuff in the box that didn't look like copy protection, but without which it wasn't possible to finish the game - e.g. There was no way to figure out some things in Bureaucracy unless you read the included copy of "Popular Paranoia".
This might not have been such a problem if I had played the Zorks in order, but I bought Zork 3 before Zork 1 because that was what they had in the shop. Otherwise I might have seen the verse in Zork 1:
"Oh ye who go about saying unto each, "Hello sailor", Dost thou know the magnitude of thy sin before the gods?"