This is a demo of a new web-based Z-Machine interpreter. If your reaction to that is "Huh?", you may find it enlightening to read some of the following:
My name is Eric Idema. I'm a programmer. If you're interested you can have a looksy at some of my other projects at Github. I also created Vying Games.
This is actually a demo of two projects. The first is Dorothy. Dorothy is a Z-Machine interpreter library written in C and Ruby. I could never have written if it were not for the Z-Machine Standards Document and Frotz. Many thanks to everyone that contributed to those two projects!
Initially, I wanted to simply create Ruby bindings for Frotz and build this webapp you're looking at. I ended up using some of the core code from Frotz, but the changes I made were significant. First off, Frotz is written to run one program at a time. For my purposes I needed to be able to run multiple programs simultaneously (and indeed, multiple copies of the same program) with the ability to switch between them at will. The code for Frotz simply wasn't structured for this model of execution.
Additionally, I want to do more inspection (and potentially, manipulation) of running programs. This is mostly the tinkerer in me, but I think there are some fruits to be had for such work.
The bottom line is that Frotz and Dorothy have different goals, and while Frotz is very mature and robust, Dorothy is very immature.
Lastly a similarity: Dorothy is released under the same open source license as Frotz (the GPL).
Dorothy on it's own is fairly boring. There's no UI at all. Z-Machine output is not printed to the screen in anyway, it's just dumped to the end of an array in memory.
So to give people something to play with, I wrote this demo webapp (which I'm calling Oz). Oz is built with Merb, Datamapper, and jQuery (in addition to other Ruby libraries).
Unlike Java applet based Z-Machine interpreters, this is server-based so the page sizes are very small. The minizork.z3 program file is not downloaded to your browser. And, of course, there's no slow loading Java Runtime.
You will need a reasonably modern web browser with javascript enabled to play the demo.
The server actually logs your interaction with the Z-Machine, so it can provide a list of "hints" based on what other players have previously tried. So, for example, at the start of the game clicking "hints" will show you that other players have tried "open mailbox".
As with hints, the server logs your movement through the game. Clicking "exits" will show you a list of where you can go from your current location.
The hints and exits suggestions are not updated in realtime. As you explore the game, your interactions are logged. Then, periodically throughout the day the logs are processed and the hints and exits updated. So, if you find a new exit, it won't be reflected in the exits section until the next time the logs are processed.
Clicking "history" provides a list of things you've recently typed at the prompt. Additionally, you can use the up and down arrow keys to browse your history at the prompt.
The hints, exits, and history boxes can save you some typing. For example, if one of the hints is "open mailbox", clicking it has the same effect as typing "open mailbox" at the prompt and hitting the enter key.
You can also click the location name in the status bar at the top of the page to execute the "look" command. For example, clicking "Kitchen" will give you a detailed description of the Kitchen.
On the right side of the status bar you'll see a couple numbers -- for example, "10 / 12". This means you have scored 10 points over the course of 12 turns. Click to execute the "score" command.
Dorothy doesn't yet support the save, restore, and restart Z-Machine instructions. If you'd like to start over, clicking the "restart" link will delete your current game and start a new one.
You can see some server stats by clicking the "stats" link. These are the cumulative stats for all players.
The "Locations" table shows the number of times players have visited the given location ("Hits") and the number of turns taken in that location ("Turns"). Note, turns does not include successful attempts at exiting the location.
The "Top 10 Commands" table shows the most often executed commands. It does not include successful directional commands like "north", even though these would obviously be very common.
The "Top 10 Commands by Location" table lists the top commands grouped by location where the command was executed. Again, directions are filtered out.
Yes, eventually. Your game will be saved until you:
If there's interest, I'd like to expand this demo into a full-fledged webapp. (See the beta signup form)
First of all there's still work to be done on Dorothy. To move beyond a small demo, I'd want Dorothy to be complete and well tested.
But, as to this webapp. I think the most important / unique feature of this site as an interpreter is builtin feedback. I would like to focus on game / story hosting for authors. Some possible features I have in mind:
And, for players:
If you would be interested in participating in a beta, please fill out the beta signup form.
I'm very interested in feedback / suggestions. Please send an email to support@vying.org if you have any thoughts to share.