Real guns, real numbers
The new test suite's kill ledger came back with a number nobody liked: 79% of every plane shot down in the air theater died to ground fire. Not to a rival pilot, not to a manned 88 — to the AI guns. The fix went through two wrong theories and one rejected lever before it turned out to be sitting in the history book: our guns weren't modeling the guns.
The number, twice
Two independent browser sessions read 78% and 79% ground-fire share — 274 flak hits in one six-minute war, fifteen of nineteen kills. A straight-line pilot at altitude was deleted inside thirty seconds, both runs. The 88s are supposed to be terrain you respect: airspace with a price on it. They were the reaper.
Feelings converted, a server-side probe went in
(FLAK_BALANCE=1, the pattern every balance pass here
follows): fifteen sim-minutes of the real furball, every kill
classified by killer. It agreed — and added the damning ratio:
the guns out-scored the entire plane-vs-plane war seven to one.
Two wrong theories, killed by columns
Theory one: the mercy wing. We'd just shipped a quota of slow, flat, never-jinking greenhorns — surely the flak was farming the gift kills. The probe split flak deaths per alive-minute by victim class: greenhorns 0.22, regulars 0.24. Identical. Disabling the mercy wing entirely raised the share. Theory dead.
Theory two: the 88s. The first bake-off halved the flak88's damage, doubled its spread, stretched its pauses, cut its range — and the share didn't move. Halving the shell's damage didn't even dent damage-per-minute, which was the tell: the damage wasn't coming from that config block. One more column in the probe — kills split by gun kind — ended the mystery: the anchored fleet's Bofors mounts were scoring 106 of 138 flak kills. The 88 rings managed 32. A whole bake-off had tuned the wrong battery.
The rejected fix
The first shipped candidate was a clever lever with a shipped precedent: AI-worked flak doing reduced damage to bots only, the mirror of the PvE pair that makes a human's rounds bite harder. The probe loved it — plane-vs-plane kills tripled. Design review killed it anyway, and rightly: guns that secretly pull their punches against half the sky break the fiction, and they don't make the game any fairer for the person actually holding the stick. The complaint was "the flak is too strong," not "the flak is too strong against bots." Wrong lever. Reverted.
What the history book said
So instead of inventing a knob, we looked up the two guns we claim to model — and found the embarrassment. The real 8.8 cm Flak 18/36/37 fired 15–20 aimed rounds a minute at 820 m/s — a slow, deliberate, devastating gun. Ours fired 120 rounds a minute at 400 m/s: a machine gun throwing slow plinks. The real Bofors 40 mm L/60 ran 120 rpm cyclic in four-round clips at ~880 m/s, and with its WWII directors its effective anti-air range was about 1,400 m. Ours out-ranged and out-hit our own 88 per round — exactly backwards. Even the traverse was fantasy: our 88 slewed at 63°/s; the real gun managed a fraction of that, which is precisely why low fast movers were the Bofors' job and steady targets were the 88's.
The retune just writes those numbers in. The 88: one aimed 40-damage shell every three seconds at 820 m/s — a 9.2 kg burst that near-kills what it touches — with a realistic dead zone inside 500 m, historical dispersion (most shells miss; the ones that don't are an event), and a slew that can't chase a strafing run. The Bofors: four-round clips, ~70 rpm sustained, light 5-damage shells at 860 m/s, reaching its historical ~1,400 m — which its old slow round already secretly obeyed, since it expired mid-flight at 1,376 m. The layered-AA doctrine fell out for free: the 88 owns the steady and the high, the Bofors owns the close, and between them there is now sky a pilot can actually use.
The probe, before and after, five seeds:
flak share of all kills: 81% → 53% · flak deaths per bot-minute: 0.27 → 0.11 · flak damage/min: 1600 → 620 · 88 hits per kill: ~7 plinks → ~2 hammer blows · guns destroyed by planes: 138 → 170
The last pair is the feel of the change in two numbers: each 88 hit finally matters, and with less of the sky dying to the mounts, more planes live long enough to strafe the guns back.
Confessions
Two, in the tradition of this dev log. The first bake-off — five variants, forty-five sim-minutes of careful measurement — tuned a config block that owned less than a quarter of the problem, and the null result sat there looking like "the knobs don't work" until one extra column turned it into the diagnosis. And the first fix that shipped was the clever one instead of the honest one; it took a design review to say what the history book had been saying all along. When a gun is wrong, don't teach it to lie — look up what the real one did.