reikhelm/deepfall
Parley Hatch 277c158378 feat(deepfall): board-game design + balance-by-bot simulator
DEEPFALL: a tabletop game mashing up 9 loved games (SmashUp, Dragon
Rampage, Blood Rage, Catan, EverQuest, Daggerfall, Eye of the Beholder,
Quarriors, SmallWorld). Core fusion = SmallWorld decline + Blood Rage
glorious death -> three exits (Cash Out / Press On / Worthy End) under a
rising Maw that collapses a reikhelm dungeon floor-by-floor.

- deepfall-core: pure deterministic engine (vendored ChaCha8, 11 tests)
- deepfall-sim: balance-by-bot sweeps -> CSV/JSON
- analysis/analyze.py: stdlib ASCII heatmap (no deps)
- DESIGN.md (rules + post-critique revisions), FINDINGS.md (9-iteration
  balance journey), README.md
- reikhelm-core/examples/sample_dungeon.rs: dumps a real generated board

Method: adversarial design critics -> build -> simulate -> tune. 9
iterations compressed combo spread 77.8 -> 32.5 pts (all 36 combos
viable). Fixed deep-content lockout (value rises with the Maw), the
multi-collapse feel-bad (1 collapse/round cap; feel-bad now 0.00/game),
and dead combos. Open finding: Cash-Out and Worthy-End are substitutes
for a glory-maximizing bot.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-18 22:49:33 -06:00
..
analysis feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
configs feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
deepfall-core feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
deepfall-sim feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
.gitignore feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
Cargo.lock feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
Cargo.toml feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
DESIGN.md feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
FINDINGS.md feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00
README.md feat(deepfall): board-game design + balance-by-bot simulator 2026-06-18 22:49:33 -06:00

DEEPFALL

Reikhelm, the deep hold, is sinking into the Maw. Delve fast, hold ground, and know when to die. The deepest grave is the brightest glory.

A tabletop game design + a balance-by-bot simulator, built as a self-contained experiment in the reikhelm repo (sibling to combat/). It mashes up nine games the designer loves and tries to keep their best parts while filing off their worst.

The dungeon you delve is not invented — it is a real reikhelm dungeon (reikhelm-core's room/theme/graph model), so a physical printing could ship seeded, reproducible boards straight out of the generator.


The one-paragraph pitch

You are rival delve-companies racing into a collapsing megadungeon. Each company is a Lineage × Calling smash-up (your race × your class/faction) that defines a bag of dice you build mid-game. You push your luck rolling that bag to descend, fight, crack vaults, and seize rooms — which score for whoever holds them when their floor collapses. The Maw devours the dungeon from the bottom up, so the richest deep rooms die first and the clock is brutal. Every party faces one decision, over and over: cash out (send them "to ground" — they keep their territory as silent dead and you draft a fresh party), press on (greedy, keep the engine, risk the Maw), or go for a Worthy End (dive suicidally deep and let the Maw take you in a blaze for the single biggest payout in the game). Most glory wins.

The nine games, and what we took / what we fixed

Game What we kept What we filed off
Smash Up Two-half faction mashup; control rooms (bases) that score at a breakpoint The "take-that" hand hate & swing — conflict here is positional, never "discard your stuff"
Small World Race×Power combo drafting; the Decline mechanic (its single best idea) Crowded-map turn-order tyranny — the Maw, not opponents, is the pressure
Blood Rage Card-drafted strategy per age; escalating doom (Ragnarök); dying is glorious Coin-flip combat reveals — outcomes here are dice you build and mitigate
Quarriors Dice-bag building; in-game engine growth; push-your-luck "Dice gods hate me" whiffs — the Decline safety valve + Faith mitigation soften variance
Dragon Rampage Push-your-luck escape tension; one escalating shared threat Player elimination — nobody is ever out; a dead party becomes glory
Catan Tile production when you hold ground; spatial placement The robber feel-bad & resource starvation — the Maw is the only "robber," and it's fair to all
EverQuest Holy-trinity party comp (Steel/Cunning/Faith); faction reputation; loot chase The grind & downtime — turns are fast, simultaneous-ish, no camping
Daggerfall Custom class via Lineage×Calling with advantages and disadvantages; procedural world; faction web Sprawl & getting lost — bounded floors, a shared revealed board
Eye of the Beholder Grid dungeon of room tiles; party of four; mechanism puzzles gate the best loot Mapping tedium — the board is shared and revealed, not memorized

The load-bearing fusion: Small World's Decline + Blood Rage's glorious death. That one combination kills the runaway leader, abolishes player elimination, and inverts loss-aversion — three of these games' worst problems, solved at once.

Layout (mirrors combat/)

deepfall/
  README.md            — this file
  DESIGN.md            — the full rules + the simulation model (the spec the sim implements)
  Cargo.toml           — self-contained workspace (does not touch the root reikhelm graph)
  configs/default.json — the tunable balance table; editing it IS the balance act
  deepfall-core/       — pure, deterministic, headless game engine (ChaCha8, no I/O)
  deepfall-sim/        — batch harness: runs sweeps → CSV/JSON
  analysis/            — Python (pandas/matplotlib) over the exported data

Build & run

cd deepfall
cargo test                                  # engine determinism + rules tests
cargo run -p deepfall-sim -- --out out      # run the balance sweeps → out/*.csv, out/*.json
python analysis/analyze.py out              # (optional) plots → out/plots/*.png

What the simulator is for

It is not the game — it is a truth serum for the design. Bots play the three exit strategies (Cash-Out, Press-On, Worthy-End) plus an adaptive Balanced bot, across all 36 Lineage×Calling combos, thousands of seeded games. We read the data to answer the only questions that matter for a design like this:

  1. Is there a dominant strategy? (We want a rock-paper-scissors band, not a king.)
  2. Are any Lineage×Calling combos broken? (Asymmetry should be fair, not solved.)
  3. Does the Maw end the game in a satisfying window? (~814 rounds.)
  4. Is it a runaway? (Margin of victory should be tight.)
  5. How often does a party die for nothing? (The feel-bad rate — keep it low.)
  6. Is the Decline decision real? (Do winners vary their cash-out timing, or is there one provably-correct moment?)

See DESIGN.md §"Simulation model" for exactly how the sim abstracts the rules, and the committed sweep notes for what the data actually said.