Yes — same bet here. Bombercup is Three.js in a tab, multiplayer, no install. WebXR straight from a link is genuinely the coolest part of your setup 🎮
The hardest part for me hasn’t been the performance ceiling, it’s the memory ceiling, and I suspect Coa’s report above is exactly that failure mode. A native client on a 4GB machine pages and stutters; a tab just gets OOM-killed. And because there’s no install, you also lose the system-requirements gate a downloadable build gets for free — anyone on any device can click the link, so you end up budgeting for the worst machine that will ever open it rather than for your target spec.
Two things that bought me the most headroom:
Texture memory, not geometry, is what gets you. A 2048x2048 RGBA texture decodes to ~16MB in VRAM no matter how small the PNG was. Moving to KTX2/Basis (stays compressed on the GPU) cut resident memory more than any mesh or draw-call work did.
Dispose discipline. Three.js won’t free GPU resources for you, and in a world where avatars stream in and out, leaked materials/textures on player teardown is a slow OOM that only surfaces 20 minutes in — which is exactly when a crash report looks mysterious and unreproducible.
Also worth clamping devicePixelRatio to ~1.5. Retina at DPR 2 is 4x the fragment work for very little visible gain, and it’s a one-line change.