Back to Devlog
    v0.9.0
    NetcodeFebruary 15, 2026Release notes

    The Whole Simulation Moved to 125Hz

    Three layers, deterministic ticks, server authority with client prediction, MessagePack over WebTransport — and reconciliation error that went to zero.

    The Architecture

    text
    Simulation  ->  Network  ->  Game

    Deterministic fixed-timestep 125Hz, Copy-on-Write WorldState, branded types in BrandedTypes.ts. A multi-rate tick system: FPS at 125Hz, RTS at 30Hz, configurable, benchmarked at 64 players and 22,000+ ticks/sec.

    The Netcode

    Server-authoritative with client prediction, input buffering and acknowledgement, MessagePack binary serialization, delta compression, snapshot interpolation, WebTransport (QUIC over UDP), a drift-compensated tick loop, frame-synchronised reconciliation and an input queue. Lag compensation with a history buffer.

    CLI: npm run net:server, server:tick, server:bench, fuzz testing and deterministic replay.

    The Number On The Release

    text
    Reconciliation error: 0.0 units  (was 24-40 units)

    And the reason it was 24-40 units: spawn point Y-offset was wrong, and the collision world was not being injected into the client predictor.

    Breaking Changes

    • New binary network protocol.
    • Fixed 125Hz simulation.
    • WebTransport replaces WebSocket.
    • AdvancedCharacterController removed.

    Physics

    Q3 ground plane clipping before stepSlideMove; wall-climb prevention removed from slideMove; clip-plane thresholds 0 instead of 0.1; walljump ground clearance traced from feet level. Dev bar on developer 1 showing FPS, PING, SPEED and POS. AGENTS.md renamed from CLAUDE.md.

    Known Issues

    • LightGrid dimension mismatch warnings on some FBSP maps.
    • Debug logging is verbose (will be reduced for release).