Filter:  
Apache  
C  
C#  
C++  
CGI  
Linux  
Node  
ObjC  
Python  
React  
Unity  
Unreal  
iOS  
jQuery  

Andrew Plotkin: Portfolio

Contact

Filter:  
Apache  
C  
C#  
C++  
CGI  
Linux  
Node  
ObjC  
Python  
React  
Unity  
Unreal  
iOS  
jQuery  

Technology: jQuery


The Visible Zorker

Code transparency experiment (2025)

A screenshot of a window. The left pane shows the opening moves of Zork 1; the right pane shows a snippet of ZIL source code and a stack trace.

I designed and created a web app that plays Zork 1, the original Infocom text adventure from the 1980s. I’ve extended the interpreter to display Zork’s source code as you play. Every turn, it shows exactly what functions were called and what strings were printed to carry out your commanmd.

The Visible Zorker allows you to explore the implementation of Zork in the same way that you explore the game world.

I took an existing open-source Z-machine interpreter and instrumented it to record runtime execution data. I then built a React interface to display that data along with the game's source code. This involved rather a lot of analysis of both the compiled game file and the source code. (Both formats are well-documented, but I had to match up each function and string and object with the source lines that generated it.)


Seltani

Multiplayer text world (2013)

A screenshot of a window. The main pane has a text description of the shore of an underground lake. The side column shows a list of locations, with "Seltani District" at the top.

I designed and built experimental multiplayer hypertext user-extendable environment. Imagine a hybrid between an Twine and an old-school text MUD.

The front end is jQuery; the back end is Python and MongoDB; they’re connected by a websocket. Players can build new content using a wiki-style text editor and Python as the game scripting language.

To make this work, I had to implement a safe subset of Python in Python. This was surprisingly easy. On the down side, since this is a 2013 project, it’s Python 3.4. The prototype works great but it would need a lot of reworking to scale beyond a few dozen users.


Glulx

Interactive fiction platform (1998-present)

CJavaScriptjQueryElectronNode
A screenshot of a window showing the opening moves of Adventure.

I designed a spiritual successor to Infocom’s Z-machine, which was originally created for the home computers of the 1980s. Glulx has a 32-bit architecture and a pluggable I/O system. The latter allows text games to behave consistently across many kinds of UIs — native GUI apps, web pages, Slack/Discord bots, even headless modes for automated game-testing.

I implemented the first Glulx interpreter in C. Since then I’ve ported it to ObjC (for iOS) and JavaScript (for the web). I then wrapped the JS version in Electron to turn it into a portable downloadable app.

On the compiler side, I extended Graham Nelson’s Inform 6 Z-machine compiler to generate Glulx game files from the then-standard Inform language. This has been carried forward to the modern Inform 7 language, which is still in use.