Data‑first interactive fiction engine and authoring DSL in Rust.
I wanted to learn Rust and thought an 80s‑style parser adventure (think Zork) would be the perfect project to dig in to many different aspects of the language. A small game prototype quickly snowballed into a data‑driven engine, a friendly DSL, and tooling to build real adventures -- along with a fairly extensive demo game that utilizes each of the available engine features in some way.
Amble is a data‑centric engine that loads worlds from compiled WorldDef data (world.ron or worlds/*.ron), plus a DSL and compiler that make worldbuilding fast and readable. The repo includes developer tools and a fully playable demo you can run immediately.
The WorldDef *.ron file is not edited directly to create the game. That's what the Amble DSL is for...
The Amble DSL is designed to read like plain English while staying precise and composable.
amble_script/docs/dsl_creator_handbook.md for the language tour.The compiled data runs as a classic parser adventure in the terminal, with theming, status UI, and a REPL for command-driven play.
amble_engine (use amble_engine.exe on Windows).help in the game REPL for commands. Saves go to saved_games/<world>/.cd into it.cargo run -p amble_enginehelp in the REPL; saves land in saved_games/<world>/.amble_script/docs/—start with dsl_creator_handbook.md.world.ron:
cargo run -p amble_script -- compile-dir amble_script/data/Amble --out-dir amble_engine/data
(Use --out-world amble_engine/data/worlds/<slug>.ron to add multiple worlds.)cargo run -p amble_engineamble_script lint … to catch missing references early.amble_engine - loads compiled world data from world.ron or worlds/*.ron, plus static support files such as themes/help, or a saved state, then runs the gameamble_script - an intuitive, English-like language (DSL) for defining the game world, which compiles into WorldDef (RON) used by amble_engineamble_data - world data model, shared between amble_engine and amble_script.xtask - automation helpers for builds, packaging, and the content pipelinetree-sitter-amble - a tree-sitter parser / syntax highlighter for the amble_script DSLzed-amble-ext - a full-featured extension for the Zed editor with syntax highlighting and a language server (supports outlining, references / go-to-definition, symbol renaming, formatting, diagnostics, autocomplete -- development still ongoing.).amble -> world.ron (or worlds/*.ron) data, not code195 commits
1 commits
Rust
100.0%
Data‑first interactive fiction engine and authoring DSL in Rust.
I wanted to learn Rust and thought an 80s‑style parser adventure (think Zork) would be the perfect project to dig in to many different aspects of the language. A small game prototype quickly snowballed into a data‑driven engine, a friendly DSL, and tooling to build real adventures -- along with a fairly extensive demo game that utilizes each of the available engine features in some way.
Amble is a data‑centric engine that loads worlds from compiled WorldDef data (world.ron or worlds/*.ron), plus a DSL and compiler that make worldbuilding fast and readable. The repo includes developer tools and a fully playable demo you can run immediately.
The WorldDef *.ron file is not edited directly to create the game. That's what the Amble DSL is for...
The Amble DSL is designed to read like plain English while staying precise and composable.
amble_script/docs/dsl_creator_handbook.md for the language tour.The compiled data runs as a classic parser adventure in the terminal, with theming, status UI, and a REPL for command-driven play.
amble_engine (use amble_engine.exe on Windows).help in the game REPL for commands. Saves go to saved_games/<world>/.cd into it.cargo run -p amble_enginehelp in the REPL; saves land in saved_games/<world>/.amble_script/docs/—start with dsl_creator_handbook.md.world.ron:
cargo run -p amble_script -- compile-dir amble_script/data/Amble --out-dir amble_engine/data
(Use --out-world amble_engine/data/worlds/<slug>.ron to add multiple worlds.)cargo run -p amble_engineamble_script lint … to catch missing references early.amble_engine - loads compiled world data from world.ron or worlds/*.ron, plus static support files such as themes/help, or a saved state, then runs the gameamble_script - an intuitive, English-like language (DSL) for defining the game world, which compiles into WorldDef (RON) used by amble_engineamble_data - world data model, shared between amble_engine and amble_script.xtask - automation helpers for builds, packaging, and the content pipelinetree-sitter-amble - a tree-sitter parser / syntax highlighter for the amble_script DSLzed-amble-ext - a full-featured extension for the Zed editor with syntax highlighting and a language server (supports outlining, references / go-to-definition, symbol renaming, formatting, diagnostics, autocomplete -- development still ongoing.).amble -> world.ron (or worlds/*.ron) data, not code195 commits
1 commits
Rust
100.0%