Skip to content

Menu: faster load, orange/black loading theme, tighter knife grip - #34

Merged
yassinsolim merged 3 commits into
mainfrom
menu-perf-theme-grip
Jul 2, 2026
Merged

Menu: faster load, orange/black loading theme, tighter knife grip#34
yassinsolim merged 3 commits into
mainfrom
menu-perf-theme-grip

Conversation

@yassinsolim

Copy link
Copy Markdown
Owner

Summary

Three menu-facing improvements:

⚡ Performance — kill the slow blank boot

  • Compress the 4 character/knife GLBs from ~95 MB → ~7 MB (textures resized to 1024px + WebP; geometry untouched, Three decodes EXT_texture_webp natively so no loader changes).
  • Defer the ~75 MB remotePlayers.load() (opponent models) to the background and only await it when a play session actually enters a map — the menu no longer blocks its first paint on 75 MB.
  • Add an instant inline-CSS boot loader (menu-themed) that paints before the JS bundle and is dismissed once the menu is up, so there's immediate feedback instead of a blank tab.

🎨 Theme — no more blue flash

  • Body/#app background and the in-game map loading overlay were still on the old teal accent. Retheme both to the menu's orange/black palette so nothing flashes blue before/around the menu.

🔪 Hero knife grip

  • The menu hero pinched the knife near the pommel with a length of bare handle showing. Reseat it (MENU_KNIFE_GRIP_POSITION) so the fist closes right at the guard and the pommel tucks behind the fist — a proper hammer-grip across the full preview sway. Menu-only; the in-game third-person hold is unchanged.

Verification

  • npm run ci: tsc clean, 132/132 tests pass, production build clean (only the pre-existing >500 kB chunk warning).
  • Menu paints instantly on reload; T and CT hero models both render crisply with the tighter grip (verified in-browser).

…n instant boot loader

The menu boot was blocked on ~95 MB of GLB textures and a synchronous
75 MB remote-player download before the first frame painted, so the tab
sat blank for several seconds.

- Compress the 4 character/knife GLBs from ~95 MB to ~7 MB by resizing
  textures to 1024px and re-encoding as WebP (geometry untouched; Three
  decodes EXT_texture_webp natively, so no loader changes).
- Defer remotePlayers.load() (the ~75 MB opponents) to the background and
  await it only when a play session actually enters a map, so the menu
  paints immediately instead of blocking the first render.
- Add an instant inline-CSS boot loader (menu-themed orange/black) that
  paints before the JS bundle and is dismissed once the menu is up.
The in-game map loading overlay and the body background were still on the
old teal accent, which flashed blue against the new orange/black menu.

- Swap the body/#app background gradients from teal/amber to orange on
  near-black so the pre-menu paint matches the menu.
- Retheme .loading-overlay/.loading-panel/.loading-title/.loading-progress/
  .loading-detail from teal to the orange/black palette.
The menu hero gripped the knife with the fist pinched near the pommel,
leaving a length of bare wooden handle exposed between the fist and the
guard so it read as loosely held.

Slide the menu knife up its handle so the fist closes right at the guard
and tuck it into the palm so the pommel sits behind the fist — a proper
hammer-grip hold across the full preview sway. Menu-only (MENU_KNIFE_GRIP_
POSITION); the in-game third-person hold is unchanged.
@vercel

vercel Bot commented Jul 2, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
webstrafe Ready Ready Preview, Comment Jul 2, 2026 4:12am

@yassinsolim
yassinsolim merged commit 6b1ff7c into main Jul 2, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant