# Il Labirinto del Dojo A small tabletop game (1–2 h, 3–8 players, best at 4), plus the tooling used to design and balance it. | Document | What it is | |---|---| | [`RULES.md`](RULES.md) | The rulebook (English working draft). | | [`RULES.it.md`](RULES.it.md) | Italian rulebook (playtest edition). | | [`board/FORMAT.md`](board/FORMAT.md) | How the board is written as text. | | [`agents/plans/`](agents/plans/) | Active work plan: decisions, phases, open questions. | ## Setup Requires [uv](https://docs.astral.sh/uv/). It installs the pinned Python and all tools: ```sh uv sync ``` ## Board The board is authored as one 8x8 quadrant in `board/quadrant.txt` (tunnel links in `board/legend.toml`) and rotated into the full 16x16 board. ```sh uv run dojo board validate # check the board against the rules, print stats uv run dojo board render # print the full 16x16 board uv run dojo board render -o board/board.txt # regenerate the full board file (never edit it by hand) uv run dojo board validate --quadrant other.txt --legend other.toml # check another draft ``` `validate` exits with `0` when the board is fine (warnings allowed), `1` on rule violations, `2` when the file is malformed or missing. ## Simulation Plays many seeded games with bots and prints metrics per scenario. Every combination of the listed values is a scenario; game `i` of each scenario uses seed `--seed + i`, and the lineup rotates one seat per game. Bots: `random`, `casual`, `balanced`, `farmer`, `aggressive` (`casual` is `balanced` comparing only 6 random moves of those offered, like a person). ```sh uv run dojo sim # 4 players, current rules, 200 games uv run dojo sim --games 1000 --csv games.csv # more games; one CSV row per game uv run dojo sim --lineup casual balanced --summary-csv s.csv # one CSV row per scenario uv run dojo sim --exam c none a ac # Final Exam options in force (rules: c), combinable uv run dojo sim --players 3 4 6 8 --start 0 3 # player counts x start position uv run dojo sim --kiai 2 1 # Kiai +2 vs +1 uv run dojo sim --exam-loss 3 1 0 # stripes a failed Exam challenger loses (rules: 3) uv run dojo sim --lineup farmer aggressive,farmer # several lineups (comma-separated seats) uv run dojo sim --seed 42 --jobs 1 # other dice; single process ``` Minutes are estimated as 45 s per turn plus 30 s per Kumite. ## Italian playtest edition `edition/build.py` builds `edition/it/playtest.html`: quick reference, full rules, belt track, the board (one A4 overview and four A4 tiles to cut and join), and the 22 Nebbia cards to cut out. Open it in a browser and print on A4 at 100% scale (no "fit to page"), with background graphics on. ```sh uv run python edition/build.py ``` Sources: `RULES.it.md`, `edition/it/riepilogo.md` (quick reference), `edition/it/carte.toml` (card texts), `edition/it/style.css`, and the board files. Never edit the HTML by hand. ## Development ```sh uv run pytest # tests uv run ruff check . # lint uv run ruff format . # format uvx pyright src tests # type check ```