Built PlayMore — an open-source self-hostable platform for publishing browser games. Posting here because the "is WebGPU actually supported" story is usually messy, and I think this sub is the right audience to break it.
What it does for WebGPU specifically:
- Per-game capability detection —
navigator.gpuprobed in the iframe, badge displayed on the store page so players know the game targets WebGPU before they click play - Sandbox iframe permissions configured so WebGPU contexts and
requestAdapter()actually work (lots of platforms break this with overly tightsandbox=attrs) - Optional separate
--games-domainfor full origin isolation without losing WebGPU access - Range requests + immutable cache headers so large WASM/WebGPU builds (100+ MB) load fast on repeat visits
- gzip middleware excludes the game-serving path to keep Range support intact for streaming WASM
Tested end-to-end with:
- Godot 4 web export (WebGPU + WebGL2)
- Bevy via wasm-bindgen
- Babylon.js (WebGPU + WebXR)
- Three.js (WebGPU experimental backend)
- Plain wgpu/Dawn-targeting WASM
Live demo with actual WebGPU games running: https://playmore.world
Source (MIT, single Go binary, SQLite): https://github.com/yusufkaraaslan/play-more
Genuinely interested in feedback from people shipping WebGPU — especially anything I've missed re: capability quirks (Safari Tech Preview,
Firefox Nightly's gpu flag), CSP edge cases with WebGPU, or iframe-sandbox attribute combos that break WebGPU on some browsers but not
others.