#!/usr/bin/env bash # #81/#45 FOUR-NODE RESPAWN + SCOREBOARD BENCH. # # Four networked instances, ALL dying repeatedly on staggered timers so death # cycles overlap (the field condition: several respawn handshakes in flight at # once, each answered by an arbitrary peer's DropZone). # # Launched through bench_common.sh, so every window is configured EXACTLY like # a player's play_solo/join shortcut (cockpit view, glass cockpit, MFDs) and # flies an EXPERT egg like every shipped one. What you see here is what the # field sees. # # PASS = every death cycle pairs START -> RESET on its own node # 0 SWALLOWED / 0 MISMATCH / 0 DISCARDED / 0 GHOST / 0 crash # and each node's PLAYER_DEAD tally increments 1 per death. # WATCH = the comms panel KILLS/DEATHS columns, and the blue respawn vortex. set -x . /c/git/bt411/scratchpad/night6/bench_common.sh cd /c/git/bt411/content || exit 1 bt_assert_player_env rm -f mp4p_a.log mp4p_b.log mp4p_c.log mp4p_d.log A=/c/git/bt411/scratchpad/night6/runs/$(date +%H%M%S); mkdir -p "$A"; mv matchlog_*.txt "$A"/ 2>/dev/null bt_expert_egg MP4.EGG MP4X.EGG # staggered first deaths so the cycles interleave instead of lining up launch () { # $1=log $2=affinity $3=port $4=delay BT_MP_LOG=1 BT_SCORE_LOG=1 BT_DEATH_LOG=1 BT_MATCHLOG=1 BT_PERF=1 \ BT_SELF_DAMAGE=60 BT_SELF_DAMAGE_DELAY=$4 BT_SELF_DAMAGE_REPEAT=1 \ bt_launch "$1" MP4X.EGG "$2" -net "$3" } launch mp4p_d.log 0xC0 1801 34 sleep 1 launch mp4p_c.log 0x30 1701 41 sleep 1 launch mp4p_b.log 0x0C 1601 48 sleep 1 launch mp4p_a.log 0x03 1501 55 sleep 5 python ../tools/btconsole.py MP4X.EGG 127.0.0.1:1501 127.0.0.1:1601 \ 127.0.0.1:1701 127.0.0.1:1801 & PC=$! sleep 150 kill $PC 2>/dev/null bt_kill_ours rm -f MP4X.EGG echo "=== DONE ==="