Evo_Bot — neuroevolution gun that adapts to enemy movement #61

Closed
opened 2026-08-23 23:26:22 +02:00 by SirStone · 2 comments
Owner

Destination

Locked architecture decision for Evo_Bot: a Robocode Tank Royale bot with a modular gun system where a small ANN (evolved by GA) learns to predict enemy dodge behavior from a 30-tick sliding window, outputting a guess factor. The decision is locked when all tickets are resolved — then a separate effort builds it.

Notes

Domain: Robocode Tank Royale, Nim language. SirRoboGarage repo.
Skills: grilling, domain-modeling, prototype, research.
Architecture settled in session 2026-08-23 via 5 rounds of grilling.

Key decisions already made (see Decisions so far):

  • Gun as black-box module: feed(state) / aim() → (angle, power)
  • Gun owns its own evolution thread (parallel, never blocks inference)
  • TOPO_Gun first (fixed topology GA), NEAT_Gun deferred
  • Virtual Guns system to compare gun variants
  • Weight persistence: per-opponent + global fallback

Decisions so far

  • #66: GA spike prototype — 10-4-1 ANN evolved by truncation GA, sin(x) prediction, MSE 0.0002 in 200 gens, pipeline validated (prototypes/ga_gun_spike/ga_spike.nim)
  • #65: GA parameters — drop crossover, mutate ALL weights (σ=0.005-0.01 not 5%@0.1), pop 64-200 not 300, single elite, CMA-ES ideal at d=750
  • #63: ADR — Evo_Bot neuroevolution gun architecture locked (docs/adr/0001-neuroevolution-gun-fixed-topology-ann-evolved-by-ga.md)

Not yet specified

  • Normalization strategy for inputs (raw values vs normalized 0-1 vs standardized)
  • Exact distance-based bullet power formula
  • Virtual Guns bookkeeping — how to track virtual hit rate per gun
  • Energy management / firing discipline logic in Evo_Bot
  • NEAT_Gun design (deferred until TOPO_Gun hits ceiling)
  • Melee support (ruled 1v1 only for now, revisit if needed)

Out of scope

  • Wave surfing / bullet dodging (movement system — separate effort, #2 of the original decomposition)
  • End-to-end RL (PPO/SAC) — explored in other bots, not this one
  • Melee / multi-enemy support
## Destination Locked architecture decision for Evo_Bot: a Robocode Tank Royale bot with a modular gun system where a small ANN (evolved by GA) learns to predict enemy dodge behavior from a 30-tick sliding window, outputting a guess factor. The decision is locked when all tickets are resolved — then a separate effort builds it. ## Notes Domain: Robocode Tank Royale, Nim language. SirRoboGarage repo. Skills: grilling, domain-modeling, prototype, research. Architecture settled in session 2026-08-23 via 5 rounds of grilling. Key decisions already made (see Decisions so far): - Gun as black-box module: feed(state) / aim() → (angle, power) - Gun owns its own evolution thread (parallel, never blocks inference) - TOPO_Gun first (fixed topology GA), NEAT_Gun deferred - Virtual Guns system to compare gun variants - Weight persistence: per-opponent + global fallback ## Decisions so far - #66: GA spike prototype — 10-4-1 ANN evolved by truncation GA, sin(x) prediction, MSE 0.0002 in 200 gens, pipeline validated (`prototypes/ga_gun_spike/ga_spike.nim`) - #65: GA parameters — drop crossover, mutate ALL weights (σ=0.005-0.01 not 5%@0.1), pop 64-200 not 300, single elite, CMA-ES ideal at d=750 - #63: ADR — Evo_Bot neuroevolution gun architecture locked (`docs/adr/0001-neuroevolution-gun-fixed-topology-ann-evolved-by-ga.md`) ## Not yet specified - Normalization strategy for inputs (raw values vs normalized 0-1 vs standardized) - Exact distance-based bullet power formula - Virtual Guns bookkeeping — how to track virtual hit rate per gun - Energy management / firing discipline logic in Evo_Bot - NEAT_Gun design (deferred until TOPO_Gun hits ceiling) - Melee support (ruled 1v1 only for now, revisit if needed) ## Out of scope - Wave surfing / bullet dodging (movement system — separate effort, #2 of the original decomposition) - End-to-end RL (PPO/SAC) — explored in other bots, not this one - Melee / multi-enemy support
SirStone added the wayfinder:map label 2026-08-23 23:26:22 +02:00
Author
Owner

Child tickets

# Title Label Blocked by
#62 Define CONTEXT.md vocabulary for Evo_Bot domain wayfinder:task — (frontier)
#63 Document the locked architecture as an ADR wayfinder:task #62
#64 Build OscillatorBot sparring partner wayfinder:task — (frontier)
#65 Research: optimal GA parameters for ~750-weight neuroevolution wayfinder:research — (frontier)
#66 Prototype: GA evolution loop on toy prediction problem wayfinder:prototype #65

Frontier (unblocked, ready to start): #62, #64, #65

Note: #65 is a research ticket — should be resolved by a research subagent.

## Child tickets | # | Title | Label | Blocked by | |---|-------|-------|------------| | #62 | Define CONTEXT.md vocabulary for Evo_Bot domain | `wayfinder:task` | — (frontier) | | #63 | Document the locked architecture as an ADR | `wayfinder:task` | #62 | | #64 | Build OscillatorBot sparring partner | `wayfinder:task` | — (frontier) | | #65 | Research: optimal GA parameters for ~750-weight neuroevolution | `wayfinder:research` | — (frontier) | | #66 | Prototype: GA evolution loop on toy prediction problem | `wayfinder:prototype` | #65 | Frontier (unblocked, ready to start): #62, #64, #65 Note: #65 is a research ticket — should be resolved by a research subagent.
Author
Owner

All architecture decisions resolved. Fog graduated to map #74 (also complete). Closing.

All architecture decisions resolved. Fog graduated to map #74 (also complete). Closing.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: SirStone/SirRoboGarage#61