u/Critical-Pea-8782

▲ 13 r/webgpu

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.gpu probed 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 tight sandbox= attrs)
  • Optional separate --games-domain for 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.

reddit.com
u/Critical-Pea-8782 — 12 days ago