Playtest 1 (first two pushes, ~40 min game time — pacing on target) found the railgun_s-spam-cruiser meta and confirmed the repair tool as overpowered (second signal after the persistent arena escort margin): - repair_tool 9 -> 4 HP/s: the arena only prices in-fight sustain; real runs add free between-wave top-offs across the whole swarm - railgun_l range 100 -> 130: now outranges stations (120), buying the siege role the capital ladder promises - railgun_m 14 -> 16 dmg, range 70 -> 80: concentration tax softened so the ladder reads "pay some DPS efficiency for reach", not "strictly worse" - new tracked arena: railgun_s-spam cruisers vs default cruisers Module costs untouched, so all threat values stay valid. Docs updated (derived.md, history.md playtest record, README status). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
60 lines
3.1 KiB
Markdown
60 lines
3.1 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. Playtesting in progress: playtest 1 (first two pushes) found the
|
|
railgun_s-spam-cruiser meta and confirmed repair as overpowered — combat
|
|
stats adjusted, see `history.md`. Next: re-run the arena suite against
|
|
the adjustments, then continue 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.
|