Back to Devlog
    v0.9.3
    NetcodeFebruary 19, 2026Release notes

    The Server Started Throwing Grenades

    Projectiles are created and simulated entirely on the server, snapshotted as entities, and delta-compressed into half the size.

    Authority Moves Upstream

    Projectiles are now created and simulated entirely on the server and shipped in snapshots as proj_ entities, with a dedicated SnapshotBuffer for lerping. Client-side raycasting and client-side movement for projectiles were removed.

    The client keeps only what is cosmetic: grenade rotation from velocity via a quaternion, and blue trails.

    Speed Went Up Because The Tick Was Fixed

    text
    snapshot rate   30Hz -> 60Hz   (every 2 ticks at 125Hz)
    interp delay     100ms -> 50ms
    jitter mult      2x -> 1x stddev, clamped 16-150ms
    
    rocket    1150 -> 1800 UPS   (+56%)
    grenade   1000 -> 1560 UPS   (+56%)
    falling gravity multiplier  1.8 -> 1.25

    Faster projectiles and a shorter interpolation delay together mean a grenade travels nearly its own length between the snapshots that describe it. That is a deliberate trade and it is stated as one.

    Compression

    A 64-entry snapshot history ring buffer with per-client lastAckedTick baselines: 50-70% smaller snapshots. MovementValidator anti-warp — rate cap plus a time budget, with silent drops and a strike counter.

    Knockback became a server-side impulse queue ahead of the movement simulation, with distance falloff and per-weapon splashRadius, splashDamage and knockbackScale.

    And The Logging

    text
    Removed flood-causing [KB-DIAG], [KB-RENDER], [EXPLOSION] console.log statements

    Known Issues: LightGrid dimension mismatch warnings on some FBSP maps.