Files
dota_factory/docs/balancing
Malte Langkabel a93f7c3897 Arena round 6: revert railgun_m damage, correct playtest record
Arena re-run after the playtest-1 adjustments:

- spam-cruiser arena landed at par (default +9%) - the range buff alone
  priced out the small-gun-spam meta, so revert railgun_m damage 16 -> 14
  (range stays 80). The buff had regressed drone-swarm-vs-cruisers to
  +47%, largely via a hit-count breakpoint (60 HP drone: 5 hits at
  14 dmg, 4 at 16).
- battleship +30% / dreadnought +29% vs pure railgun_s fleets accepted
  as reach-doctrine texture (the l gun's 130 m standoff working as
  intended); repair kept at 4 HP/s (below par in-fight is the correct
  price for free between-wave sustain).

Also corrects the playtest-1 record: it was two FULL playthroughs won in
~40 min each with cruisers only (not two pushes) - a 2.5-3x run-length
gap. Pacing knobs deliberately deferred to playtest 2, since those runs
predate the repair nerf and the l-gun siege range.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
2026-07-06 22:10:06 +02:00
..

Balancing Documentation

Everything about balancing Dota Factory, separated by role:

  • rules.md — the design rules and principles. Timeless; changes only when the design changes.
  • targets.md — the base numbers (roots/anchors) chosen by design. Change these first; everything else re-derives.
  • derived.md — the current tuned state of all derived numbers, mirroring the configs. Updated whenever configs change.
  • process.md — how balancing is done: the pass order, tuning discipline, tools, and the checklist for the next round.
  • 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; rules with REQ-* ids in ../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 (two full ~40-min wins, cruisers only) found the railgun_s-spam-cruiser meta, confirmed repair as overpowered, and exposed a 2.53× run-length gap; combat stats adjusted and re-checked in arena round 6 (see history.md). Next: playtest 2 with the new stats — pacing knobs (station scaling, threat rate, win pacing) wait for its result.

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.