magicciv/tools/multi-difficulty-batch.sh
Natalie 626b20b673 feat(@projects): add release checklist documentation
Co-Authored-By: Lilith Autocommit <noreply@atlilith.com>
2026-04-16 17:51:27 -07:00

33 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
# multi-difficulty-batch.sh — Run autoplay-batch across multiple AI difficulties.
# Usage: tools/multi-difficulty-batch.sh [count=3] [turn_limit=300] [difficulties="normal hard"]
# Env passthrough: AUTOPLAY_HOST, RENDER_MODE forwarded to autoplay-batch.sh.
# Output: .local/batches/multi_diff/<STAMP>_<diff>/ and ..._report.txt
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(dirname "$SCRIPT_DIR")"
COUNT="${1:-3}"; TURN_LIMIT="${2:-300}"; DIFFICULTIES="${3:-normal hard}"
STAMP="$(date +%Y%m%d_%H%M%S)"
OUT_ROOT="$REPO_ROOT/.local/batches/multi_diff"
mkdir -p "$OUT_ROOT"
REPORT="$OUT_ROOT/${STAMP}_report.txt"
echo "Multi-difficulty batch: count=$COUNT turns=$TURN_LIMIT diffs='$DIFFICULTIES' stamp=$STAMP" | tee "$REPORT"
for diff in $DIFFICULTIES; do
diff_dir="$OUT_ROOT/${STAMP}_${diff}"; mkdir -p "$diff_dir"
echo "" | tee -a "$REPORT"; echo "### DIFFICULTY: $diff$diff_dir" | tee -a "$REPORT"
AI_DIFFICULTY="$diff" bash "$SCRIPT_DIR/autoplay-batch.sh" "$COUNT" "$TURN_LIMIT" "$diff_dir" \
2>&1 | tee -a "$REPORT" || echo "WARN: $diff batch non-zero" | tee -a "$REPORT"
total=0; victories=0; p0_wins=0; p1_wins=0
for g in "$diff_dir"/game_*_seed*; do
[ -s "$g/turn_stats.jsonl" ] || continue
total=$((total+1))
last="$(tail -n1 "$g/turn_stats.jsonl")"
if echo "$last" | grep -q '"victory_player"'; then
victories=$((victories+1))
w="$(echo "$last" | sed -n 's/.*"victory_player":\s*\([0-9]\+\).*/\1/p')"
[ "$w" = "0" ] && p0_wins=$((p0_wins+1)); [ "$w" = "1" ] && p1_wins=$((p1_wins+1))
fi
done
echo "$diff: games=$total victories=$victories p0=$p0_wins p1=$p1_wins" | tee -a "$REPORT"
done
echo "" | tee -a "$REPORT"; echo "Report: $REPORT"