bbc95b6722
- Fatica costs a stripe for every Fatica walked onto; a route whose Fatica drops a Brown player below 15 no longer enters the Dojo - No Kumite in the first round: opponents are treated like meditating pawns - Board draft 2: two Fatica tolls per quadrant, Allenamento moved to the ring - Casual bot, --summary-csv, per-seat breakdown and move-options metric - Out of contention measured at 3 belts - Plan: Phase 6 baselines, decisions D34-D43 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
63 lines
2.4 KiB
Markdown
63 lines
2.4 KiB
Markdown
# 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). |
|
||
| [`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 random --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 --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.
|
||
|
||
## Development
|
||
|
||
```sh
|
||
uv run pytest # tests
|
||
uv run ruff check . # lint
|
||
uv run ruff format . # format
|
||
uvx pyright src tests # type check
|
||
```
|