#!/usr/bin/env bash # #124 ZONE-WALK MATRIX -- the systematic per-panel targeting session (2-node, # operator-watchable). Node B (right window) = the TARGET: spins in place # (BT_SPIN_SELF), its paper doll shows every hit landing. Node A = the # SHOOTER: BT_ZONE_WALK servo-aims the real boresight at each of B's zones' # carrier segments in turn, settles, fires 3 laser pulses, advances. One # B-revolution per ~24 s x 6 s/zone => every zone gets aimed shots from many # aspects over a few minutes. # READ: A's log [walk] ZONE/FIRE lines vs B's log [dmghit] zone= lines. # The session STAYS UP for observation -- close the windows (or taskkill # btl4.exe) when done; the relay dies with this script's 60-min tail. set -x . /c/git/bt411/scratchpad/night6/bench_common.sh cd /c/git/bt411/content || exit 1 bt_assert_player_env taskkill //F //IM btl4.exe > /dev/null 2>&1 sleep 2 rm -f zw_a.log zw_b.log bt_expert_egg MP.EGG ZW.EGG sed -i "s/^map=.*/map=grass/; s/^time=.*/time=day/; 0,/^vehicle=.*/s//vehicle=madcat/" ZW.EGG # TARGET first (right/back window): spins, logs every damage application. BT_SPIN_SELF=15 BT_DMG_LOG=1 BT_DEATH_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ bt_launch zw_b.log ZW.EGG 0x0C -net 1601 sleep 2 # SHOOTER second (foreground -- owns the pick focus): the walker. # BT_ARMOR_LOG on A: the watcher logs the REPLICANT's zone levels as A renders # B -- decides whether damage darkening ever reaches the observer node (#87 MP). # BT_SHOT_EVERY: periodic captures of A's view of B's hull (real-fight pixels). rm -f zwA_*.png BT_ZONE_WALK=6 BT_PICK_LOG=1 BT_GOTO=enemy BT_GOTO_STOP=90 BT_KEY_NOFOCUS=1 \ BT_DMG_LOG=1 BT_RANGE_LOG=1 BT_MP_LOG=1 BT_MATCHLOG=1 \ BT_ARMOR_LOG=1 BT_SHOT_EVERY=300 BT_SHOT_PREFIX=zwA \ bt_launch zw_a.log ZW.EGG 0x03 -net 1501 sleep 5 python ../tools/btconsole.py ZW.EGG 127.0.0.1:1501 127.0.0.1:1601 > zw_relay.log 2>&1 & sleep 3600 # keep the relay's parent alive for the observation hour