Eighteen Cylinders Replaced By One Quad
A procedural GPU beam for the Voltaic, procedural health and armor pickups, Babylon 9 with 3,020 KTX2 sidecars, and WebGPU demoted back to an opt-in.
The Voltaic Beam
A new procedural GPU beam renderer — an analytic single-quad shader plus a thin-instanced batch for remote and chain beams — replacing the old 18-cylinder re-jittered bolt.
The server emits a voltaic_beam event (id 16) carrying the exact damage ray, contact point, surface normal and impact kind. lasergun was collapsed into voltaic everywhere: canonical IDs, classname and ammo aliases, pickups, registration, bot profiles. Beam wander retuned from a ~7Hz spin to a slow deterministic meander. Design in docs/research/VOLTAIC_DESIGN.md.
Electrobolt Became A Rail
An analytic-helix GPU rail — cold blue-white core, twin helix, muzzle crack, terminal nucleus — driven by an electro_rail wire event for local and remote shooters. It used to be anchored at the eye origin, which put a near-camera smear across the screen. Plus shared procedural muzzle flashes for every weapon, with per-weapon styles: burst, fiery plume, electric arcs. GLB weapons shipped no _flash model, so before this only the light flickered.
Pickups Became Sculptures
Runtime-generated health and armor, replacing MD3 models, with no change to gameplay, active masks, respawn timing, ids or map networking. A new engine seam PickupVisual behind PickupOptions.visualFactory, a recipe family covering all 9 tiers, and a r_pickupProcedural toggle on by default. Health is a scrolling-gradient energy core with a cross emblem; armor is dark hex plates with glowing rims.
Babylon 9, And Why WebGPU Is Off
Babylon 9.17 with clustered dynamic lights and default-on PK3-aware KTX2 — 3,020 generated and validated sidecars plus local decoder workers. A KTX1 audit fixed backend-independent upload of 56 alpha-only legacy textures.
WebGPUEngine sits behind ?renderer=webgpu only. Real lobby testing exposed invalid WGSL pipeline layouts and white frames, so WebGL2 is again the default. Re-testing confirmed a hard 12-UBO vertex-stage adapter ceiling where a pipeline needs 14. Plan in docs/research/BabylonJS-9-upgrade.md.
That is a downgrade recorded honestly rather than hidden behind a flag that nobody was testing.
The Bot Foundation And The Autsprite Post-Mortem
BSP-fingerprinted, schema-versioned nav graphs under .cache/bots/maps, invalidated by BSP hash, schema, trigger resolver and movement-profile fingerprint. Typed A\* steps, bounded 125Hz rollouts against the authoritative movement model, npm run bot:analyze, and a deterministic sequence director with a final line-of-fire gate that suppresses friendly fire.
The bug report worth quoting:
Babylon 9.17 leavesscene.activeCamerapointing at the last-rendered weapon
camera, which is parented to the eye, so its.positionis a fixed local ~0;
billboards froze "at a fixed angle". Only the camera it was fed was wrong.
Also landed: textured area lights (r_arealights_max default 4), god rays on, GlowLayer default off, SSR default off, m_sensitivity 2 → 1, r_bsp_freeze on by default, and GPU particle rain and snow.
164 files / 1601 tests, checksum 2768943778 unchangedKnown Unverified Items
Voltaic beam appearance in first person and remote, tag_flash muzzle alignment, chain-arc versus decorative-fork read. Electrobolt helix visibility, turns and palette. Muzzle flash size and style per weapon — remote-player flashes are v1 local-first-person only. Procedural health and armor still wants an in-map pass. Post-match diorama framing and team podium. Carried from v0.9.19: WO9, WO13, WO7, showcase fullbright 0.6, lobby rematch flow.