KB: reconcile STALE peer coupled-motion "COMPLETION PENDING" entry -> DONE (task #50)
The open-questions.md block was the old completion PLAN (ea39af1) and was never updated after the work actually landed + the residual was root-caused. It contradicted multiplayer.md (which correctly documents both "Authentic coupled peer motion -- DONE" and the packet-jitter resolution). Reconciled to DONE: coupled single-source gait pipeline default-on (c52a1ad/b013742/96a896a/f094d78/23f1532); the "needs master half" conclusion superseded by49d73dc(residual shakiness = single-box packet jitter, a test-rig artifact, fixed with CPU affinity, user-confirmed -- NOT a game bug). Minor follow-ups (2.9u channel-snap, decay constant) tracked in multiplayer.md. No code change -- KB currency only. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 4.8
parent
aab7a8a137
commit
ac599c0d2a
+25
-18
@@ -622,21 +622,28 @@ register. ⚠ The audit also flags the damage-economy item as SELF-CONTRADICTOR
|
||||
- Feeds from: every subsystem/render topic (their deferral notes collect here).
|
||||
- Gating master: [[source-completeness]] (the missing BT source).
|
||||
|
||||
## Peer coupled-motion architecture — COMPLETION PENDING (task #50 tail, 2026-07-14)
|
||||
The user's speed-change peer glitch is the last visible MP motion artifact. Root
|
||||
cause is ARCHITECTURAL and decomp-confirmed: the original peer (FUN_004ab430 ->
|
||||
FUN_004ab1c8) drove position FROM the clip's root travel between records (feet
|
||||
locked to ground by construction) + pose-sync offset decay; our port dead-reckons
|
||||
position from velocity while legs run on commanded speed — they disagree exactly
|
||||
during accel/decel. The PEER half is implemented env-gated (BT_ROOT_POS=1,
|
||||
mech4.cpp replicant branch) but measured worse alone: with sparse records the
|
||||
master's VELOCITY mirror under-sends for a gait-driven peer (11u snaps); with
|
||||
dense records the two authorities tug-of-war (path/net 1.86). COMPLETION NEEDS
|
||||
THE MASTER HALF: (1) master send-gate linear mirror driven by the same gait
|
||||
travel (its own channel-B IntegrateMotion projection, as the binary's), so
|
||||
records model the peer; (2) then sparse authentic deadband cadence + offset
|
||||
decay. All fixed-and-committed groundwork: exact quaternion integration
|
||||
(a8eb8a4), incremental peer heading (d78e77b), clock guard (93456be), commanded-
|
||||
speed cadence feed (6374efc), Abs-macro fix (7615ecd). Speed model decomp-settled
|
||||
(2c6db6a): analog throttle, '5 speeds' false, throttleState@0x4a4 is actually the
|
||||
fall-surface material (RENAME PENDING).
|
||||
## Peer coupled-motion architecture — ✅ DONE (task #50, 2026-07-14/15) [T1/T2]
|
||||
RESOLVED. (This block was the old COMPLETION PLAN from `ea39af1`; it was left stale after
|
||||
the work actually landed — reconciled 2026-07-15.) The coupled single-source gait pipeline
|
||||
is reconstructed, DEFAULT ON, and the residual was root-caused. See [[multiplayer]] two
|
||||
sections: **"Authentic coupled peer motion — DONE"** (linear position = BODY gait channel
|
||||
integrated into `projectedOrigin@0x260`; angular = replicated-velocity slerp; master
|
||||
SEND-mirror runs the SAME `IntegrateMotion` predictor fed the last-sent `bodyTargetSpeed`)
|
||||
and **"Peer motion: the 'random shakiness' is single-box packet jitter, NOT the game"**.
|
||||
- Landed: coupled path promoted to default (`c52a1ad` + `b013742`); peer poses from the
|
||||
BODY channel (`96a896a`); turn-step on the body channel (`f094d78`); true-mirror cadence
|
||||
driving the clip from actual replicated motion (`23f1532`). Groundwork: exact quaternion
|
||||
integration (`a8eb8a4`), incremental peer heading (`d78e77b`), clock guard (`93456be`),
|
||||
commanded-speed cadence feed (`6374efc`), Abs-macro fix (`7615ecd`).
|
||||
- **The old "needs the MASTER HALF" conclusion was SUPERSEDED:** the leftover accel/decel
|
||||
shakiness was ROOT-CAUSED as single-box **packet jitter** (`49d73dc`) — two Debug nodes on
|
||||
one box batch TCP delivery, so records arrive bursty (BT_RXJIT burstiness 3-7x) and the peer
|
||||
dead-reckons across the gaps then snaps. Pinning each node to a disjoint core set
|
||||
(`ProcessorAffinity 0x00F/0x3C0`, baked into `tools/mp_launch.sh`) restored even ~17ms
|
||||
delivery and the shakiness vanished (user-confirmed). Real pods are dedicated machines and
|
||||
never see it. **DO NOT add an interpolation/jitter buffer** to mask a rig artifact.
|
||||
- Minor non-gating follow-ups (tracked in [[multiplayer]]): an occasional ~2.9u
|
||||
leg(peer)-vs-body(mirror) channel-mismatch snap; the exact `_DAT_004ab9cc` offset-decay
|
||||
constant; whether `IntegrateMotion`'s 2-stage angular integrate is intended.
|
||||
- Speed model decomp-settled (`2c6db6a`): analog throttle, '5 speeds' false, `throttleState@0x4a4`
|
||||
is actually the fall-surface material (RENAME PENDING).
|
||||
|
||||
Reference in New Issue
Block a user