feat(ModularBot): 6 guns, pattern matcher, melee modules, adversarial bots

- New guns: guess-factor (GF histogram), pattern-matcher (movement tape replay)
- New modules: minimum-risk melee movement, spinning melee radar
- New test bots: PatternMover, RandomMover, WaveSurfer
- Fixed: FeedbackEvent now carries actualX/actualY for proper GF learning
- Fixed: TM gun warmup gating + directional residuals
- Fixed: circular gun integrated formula + multi-bin omega cache
- Fixed: oscillator wall-bounce lockout
- Fixed: phantom meteor perpendicular body orientation
- 6/6 battle wins across all enemy types
This commit is contained in:
2026-09-20 00:59:53 +02:00
parent 254c7dc997
commit 1ed7797cb6
184 changed files with 80149 additions and 21 deletions
+30
View File
@@ -0,0 +1,30 @@
## Test ModularBot gun switching against OscillatorBot (moving enemy)
import common_libs/test_framework/test_framework
let result = runBattle(
@[
"/home/davide/Projects/SirRoboGarage/ModularBot_garage",
"/home/davide/Projects/SirRoboGarage/common_libs/test_framework/adversaries/OscillatorBot"
],
rounds = 5,
timeout = 120000,
maxSpeed = true
)
echo ""
echo "=== Gun Switching Test: ModularBot vs OscillatorBot ==="
echo "Total Rounds: " & $result.rounds.len
echo ""
for round in result.rounds:
echo "Round " & $round.round & ":"
for botRes in round.results:
echo " " & botRes.name & ": score=" & $botRes.score & " rank=" & $botRes.rank & " survived=" & $botRes.survived
echo ""
echo "Final Results:"
for botRes in result.results:
echo " " & botRes.name & ": totalScore=" & $botRes.totalScore & " rank=" & $botRes.rank & " firstPlaces=" & $botRes.firstPlaces
echo ""
echo "Winners: " & $result.winners