Somebody Else's Animation, 300 Milliseconds Late
Cloned remote player models with an animation state machine, three delta-encoding bugs fixed, and crouch carried over the wire.
A Body Per Player
RemotePlayerRenderer loads vanguard.glb through PlayerModelManager with cloned instances and independent skeleton and animation state.
The state machine:
idle speed < 50
walk 50 - 300
run 300+
jump any airborne state
strafe_l / strafe_r when lateral beats forward by 1.5xPlayback speed scales to match actual speed against the Q3 constants walk=40, run=100, strafe=29. Warsow-style jump: ascending plays forward to a tucked pose, the peak freezes, descending reverses — non-looping, driven by vertical velocity. Root motion resets every frame.
The scene reference was fixed to come from CameraSystem rather than EngineStore.LastCreatedScene.
Hitboxes
Wireframe boxes in green — 32x56x32 standing, 32x36x32 crouching — toggled with cl_remotehitbox.
Three Encoding Bugs At Once
Rotation, grounded, and baseline fallback, in BinaryProtocol. The grounded baseline now has to be read first, always.
Crouch and slide went over the wire on flag 0x10, packing isCrouching and isSliding; crouching is carried through SnapshotBuffer and the mesh is rebuilt on crouch, 56 → 36 units.
Movement
Sprint 350, and only with +forward; strafe and backward are capped at walk speed 280.
And This
Walljumping caused cumulative camera desync (view clipping through floor)
Each walljump compounded the errorFixed by skipping reconciliation during walljumps plus a 10-cycle cooldown (about 0.33s).
Known Issues: none stated.