continue first full balancing round

This commit is contained in:
2026-07-08 20:33:11 +02:00
parent e32d384c99
commit fc622670d2
6 changed files with 115 additions and 36 deletions

View File

@@ -458,8 +458,8 @@ verifies it empirically. Change the anchors first, re-derive stats second.
time) as the *prior*; per-hull HP is the empirical trim knob for
arena results (guns are shared across many hulls, so gun changes move
many matchups at once — hull HP moves exactly one). Current values
after round-4 trims: drone 60, frigate 300, destroyer 550,
cruiser 1500, battlecruiser 2200, battleship 6300,
after round-5 trims: drone 60, frigate 300, destroyer 550,
cruiser 1500, battlecruiser 2400, battleship 6300,
dreadnought/carrier 24000. (The capital hulls sit well above the
15/threat prior while their guns sit below the DPS prior — the arena
consistently prices big ships as tanks with taxed guns.)
@@ -473,10 +473,10 @@ verifies it empirically. Change the anchors first, re-derive stats second.
- **TTK check:** a mirror cruiser duel (51 DPS vs 2140 EHP) lasts ~42 s —
inside the 3060 s parity-fight band implied by the 25-ship fleet
target. Capital mirrors run longer (~90 s), deliberately.
- **Repair ≈ 1 HP/s per threat:** repair_tool heals 12 HP × 1 Hz at 13
threat (arena round 1: at 2 HP/s-per-threat the escorted team won
flawlessly — in-combat sustain effectively removes enemy DPS and must
be priced like DPS, not like HP). Salvager: collection range 60 (was
- **Repair ≈ 0.7 HP/s per threat:** repair_tool heals 9 HP × 1 Hz at 13
threat (nerfed 25 → 12 → 9: in-combat sustain effectively removes
enemy DPS and must be priced like DPS, not like HP — the escorted
team held a persistent +24% at 12). Salvager: collection range 60 (was
a nonsensical 500, beyond any sensor), cargo 20, 0.5 collections/s.
`scrap_despawn_seconds` raised 30 → 120: a capital kill drops
hundreds of scrap collected one per cycle, so 30 s despawned nearly
@@ -517,6 +517,21 @@ DPS (17→14, 70→52 damage), armor 640→1000, repair 25→12, station range
still win flawlessly in round 2, the range ladder (kiting) is the next
suspect, ahead of further DPS cuts.
**Arena round 5 results (2026-07-04, with fight durations) — combat
pass converged:** durations validate the TTK anchor: drone mirror
22.7 s, cruiser mirror 71.2 s, battleship mirror 94.6 s, most fights
in the 2272 s band; the destroyers-vs-dreadnought slugfest is the
outlier at 214 s (extreme tank vs. chip damage — acceptable for the
extreme case). Converged: mirrors 510%, swarm vs cruisers +15%,
frigates vs battleship dropped to +13% on its own (confirming the
noise-floor read — now inside band anyway), dreadnought at +3% knife
edge, glass vs armored +10%, two-to-one 78%, station assault stable at
44%. Two two-round signals actioned in round 6: mixed beat
battlecruisers again (+20%, +18%) → battlecruiser hull 2200→2400;
repair escort held +24% twice with all frigates surviving →
repair_amount 12→9. Everything else is frozen; further refinement
moves to real-game playtests.
**Arena round 4 results (2026-07-04) and convergence policy:** mirrors
at 03%; swarm vs cruisers +7%; glass vs armored resolved at +3% for
armored (armor 1200 confirmed after four rounds of signal). Noise
@@ -565,6 +580,65 @@ breakable). Round-3 knob changes: stabilizer range ×1.5→×1.3, and
per-hull HP trims — battlecruiser 2700→2500, battleship 7500→7000,
dreadnought/carrier 15500→19000.
### Pacing pass — first values
The mapping between station levels and boss cycles: at the intended
push cadence (first set around cycle 23, roughly one per cycle from
mid on), the destroyed set's level is reached around cycle +2. So
level 2 ≈ the mid boundary, level 6 ≈ mid-late, levels 89 ≈ capitals
with enough cycles left to ramp voidsteel production before late.
**Starting set** (`unlock_at_station_level = -1`), per the starting-set
rule (exactly enough to reach the first push): drone, frigate,
railgun_s, salvager. Note: the building_block recipe must carry an
explicit `-1` — building blocks appear in no schematic's materials, so
implicit unlocking can never reach it (fixed in this pass; it was
silently locked).
**Unlock ladder** (level → unlocks; ← marks `unlock_requires`):
| level | ships | modules | recipes |
|---|---|---|---|
| 0 | destroyer | repair_tool, armor_plates | |
| 1 | | maneuvering_thrusters, sensor_booster | shortcut_steel_plate |
| 2 | cruiser | railgun_m, afterburner | shortcut_control_chip, shortcut_hardened_steel |
| 3 | | weapon_stabilizer | |
| 4 | battlecruiser ← cruiser | weapon_primer, weapon_upgrade | |
| 5 | | drone_bay | |
| 6 | battleship ← battlecruiser | railgun_l ← railgun_m | |
| 8 | dreadnought ← battleship | | |
| 9 | carrier ← battleship | drone_hangar | |
Level 0's pool has exactly three entries, so the first push offers a
full dialog with no artifacts competing. Level 2 is the quartz gate:
cruiser and railgun_m are the first schematics whose chains reach
quartz (the shortcut recipes' outputs only become implicitly unlocked
alongside them, so they cannot drop early).
**Threat rate** `2*x + 0.15*x*x`, tuned against the factory-size curve
with roughly half the player's output assumed military:
| cycle x | rate (threat/s) | player military (≈ curve/2) |
|---|---|---|
| 2 | 4.6 | ~12 |
| 6 | 17.4 | ~30 |
| 15 | 63.8 | ~60 |
| 20 | 100 | ~75 |
| 24 | 134 | — |
Below the player early, crossing at the late boundary, overwhelming by
~24 — the endless-race shape from the progression rules. Typical wave
at x=6 (30 s gap): ~520 threat ≈ two cruisers plus escorts; boss at
x=15: ~3800 threat ≈ two and a half dreadnoughts.
**Economy**: `starting_building_blocks` 1000 → 200 (minimal block loop
+ first shipyard ≈ 150, plus beginner slack); expansion cost 200 → 400
flat (placeholder until the escalating formula, action item 4);
`artifact_win_count` 3 → 5 with chance `0.05*x`: ~1518 pushes in a
winning run offer ~7 artifact options cumulatively, so winning takes
choosing the artifact over a schematic five times — a real decision
each time, and the win lands in the cycle 2024 target window.
## Balancing targets (first pass, July 2026)
The six root numbers for the balancing pass. Every derived value (threat

View File

@@ -373,9 +373,3 @@ in `requirements.md` and the git history). Still open:
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`.
6. **Verify the balancing arena end condition.** Arena round 1's
station-assault log showed the arena "(running)" with every ship on
both sides destroyed — per REQ-BAL-SIM-END the station-less team
should have lost the moment its last ship died. Round 2 ended
correctly, so it may only be a log-snapshot artifact; confirm, and
fix the end condition if it can genuinely idle in that state.