Combat stats round 3 from arena round 2 margins

Round 2 (with the new EHP-margin logging): mirrors healthy and the
round-1 side bias was noise; drones-vs-cruisers (10%) and
mixed-vs-battlecruisers (14%) near parity; battleship over at +33%
while dreadnought under at -37%; glass-vs-armored narrowed to 11%
(watch); repair escort fair at 11%; two-to-one decisive; the 3x swarm
now cracks the station set at 13%.

Round-3 knobs: weapon_stabilizer range multiplier 1.5 -> 1.3 (range is
the strongest stat under the orbit AI, and the stabilized battleship
was the one loadout still overperforming), plus per-hull HP trims with
the 15 HP/threat anchor demoted to a prior and per-hull HP documented
as the empirical trim knob: battlecruiser 2700 -> 2500, battleship
7500 -> 7000, dreadnought/carrier 15500 -> 19000.

Action items: mirror-bias and EHP-logging items resolved (the latter
implemented upstream); new item to verify the arena end condition seen
idling in round 1 with all ships dead.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DyCu8vwChKMbLJQ3xosYEN
This commit is contained in:
2026-07-04 07:34:47 +02:00
parent d9e7dd0fe8
commit f822047b4e
4 changed files with 36 additions and 20 deletions

View File

@@ -222,7 +222,7 @@ fill_color = "#FF4040"
glyph = "Ws" glyph = "Ws"
[module.weapon] [module.weapon]
multiplied_attack_range_m = 1.5 multiplied_attack_range_m = 1.3
multiplied_attack_rate_hz = 0.8 multiplied_attack_rate_hz = 0.8
# ----------------------------------------------------------------------------- # -----------------------------------------------------------------------------

View File

@@ -179,7 +179,7 @@ materials = [{item = "battlecruiser_hull", amount = 1}]
production_time_seconds = 5 production_time_seconds = 5
[ship.health] [ship.health]
hp = 2700 hp = 2500
[ship.movement] [ship.movement]
speed_mps = 20 speed_mps = 20
@@ -222,7 +222,7 @@ materials = [{item = "battleship_hull", amount = 1}]
production_time_seconds = 6 production_time_seconds = 6
[ship.health] [ship.health]
hp = 7500 hp = 7000
[ship.movement] [ship.movement]
speed_mps = 15 speed_mps = 15
@@ -267,7 +267,7 @@ materials = [{item = "dreadnought_hull", amount = 1}]
production_time_seconds = 8 production_time_seconds = 8
[ship.health] [ship.health]
hp = 15500 hp = 19000
[ship.movement] [ship.movement]
speed_mps = 10 speed_mps = 10
@@ -308,7 +308,7 @@ materials = [{item = "carrier_hull", amount = 1}]
production_time_seconds = 8 production_time_seconds = 8
[ship.health] [ship.health]
hp = 15500 hp = 19000
[ship.movement] [ship.movement]
speed_mps = 10 speed_mps = 10

View File

