Dungeons that always fit.
Tapiti digs connected, validated floors from a seed: rooms of five shapes, corridors with real clearance, same map every time.
Seed 26
- median time to dig a validated level 5 floor, measured on this server
- 41 ms
- floors passed every check, over seeds 1 to 60
- 60 of 60
- seeds, each one always the same floor
- 4.3 billion
Rooms in five shapes, doors that line up
Rectangles, discs, octagons, L-shapes and truncated stars are fitted into the grid. Doors sit on straight stretches of wall, so every corridor leaves a room square to it.
- rectangle
- disc
- octagon
- L-shape
- truncated star
A validator that can say no
Five checks run on every floor: connectivity, clearances, doors, corridor geometry, and the distance from entrance to stairs. A floor that fails is thrown away and dug again from a derived seed.
Seed 17, first draw, rejected:
V5 the stairs are 3 hops from the start (least 4)How a floor is dug
A seed
One number and a set of parameters feed a small deterministic generator. The same inputs give the same floor, on the desktop or in the browser.
Chambers
Rooms are fitted block by block, shape by shape, with the weights and caps you set.
Tunnels
Doors first, then corridors with at most a few bends, branching into T and X junctions, always a clear distance from the rooms they do not join.
Daylight
The validator opens the door and looks. Only a floor that passes every check is handed back.
Run it your way
- Desktop app
cargo run --release- In the browser
- Open the lab
- Rust crate
tapiti-core = { git = "https://github.com/Lucas-BRT/tapiti" }- Docker
docker compose -f compose.local.yml up --build