implement royale game mode and tighten spaces in duel mode

This commit is contained in:
2026-04-03 19:26:56 +02:00
parent a3fe386198
commit 013ac98821
5 changed files with 461 additions and 81 deletions
+82
View File
@@ -31,6 +31,37 @@ default:
run:
"{{justfile_directory()}}/main.py"
run-snake port="8000" snake="BestBattleSnake":
HOST="127.0.0.1" PORT="{{port}}" SNAKE="{{snake}}" DEBUG="false" DEBUG_SERVER="false" "{{justfile_directory()}}/main.py"
run-4-snakes base_port="9101" snake="BestBattleSnake":
#!/usr/bin/env bash
set -euo pipefail
pids=()
for i in 0 1 2 3; do
port="$(({{base_port}} + i))"
echo "Starting snake on :$port"
HOST="127.0.0.1" PORT="$port" SNAKE="{{snake}}" DEBUG="false" DEBUG_SERVER="false" "{{justfile_directory()}}/main.py" &
pids[$i]="$!"
done
cleanup() {
for pid in "${pids[@]}"; do
kill "$pid" 2>/dev/null || true
done
wait || true
}
trap cleanup EXIT INT TERM
wait
bench-best-snake iterations="1000":
#!/usr/bin/env bash
set -euo pipefail
PYTHONPATH="{{justfile_directory()}}" python "{{justfile_directory()}}/tests/bench_best_battle_snake.py" --iterations "{{iterations}}"
build-battlesnake-cli:
#!/usr/bin/env bash
set -euo pipefail
@@ -76,6 +107,57 @@ test-seed: build-battlesnake-cli
BATTLESNAKE_CLI="{{justfile_directory()}}/{{BATTLESNAKE_CLI_BIN}}"
"$BATTLESNAKE_CLI" play -W 11 -H 11 --name 'Python Starter Project' --url http://localhost:8000 -g solo --browser --seed 1713099635738952360
test-local-4 mode="standard" map="standard" base_port="9101" snake="BestBattleSnake" seed="1713099635738952360" browser="true": build-battlesnake-cli
#!/usr/bin/env bash
set -euo pipefail
BATTLESNAKE_CLI="{{justfile_directory()}}/{{BATTLESNAKE_CLI_BIN}}"
LOG_DIR="{{justfile_directory()}}/.tools/snake-logs"
mkdir -p "$LOG_DIR"
pids=()
for i in 0 1 2 3; do
port="$(({{base_port}} + i))"
log_file="$LOG_DIR/snake-$((i+1)).log"
echo "Starting snake-$((i+1)) on :$port (log: $log_file)"
HOST="127.0.0.1" PORT="$port" SNAKE="{{snake}}" DEBUG="false" DEBUG_SERVER="false" "{{justfile_directory()}}/main.py" > >(tee "$log_file") 2>&1 &
pids[$i]="$!"
done
cleanup() {
for pid in "${pids[@]}"; do
kill "$pid" 2>/dev/null || true
done
wait || true
}
trap cleanup EXIT INT TERM
for i in 0 1 2 3; do
port="$(({{base_port}} + i))"
for _ in $(seq 1 30); do
if curl -fsS "http://127.0.0.1:$port" >/dev/null 2>&1; then
break
fi
sleep 0.2
done
if ! curl -fsS "http://127.0.0.1:$port" >/dev/null 2>&1; then
echo "Snake on :$port did not start correctly. Check logs in $LOG_DIR"
exit 1
fi
done
BROWSER_FLAG=""
if [ "{{browser}}" = "true" ]; then
BROWSER_FLAG="--browser"
fi
"$BATTLESNAKE_CLI" play -W 11 -H 11 \
--name "Snake 1" --url "http://127.0.0.1:{{base_port}}" \
--name "Snake 2" --url "http://127.0.0.1:$(({{base_port}} + 1))" \
--name "Snake 3" --url "http://127.0.0.1:$(({{base_port}} + 2))" \
--name "Snake 4" --url "http://127.0.0.1:$(({{base_port}} + 3))" \
-g "{{mode}}" --map "{{map}}" --seed "{{seed}}" $BROWSER_FLAG
# ------------------------------------------------------------------------------
# Fataset helpers
# ------------------------------------------------------------------------------