@@ -455,8 +455,12 @@ verifies it empirically. Change the anchors first, re-derive stats second.
survivability, range, no losses-to-attrition of own DPS) is worth survivability, range, no losses-to-attrition of own DPS) is worth
paying for, so bigger guns get less raw DPS per threat. paying for, so bigger guns get less raw DPS per threat.
- **Hull HP = 15 per threat of hull contribution** (incl. ship base - **Hull HP = 15 per threat of hull contribution** (incl. ship base
time): drone 60, frigate 300, destroyer 550, cruiser 1500, time) as the *prior*; per-hull HP is the empirical trim knob for
battlecruiser 2700, battleship 7500, dreadnought/carrier 15500. 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-2 trims: drone 60, frigate 300, destroyer 550,
cruiser 1500, battlecruiser 2500, battleship 7000,
dreadnought/carrier 19000.
- **Armor HP ≈ 31 per threat** — a strong premium over hull HP (15) - **Armor HP ≈ 31 per threat** — a strong premium over hull HP (15)
because armor is pure HP with no capability, and fights snowball: because armor is pure HP with no capability, and fights snowball:
killing enemies removes their DPS, while surviving merely delays — killing enemies removes their DPS, while surviving merely delays —
@@ -482,7 +486,10 @@ verifies it empirically. Change the anchors first, re-derive stats second.
- **Weapon modifiers are capital economy:** ×1.2 damage at 22.5 threat - **Weapon modifiers are capital economy:** ×1.2 damage at 22.5 threat
beats adding a gun once a ship carries more than ~68 threat of weapons beats adding a gun once a ship carries more than ~68 threat of weapons
— so modifiers pay off on gun-heavy big hulls and are a waste on small — so modifiers pay off on gun-heavy big hulls and are a waste on small
ones. Kept at ×1.2/×1.2/(×1.5 range, ×0.8 rate) deliberately. ones. Damage/rate kept at ×1.2; the stabilizer's range multiplier was
cut ×1.5 → ×1.3 after round 2 — range is the strongest stat in the
orbit-AI's hands (free approach fire), and the stabilized battleship
was the one loadout still overperforming.
- **Stations:** a fresh player station (3000 HP, 25 dmg × 1 Hz, - **Stations:** a fresh player station (3000 HP, 25 dmg × 1 Hz,
range 120) holds one early parity wave unaided; the enemy station at range 120) holds one early parity wave unaided; the enemy station at
level 0 matches it exactly and scales per push level level 0 matches it exactly and scales per push level
@@ -507,6 +514,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 still win flawlessly in round 2, the range ladder (kiting) is the next
suspect, ahead of further DPS cuts. suspect, ahead of further DPS cuts.
**Arena round 2 results (2026-07-04, with EHP-margin logging):** the
mirror "bias" was noise — repeated runs split randomly, and winners
finish at 57% EHP (near-mutual annihilation, healthy). Drones vs
cruisers 10% and mixed vs battlecruisers 14% — near parity. The two
capital fights diverged: battleship beat frigates at +33% while the
dreadnought lost to destroyers at 37% — same guns, so the difference
is the destroyers carrying the buffed armor plus the battleship's
stabilizer putting all its guns at 75150 m against 50 m opponents.
Glass vs armored narrowed to 11% (watch; if it persists, armor
1000→1200). Repair escort 11% — fair. Two-to-one decisive at 80%;
station assault cracked by the 3× swarm at 13% (stations strong but
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.
## Balancing targets (first pass, July 2026) ## Balancing targets (first pass, July 2026)
The six root numbers for the balancing pass. Every derived value (threat The six root numbers for the balancing pass. Every derived value (threat

View File

@@ -373,15 +373,9 @@ in `requirements.md` and the git history). Still open:
one matching deposit tile). Touches REQ-BLD-MINER ("every asteroid one matching deposit tile). Touches REQ-BLD-MINER ("every asteroid
tile is equivalent" no longer holds), REQ-GW-ASTEROID-EXPAND / tile is equivalent" no longer holds), REQ-GW-ASTEROID-EXPAND /
REQ-EXP-*, `world.toml`, and `visuals.toml`. REQ-EXP-*, `world.toml`, and `visuals.toml`.
6. **Investigate team-1 bias in balancing arenas.** In arena round 1 6. **Verify the balancing arena end condition.** Arena round 1's
(July 2026), team 1 won all three mirror matches with large margins station-assault log showed the arena "(running)" with every ship on
(8/20, 3/6, 1/2 survivors). Re-run mirrors repeatedly; if team 1 both sides destroyed — per REQ-BAL-SIM-END the station-less team
wins consistently, find and fix the asymmetry (spawn geometry, tick should have lost the moment its last ship died. Round 2 ended
processing order, target-selection tie-breaking). Mirror matches correctly, so it may only be a log-snapshot artifact; confirm, and
must be statistically symmetric or every arena result carries a fix the end condition if it can genuinely idle in that state.
side-dependent error.
7. **Log remaining HP in the balancing arena results.** Win/loss alone
hides the margin ("1/1 battleship" can mean 95% or 5% HP left). Add
the surviving entities' remaining HP fraction (or a per-team total
EHP percentage) to the arena end state, so equal-threat matchups can
be tuned toward near-draws quantitatively.