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.)
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.
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.