# ───────────────────────────────────────────────────────────────────────────── # arms_movement_b1.txt — BATCH 1 of the movement campaign: isolate the # RANGE / AGGRESSION axis. Five arms, ONE frozen binary, env vars only. # # Format: name | ENV=value ENV=value | label # # Prior data this batch is built on (all DrussGT-only, all MEASURED): # * shipped `tfil` 293 dmg/run, 45/105 round wins, 10.40% incoming hit rate # * `strafe` (range 325) 250 dmg/run, 37/105 wins, 9.40% incoming -> best # dodger, fewest wins: the 325px range preference may COST wins # * j107: drifting 25-30 px closer made damage AND wins worse, so "get # closer" is not the lever by itself # This batch closes the caveat that all of that is DrussGT-only and decomposes # the range-steering lever from the engine. # ───────────────────────────────────────────────────────────────────────────── # 1. the arm to beat: shipped default, no env at all tfil | | shipped baseline (movement engine tfil, every knob at its default) # 2. pure perpendicular strafe with the range steering DISABLED: tilt is zero # whenever |dist - StrafeRange| <= TOL, so a huge TOL makes `tilt` provably # 0 every tick (and the approach-direction branch that depends on tiltMag is # skipped). This isolates the COST of the 325px preference: same engine, same # wall logic, no range steering at all. strafe_notilt | TR_MOVEMENT=strafe TR_STRAFE_RANGE_TOL=999999 | strafe, range steering OFF (tilt always 0) # 3. the current strafe default: range 325, tol 25, tilt max 15, gain 0.10 strafe_325 | TR_MOVEMENT=strafe | strafe default (range 325, tol 25, tilt 15/0.10) # 4. the owner's own retuned mover: tfil semantics + retuned heat field # (CorridorHeat 10 = the safety threshold, WallHotness 15, WallRadiance 5, # BulletCore/Aura 20/10, commit 5 ticks) + range-weighted tile draw # (band 100-200, temp 0.4, K 60). Range steering ON, different heat field. ring | TR_MOVEMENT=tfil_ring | tfil_ring (retuned heat field + range weighting 100-200) # 5. the control for arm 4: TR_TFIL_RANGE_TEMP=0 makes the tile draw UNIFORM # again (the documented OFF path), so arm 5 = the retuned heat field with NO # range steering. (4) - (5) is therefore the range-weighting lever alone, on # a heat field that is already retuned. NOTE: there is no env knob for the # heat constants of the SHIPPED tfil mover (CorridorHeat/WallHotness are # Nim `const` there, only REPORTED by env_report.nim), so the suggested # "tfil with less saturated heat" arm cannot be built without a rebuild, # which this campaign forbids. This is the honest substitute. ring_notemp | TR_MOVEMENT=tfil_ring TR_TFIL_RANGE_TEMP=0 | tfil_ring, range weighting OFF (temp 0)