Enemy tracker + full 42-float state vector #15
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Parent
#13
What to build
Implement the deterministic enemy tracker and the full 42-float normalized state vector, so the bot feeds real game state to the neural network instead of dummy values.
End-to-end slice:
setRadarTurnRate, compensating for body/gun rotation. Round start: 45°/tick sweep until firstonScannedBot. After contact: lock with overshoot — narrow oscillation scanning enemy nearly every tick. Recovery: if no scan for 2+ ticks, widen oscillation or full sweep.predicted_pos = last_pos + last_velocity × ticks_since_scan.hasFiredandlastFirePowerfrom energy delta between scans (bullet cost = firePower, so energy drop = firePower used).All state construction logic operates on plain floats/Tensors — no bot API types cross the seam. Bot event handlers extract raw values and pass them in.
Acceptance criteria
Blocked by
None — can start immediately
Resolved in
f27b023, refined infd22535andbbc9e51. EnemyState struct with dead reckoning, deterministic radar lock with overshoot recovery, enemy fire detection from energy deltas, 5-tick history window, full 42-float normalized state vector. Bearing fixed to game coords (north=0° CW) inbbc9e51.