#!/usr/bin/env bash # Run a real Tank Royale battle with the DrussGT bridge against an adversary and # dump the movement fixture + statistics. # # tools/robocode_shim/run_bridge_battle.sh [rounds] [outJsonl] # # Example: # tools/robocode_shim/run_bridge_battle.sh \ # /home/davide/Projects/tank-royale/sample-bots/java/build/archive/SpinBot 5 set -euo pipefail HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" REPO="$(cd "$HERE/../.." && pwd)" ADVERSARY="${1:?usage: run_bridge_battle.sh [rounds] [outJsonl]}" ROUNDS="${2:-5}" OUT_JSONL="${3:-/tmp/tr_drussgt_$(basename "$ADVERSARY" | tr 'A-Z' 'a-z').jsonl}" RUNNER="${TR_RUNNER_JAR:-/home/davide/Projects/tank-royale/runner/examples/lib/robocode-tankroyale-runner.jar}" export DRUSSGT_JAR="${DRUSSGT_JAR:-/tmp/drussgt/DrussGT.jar}" export DRUSSGT_DATA="${DRUSSGT_DATA:-/tmp/drussgt_bridge_data}" BOTDIR="${DRUSSGT_BOTDIR:-/tmp/tr_bots/DrussGT}" "$HERE/make_botdir.sh" "$BOTDIR" >/dev/null EVENTS_ARGS=() if [[ -n "${TR_EVENTS_OUT:-}" ]]; then EVENTS_ARGS=(--events-out "$TR_EVENTS_OUT") fi java -cp "$HERE/out:$RUNNER" robocode_shim.TrBattleCapture \ --rounds "$ROUNDS" --out "$OUT_JSONL" \ --bot "$BOTDIR" --bot "$ADVERSARY" \ --subject DrussGT --adversary "$(basename "$ADVERSARY")" \ "${EVENTS_ARGS[@]}" echo echo "=== movement statistics (TR) ===" python3 "$REPO/tools/robocode_fixture_capture/analyze.py" "$OUT_JSONL"