Skip to content
vic

DeMille/encrusted

A z-machine (interpreter) for text adventure games like Zork

DeMille/encrusted.json
{
"createdAt": "2018-06-07T00:12:06Z",
"defaultBranch": "master",
"description": "A z-machine (interpreter) for text adventure games like Zork",
"fullName": "DeMille/encrusted",
"homepage": "https://sterlingdemille.com/encrusted",
"language": "Rust",
"name": "encrusted",
"pushedAt": "2022-06-20T00:14:32Z",
"stargazersCount": 140,
"topics": [],
"updatedAt": "2025-11-25T05:56:59Z",
"url": "https://github.com/DeMille/encrusted"
}
encrusted

Crates.io
Built Status



A z-machine (interpreter) for Infocom-era text adventure games like Zork

Section titled “A z-machine (interpreter) for Infocom-era text adventure games like Zork”

Runs in a web interface or directly in a terminal. Built with Rust and WebAssembly (wasm32-unknown-unknown).

🎮  [Launch the web player][web]


Features

  • Live mapping to keep track of where you are
  • Undo / Redo support
  • Narration / Dictation using the [web speech APIs][APIs]
  • Object tree inspector

[web] !: https://sterlingdemille.com/encrusted [APIs] !: https://developer.mozilla.org/en-US/docs/Web/API/Web_Speech_API

Terminal version:

Terminal window
cargo install encrusted --bin encrusted

Run a file with encrusted <FILE>. Use $undo and $redo to step through your move history. Use save and restore to save your progress.

WebAssembly/React web version (requires node & rust nightly):

Terminal window
# If you haven't added nightly or the wasm32 target:
rustup toolchain install nightly
rustup target add wasm32-unknown-unknown --toolchain nightly
# Runs webpack dev server on port 8000
npm run dev
# Build .wasm module with rust nightly, debug mode
npm run build:debug
# Or build all in release mode & bundle JS into the ./build directory
npm run release

Run z-machine tests (czech & praxix) through regtest:

npm run test
  • Currently only supports v3 zcode files
  • Saves games in the Quetzal format

MIT