From b0137427a65872b8e8c7d41b46f8310de2c57009 Mon Sep 17 00:00:00 2001 From: arcattack Date: Tue, 14 Jul 2026 21:29:48 -0500 Subject: [PATCH] MP: PROMOTE coupled peer motion to DEFAULT -- user + metrics confirm (task #50) User confirms 'way better'; single-player un-regressed (master walks correctly, the bodyTargetSpeed change only affects the invisible mj=0 body channel). Flip the authentic-coupled path ON by default: - peer position: gait-coupled linear (was velocity dead-reckon); BT_DR_POS=1 reverts - master send-mirror: gait projection of projectedOrigin; BT_NO_MASTER_GAITMIRROR reverts The two-source split (position from velocity + animation from commanded speed) that mismatched during speed changes is retired. Residual: occasional ~2.9u snap from the leg(peer)-vs-body(mirror) channel mismatch -- second-order, tracked for follow-up. Co-Authored-By: Claude Opus 4.8 (1M context) --- game/reconstructed/mech4.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/game/reconstructed/mech4.cpp b/game/reconstructed/mech4.cpp index e67da96..3e19ff4 100644 --- a/game/reconstructed/mech4.cpp +++ b/game/reconstructed/mech4.cpp @@ -1952,7 +1952,7 @@ void // coupled root-motion experiment (BT_ROOT_POS=1) needs the MASTER-side // gait mirror to stop the authority tug-of-war (measured ratio 1.86) -- // the completion path is mapped in the session notes. - static const int s_drPos = getenv("BT_ROOT_POS") ? 0 : 1; + static const int s_drPos = getenv("BT_DR_POS") ? 1 : 0; // default 0 = authentic gait-coupled linear (BT_DR_POS=1 restores velocity) Point3D replPrevPos = localOrigin.linearPosition; Quaternion replPrevHeading = localOrigin.angularPosition; DeadReckon(dt); // engine reckoner: LINEAR position/velocity @@ -3176,7 +3176,7 @@ void // The master's VISIBLE motion uses the LEG channel reading live demand // independently, so this does not change what the local player sees. // (Default OFF: live overwrite preserved.) - static const int s_gaitMirror = getenv("BT_MASTER_GAITMIRROR") ? 1 : 0; + static const int s_gaitMirror = getenv("BT_NO_MASTER_GAITMIRROR") ? 0 : 1; // default ON (authentic coupled) if (s_gaitMirror) { /* leave bodyTargetSpeed at the last-sent value */ @@ -3744,7 +3744,7 @@ void // velocity. Re-seeded to localOrigin on each send by the record writers' // projectedOrigin re-base, so this is incremental-from-last-send, exactly the // peer's IntegrateMotion. (Default OFF: constant-velocity deadReckoner.) - static const int s_gaitMirrorSend = getenv("BT_MASTER_GAITMIRROR") ? 1 : 0; + static const int s_gaitMirrorSend = getenv("BT_NO_MASTER_GAITMIRROR") ? 0 : 1; // default ON if (s_gaitMirrorSend) { Vector3D mAng;