Split the cluttered progression_design.md and content_design.md into
separated documents by role:
- docs/balancing/rules.md - design rules and principles (moved from
progression_design.md, which is removed)
- docs/balancing/targets.md - the chosen base numbers: run shape,
factory curve, threat ladder (achieved
values adopted), combat anchors, pacing
anchors
- docs/balancing/derived.md - current tuned state of all derived
numbers, mirroring the configs
- docs/balancing/process.md - pass order, tuning discipline learned in
arena rounds 1-5, tools, next-round
checklist
- docs/balancing/history.md - chronological record: decisions, numbers
pass, calculator bugs, arena rounds,
pacing pass
- docs/balancing/README.md - index, status, open action items (moved
from progression_design.md)
content_design.md slims back down to actual content: footprint gating,
hull grids, gating matrix (module names updated to railguns), and the
production tree structure with its fiction - numbers, anchors, arena
logs, and pacing all moved to docs/balancing/. Stale references in the
config comments updated to the new locations.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
57 lines
2.9 KiB
Markdown
57 lines
2.9 KiB
Markdown
# Balancing Documentation
|
|
|
|
Everything about balancing Dota Factory, separated by role:
|
|
|
|
- **[rules.md](rules.md)** — the design rules and principles. Timeless;
|
|
changes only when the design changes.
|
|
- **[targets.md](targets.md)** — the base numbers (roots/anchors) chosen
|
|
by design. Change these first; everything else re-derives.
|
|
- **[derived.md](derived.md)** — the current tuned state of all derived
|
|
numbers, mirroring the configs. Updated whenever configs change.
|
|
- **[process.md](process.md)** — how balancing is done: the pass order,
|
|
tuning discipline, tools, and the checklist for the next round.
|
|
- **[history.md](history.md)** — chronological record of decisions,
|
|
findings, bugs, and arena rounds.
|
|
|
|
Related: game content (hull grids, footprint gating, tree design and
|
|
fiction) in [../content_design.md](../content_design.md); rules with
|
|
REQ-* ids in [../requirements.md](../requirements.md).
|
|
|
|
## Status
|
|
|
|
First full balancing round complete (2026-07-06): targets → tree →
|
|
numbers → threat-calculator parity → combat stats (arena-converged) →
|
|
pacing. Next step: full-game playtests against the run-shape targets in
|
|
`targets.md`.
|
|
|
|
## Open action items
|
|
|
|
Agreed changes that require edits to `requirements.md`, the code, or the
|
|
configs. Completed items are removed (their outcomes live in
|
|
`requirements.md`, `history.md`, and the git history).
|
|
|
|
1. **Fill unfillable schematic slots with artifacts.** With duplicates
|
|
removed, the schematic drop pool can run dry — previously unreachable.
|
|
Decision: every slot in the choice dialog that cannot be filled with a
|
|
schematic because the eligible pool is exhausted is filled with an
|
|
artifact option instead (in addition to any artifact option granted by
|
|
the regular artifact roll). A push therefore always awards a full
|
|
dialog. Update REQ-DEF-SCHEMATIC-DROP.
|
|
2. **Confirm wave scaling in playtests.** `threat_rate_formula` is the
|
|
only time-scaling axis; verify the tuned curve (see `derived.md`)
|
|
produces the intended difficulty race in real runs.
|
|
3. **Gate shortcut-recipe drops on their inputs.** Extend the assembler
|
|
recipe schematic pool eligibility in REQ-DEF-SCHEMATIC-DROP: in
|
|
addition to the existing station-level and output-item checks, all of
|
|
the recipe's input item types must be implicitly unlocked as well.
|
|
4. **Resource deposits.** Add a terrain deposit layer per the Resource
|
|
deposits rules (`rules.md`): deposit patches generated in expansion
|
|
columns (deterministic content per expansion, randomized placement
|
|
within the new columns), deposit rendering, and a miner condition (a
|
|
resource recipe is selectable only if the miner's footprint overlaps
|
|
at least one matching deposit tile). Touches REQ-BLD-MINER ("every
|
|
asteroid tile is equivalent" no longer holds),
|
|
REQ-GW-ASTEROID-EXPAND / REQ-EXP-*, `world.toml`, and `visuals.toml`.
|
|
Until this lands, quartz mines anywhere and the mid-game is
|
|
knowledge-gated only.
|