c034eb9d25
- fix(ModularBot): onBulletHitBot → onBulletHit (real hits were never tracked) - feat(ModularBot): per-round gun stats dump to /tmp/gun_stats.jsonl - feat(ModularBot): gun selection counter per round - fix(tests): adversary paths _garage suffix removed from 7 test files - feat(tests): test_gauntlet_5bots.nim — 10-round gauntlet vs all 5 adversaries - feat(tests): analyze_gun_stats.nim — JSONL parser for gun performance tables - docs: gun_rack_analysis.md — full per-gun performance report - docs: gun_rack_summary.md — TL;DR verdict table (keep/drop/tune) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
28 lines
1.2 KiB
Nim
28 lines
1.2 KiB
Nim
import std/[os, strformat]
|
|
import common_libs/test_framework/test_framework
|
|
|
|
const
|
|
modularBotDir = "/home/davide/Projects/SirRoboGarage/ModularBot_garage"
|
|
samplesDir = "/home/davide/Downloads/robocode-tankroyale/sample-bots-nim-linux-1.0.7"
|
|
crazy = samplesDir / "Crazy"
|
|
waveSurfer = "/home/davide/Projects/SirRoboGarage/common_libs/test_framework/adversaries/WaveSurfer"
|
|
patternMover = "/home/davide/Projects/SirRoboGarage/common_libs/test_framework/adversaries/PatternMover"
|
|
|
|
const serverJar = "/home/davide/Projects/tank-royale/server/build/libs/robocode-tankroyale-server-0.35.5-all.jar"
|
|
const runnerJar = "/home/davide/Projects/tank-royale/runner/examples/lib/robocode-tankroyale-runner.jar"
|
|
|
|
if not fileExists(serverJar) or not fileExists(runnerJar):
|
|
echo "Skipping: Tank Royale JARs not found"
|
|
quit(0)
|
|
|
|
proc battle(name: string, dir: string) =
|
|
echo fmt"--- ModularBot vs {name} (10 rounds) ---"
|
|
let r = runBattle(@[modularBotDir, dir], rounds = 10, timeout = 300000, maxSpeed = true)
|
|
for result in r.results:
|
|
echo fmt" {result.name}: score={result.totalScore} rank={result.rank}"
|
|
echo ""
|
|
|
|
battle("Crazy", crazy)
|
|
battle("WaveSurfer", waveSurfer)
|
|
battle("PatternMover", patternMover)
|