I have just released Wasm2Glulx, a tool which translates WebAssembly into Glulx. Wasm2Glulx’s raison d’être is to make it possible to use general-purpose programming languages to develop interactive fiction, while producing portable game files that run seamlessly on existing Glulx interpreters. Wasm2Glulx is plumbing; it is not intended, by itself, to provide a direct, friendly interface for game developers, but rather to be a foundation for the development of new game engines. That said, I have already used it to translate one complete game: a new port of Adventure 2.5, the 430-point version released by Don Woods in 1995.
Despite this being a first release, the tool is already in quite solid shape. It supports the entirety of WebAssembly 1.0, and most of the current 2.0 draft (everything except SIMD). It passes a suite of roughly 24,000 tests, autogenerated from WebAssembly’s official test suite, incidentally catching a handful of Glulx interpreter bugs in the process.
Wasm2Glulx is the first step of the Bedquilt project, my effort to develop a Rust-based interactive fiction engine. While my focus will be on Rust-based tooling from here forward, Wasm2Glulx will always be supported as a standalone and language-agnostic tool, meant to be usable with the output of any compiler that has a WebAssembly backend.
Wasm2Glulx’s manual is up at https://bedquilt.io/manual and includes an FAQ about its technical architecture. Its sources (including the sources for the Adventure port) are at https://github.com/dfoxfranke/bedquilt. The compiled game is available from the IF Archive at https://ifarchive.org/indexes/if-archive/games/glulx/#advent430.ulx