The mod directory
A mod is one directory under the workshop, and everything it is lives inside
it. This is the bundled ironlark:buttons mod, complete:
workshop/ ironlark/ # the author buttons/ # the mod: its id is ironlark:buttons mod.toml # the manifest: version, declarations, hooks protocol.proto # what it announces, declared on the payload types protocol.pb # the compiled schema the host reads button.glb # an archetype's scene press.wav # a declared sound buttons_server.wasm # the built server half server/ # that half's source, a Rust crateOnly mod.toml is mandatory — it is what marks the directory as a mod. A map
mod ships a map.toml and a scene and no code at all; a code-only mod ships
no assets. The pieces:
- Identity — the id is the install path,
author:mod, and why a manifest never declares its own name. - The manifest — every key
mod.tomlmay carry, with the refusals each mistake earns. - Declarations — the six kinds of name a mod publishes, which file declares each, and how another mod borrows one.
- The protocol schema —
protocol.proto: signals and requests declared on the payload types themselves. - Archetypes — publishing something that can exist in the world, and the flags that make it pressable, touchable or walk-through.
- Dependencies —
[needs], version ranges, and how the load order is derived from them.
The components are build output, produced by
cargo build --release --target wasm32-wasip2 and named
<mod>_server.wasm / <mod>_client.wasm (see
Realms and lifecycle). During development the host also
accepts them straight from the crate’s target/ directory, so a plain build
needs no copy step — and warns if a staged copy is shadowing a newer build
(see Troubleshooting).