j147 results: 180-battle live A/B on the frozen 15-opponent panel
Within-mover references (the only comparison that isolates the knob): tfil_lag1 -0.04 wins/run, strafe_lag1 +0.18 wins/run, both far under the reported MDEs (0.33 / 0.41) -> NOT distinguishable, so TR_FIRE_LAG stays default 0. Incoming hit rate also unmoved (+0.94 / +0.33 pp). The one significant result is the mover (strafe_lag1 vs tfil_off +0.38 wins/run p=0.0386, hit rate -4.67pp p=0.0074), which is the known strafe-over-tfil gap and exactly why the within-mover reference was pre-registered. Also a cosmetic no-op refactor of the two spawn sites (compute velX/velY once; bit-identical, and it keeps the default-parity claim exact).
This commit is contained in:
@@ -433,16 +433,18 @@ proc spawnTrackedWave(m: var TFILModule, ws: WorldState, ei: EnemyInfo,
|
||||
m.bullets.del(0) # ponytail: drop oldest; fine for 20-bullet cap
|
||||
# j147: back-date the shot by the measured detection lag (`TR_FIRE_LAG`,
|
||||
# default 0 = untouched). See `movement_harness/fire_tracker.nim`.
|
||||
let vx = speed * cos(heading)
|
||||
let vy = speed * sin(heading)
|
||||
var gx = ei.x
|
||||
var gy = ei.y
|
||||
if FireLag > 0:
|
||||
gx += (speed * cos(heading)) * FireLag.float
|
||||
gy += (speed * sin(heading)) * FireLag.float
|
||||
gx += vx * FireLag.float
|
||||
gy += vy * FireLag.float
|
||||
m.bullets.add TrackedBullet(
|
||||
originX: ei.x, originY: ei.y,
|
||||
x: gx, y: gy,
|
||||
velX: speed * cos(heading),
|
||||
velY: speed * sin(heading),
|
||||
velX: vx,
|
||||
velY: vy,
|
||||
power: power,
|
||||
alive: true,
|
||||
age: 0)
|
||||
|
||||
Reference in New Issue
Block a user