A HUD That Fits in Nine Anchor Zones
A 2400-line HUD rewrite around a 1800-line stylesheet, ten weapon slots down the left edge, and roughly 150 console.log calls deleted.
The Washiki Theme
WashikiTheme.css 1800+ lines, CSS custom properties,
glassmorphism, corner brackets, neon glows,
a --ui-scale multiplier
Fonts Orbitron (display), Rajdhani (body)MatchHUD.ts was replaced by FPSHud.ts — about 2400 lines — as a singleton with 9 anchor areas.
Widgets
FPSValueBar for health and armor. FPSAmmoCounter filling gold from WEAPON_MAX_AMMO, with infinite ammo rendered as ∞. FPSFragCounter. FPSTimer using font-variant-numeric: tabular-nums so the digits stop jittering. FPSWeaponRack — a left vertical rack showing all 10 weapon slots, active weapon in cyan. FPSSpeedometer. An SVG FPSCrosshair.
Overlays: scoreboard held on TAB, chat on T, directional damage indicators, kill feed, pickup toast (white-space: nowrap, no emoji) and a death screen that says YOU DIED.
Dialogs: a pause menu where ESC releases pointer lock, the game keeps rendering behind it, and no actual pause occurs.
The Cleanup Is Part of The Release
~200 lines of dead code removed
~150 console.log calls stripped from 17 named modules
plus a 60-line collision diagnostic blockNine perf items too: a Map for O(1) PK3 lookup, Blob URL revocation, resolveMaterialProps() cached by texture name, four concurrent asset loads, Promise.allSettled parallel probes, pooled TraceState, buildClipBrushIndex(), material-level RenderVars dedup, and material.freeze() after BSP load.
Known Issues: none stated.