A small engine. Everything else is Lua.
Tiamat is an engine, not a game. It ships the mechanisms, and all of the content is mods. It is kept deliberately small, finer-grained than a block world, and identical on every machine.
What the engine is
An experimental multiplayer voxel engine built around subdivided voxels. The mods in game/ are reference implementations and test fixtures that prove each mechanism works through the public API. They are not a shipped game. A default game comes later, built as mods on top of a finished engine.
How it runs
The headless server is the game. The client is a viewer onto it. That leaves exactly one simulation code path, so nothing can drift out of sync between singleplayer and multiplayer.
Server
the game · headlessprotocol
Client
the viewerCrate map
Four crates, with strict rules about what each may depend on.
Two folders sit outside the workspace: game/ holds the reference mods and test fixtures, and api/ holds the MIT-licensed stubs and docs for modders.
Finer than a block
One block is one cubic yard, split into a 3×3×3 grid of 27 units. That holds everywhere, with no special cases for partial blocks. Quantities are stored in units and shown as blocks plus nodes.
Determinism
The same seed produces bit-identical worlds on Linux, Windows and macOS. A cross-platform hash check in CI enforces it on every push.
This isn’t done by abandoning floating point for fixed point. Instead, simulation code only uses the f32 and f64 operations that Rust guarantees match IEEE 754-2008 exactly. A clippy lint enforces the ban.
Banned in simulation
Free to use them
Platforms
32-bit x86 is left out on purpose. Its x87 registers compute at 80-bit precision, so results round differently than on SSE2 or NEON and the determinism check can’t pass.
ALSA only plays sound. Every byte a server sends is decoded by Symphonia, in pure Rust.
Build from source
Install Rust with rustup. The exact toolchain is pinned in rust-toolchain.toml, and rustup picks it up automatically.
System dependencies
Windows and macOS need nothing extra. On Linux, the client needs ALSA’s headers. The server needs none on any platform.
Build and test
Play
With no config file, this starts a server in the same process, connects to it over loopback and opens a window.
Run a server or join one
Start a dedicated server with the example config. To join someone else’s server, or change view distance, field of view and controls, copy client.example.toml to client.toml. The file documents each setting.
Stack
Languages in the repository, as reported by GitHub in September 2026.
License & charter
The charter
CLAUDE.md is the binding architecture charter. Read it before proposing anything structural. It covers:
The build plan lives in voxel-prompts/.
