Back to Devlog
    v0.9.8
    NetcodeMarch 3, 2026Release notes

    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:

    text
    idle      speed < 50
    walk      50 - 300
    run       300+
    jump      any airborne state
    strafe_l  / strafe_r   when lateral beats forward by 1.5x

    Playback 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

    text
    Walljumping caused cumulative camera desync (view clipping through floor)
    Each walljump compounded the error

    Fixed by skipping reconciliation during walljumps plus a 10-cycle cooldown (about 0.33s).

    Known Issues: none stated.