Back to Devlog
    v0.9.11
    GameplayMarch 23, 2026Release notes

    Awards, a Spectator Camera, and a Demo Player

    Server-authoritative awards, directional damage indicators, framerate-independent physics, a chase camera, and gzip-aware demo playback at up to 4x speed.

    Awards Are Decided On The Server

    AwardTracker inside GametypeController:

    text
    frag          first_blood
    on_fire       at 5 kills
    raging        at 10
    unstoppable   at 15

    Presented as an AwardBanner in Orbitron with --w-gold, centred at 35% from the top, in a sequential queue. BinaryProtocol event code 12 ('award'). The EventFeed replaced the kill feed entirely.

    Damage Arrows

    A Canvas2D directional overlay: red vignette plus scattered triangles weighted by damage direction — 12-70px, 28-60 triangles, 0.35-1.4s flash, intensity scaling with damage, and an oversized splash at 50+ damage.

    Pain camera shake now fires for all damage types — hitscan, beam, projectile, melee — at 5-60% of max.

    The Physics Fix

    text
    Use full dt per command (not dt/queue.length)
    Removed queue=0 stale-input simulation

    This is v0.9.10's double-simulate() bug from the other end. In v0.9.10 the queue was simulated too many times; here it was simulated for too little time. Bots now send input at 125Hz from a timer loop with AI decisions cached and re-sent.

    Also fixed: retreat setting BACK without clearing FORWARD, dodge not setting LEFT/RIGHT flags, and combat targeting state.players[0] instead of visionResult.visibleEnemies[0] — shooting at somebody who was behind a wall.

    Spectating And Demos

    SpectatorController with exponential smoothing and a snap past 500u, yaw wrap, SpectatorCycling with an alive list and auto-select, watchOnly mode, and a challengers queue past maxClients (maxSpectators default 8).

    DemoReader.fromFile() is async with gzip auto-detection (0x1f 0x8b) via the browser DecompressionStream or Node zlib.gunzipSync. DemoViewer plays at the recorded snapshot rate with play/pause, seek, and 0.25x to 4x speed.

    And The Type Cleanup

    text
    677 total tests (was 462)
    ~204 any casts eliminated across 29 rendering files
    Biome errors 74 -> 36, warnings 644 -> 296

    Known Issues: none stated.