The attached trailer was captured in the native wgpu build. The playable browser version uses three.js rendering over the shared Rust core.
Loot Hole is now playable on Playgama: https://playgama.ai/play/kw6t5foxgs
I'm the developer. It's a first-person digging game: uncover buried objects, sell your finds, upgrade your equipment, and reach deeper layers.
The interesting part for this community is that we came back to three.js after doing the Rust/wgpu work. We started with Babylon Lite/WebGPU, moved to three.js/WebGL 2, then built shared Rust gameplay and native wgpu hosts. The browser now uses the Rust core through WASM, with three.js and DOM presentation.
The web launch path has a compressed-byte budget below 1,000,000 bytes. That's the startup path, not the entire game. We trim three.js at build time, stream models that aren't needed at the start, and compile shared Slang shader functions to GLSL for the web and SPIR-V for native.
Real-phone tests on a Galaxy A40 helped make the decision. Keeping Rust gameplay didn't require shipping the native renderer to every browser.
I'd be interested in hearing how other people split shared game logic from browser presentation, especially when startup size is a hard limit.
AI disclosure: AI was used for coding, image generation, and translations. Music and sound effects were mostly made without AI.