#!/usr/bin/env bash # make_variant.sh — generate a spin-rate preset of the ConstantSpinner adversary. # # make_variant.sh [OUTDIR] # # e.g. # make_variant.sh ConstantSpinner_s3 3 5 /tmp/tr_spinners # make_variant.sh ConstantSpinner_s6 6 5 /tmp/tr_spinners # # The variant dir is a normal Tank Royale bot directory named : the runner # matches the connecting bot's identity against //.json, so # the launcher exports BOT_JSON to make the binary handshake under . # # The single committed ConstantSpinner binary is reused (no per-variant build); # only SPIN_TURN_RATE / SPIN_SPEED differ. set -euo pipefail HERE="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" BIN="$HERE/out/ConstantSpinner" NAME="${1:?usage: make_variant.sh [OUTDIR]}" TURN="${2:?usage: make_variant.sh [OUTDIR]}" SPEED="${3:?usage: make_variant.sh [OUTDIR]}" OUTDIR="${4:-/tmp/tr_spinners}" [[ -x "$BIN" ]] || { echo "ERROR: build first: nim c -d:release src/ConstantSpinner.nim" >&2; exit 1; } DIR="$OUTDIR/$NAME" mkdir -p "$DIR" cat > "$DIR/$NAME.json" < "$DIR/$NAME.sh" <> /tmp/constantspinner_stderr.log SH chmod +x "$DIR/$NAME.sh" echo "generated $DIR (turn=$TURN deg/tick, speed=$SPEED)"