Hosting
Bring whatever you built it with
Game Trough doesn't care which engine you used, but it does need to know — the stack you pick decides how your build gets validated, which headers it's served with, and how the frame is sandboxed. Here's everything, and how to package each one.
Hosted here
You upload a web build; we unpack it, validate it, and serve it from an isolated sandbox with a locked-down CSP. Nothing leaves the frame.
Vanilla JS + Canvas
LivePlain HTML, CSS and JavaScript with a 2D canvas. No build step, no framework, no excuses — the classic one-shot output.
Zip the folder containing index.html. Keep paths relative — no leading slashes.
Three.js / WebGL
Live3D scenes in the browser. Meshes, shaders, post-processing — anything that renders to a WebGL context.
npm run build → zip dist/
Bundle your models and textures into the build; remote asset fetches are blocked by the sandbox CSP.
Phaser
LiveThe workhorse 2D game framework. Arcade physics, tilemaps, sprite atlases.
npm run build → zip dist/
Include your assets/ directory in the zip alongside index.html.
p5.js
LiveCreative-coding sketches that grew into games. Vendored p5 library, no build step.
Vendor p5.min.js into your folder rather than using a CDN — the sandbox blocks third-party scripts.
Godot 4 (Web)
BetaGodot's HTML5 export. Needs cross-origin isolation for threads, which we set automatically.
Project → Export → Web → zip export/
Export with the 'Web' preset. Zip index.html together with the .pck, .wasm and .js files.
Unity (WebGL)
BetaUnity WebGL builds. Large, but they run. Enable compression fallback on export.
File → Build Settings → WebGL → zip Build/
Use Decompression Fallback (or Disabled compression) so we can serve the files without a custom decoder.
Rust / Bevy → WASM
Betawasm-bindgen or Bevy web builds. Fast, small, and slightly cursed to compile.
wasm-pack build --target web → zip pkg/
Include the generated .js glue and .wasm alongside an index.html that boots it.
Pygame → WASM (pygbag)
BetaPython games compiled to WebAssembly with pygbag. Runs fully client-side.
pygbag --build main.py → zip build/web/
Zip build/web — it already contains index.html, the apk archive and the runtime.
Hosted elsewhere
Already live somewhere? Point us at it. We embed where the host allows framing and link out where it doesn't.
Hosted elsewhere
LiveAlready live on itch.io, Vercel, Replit or your own box. We embed it if the site allows framing, and link out if it doesn't.
Just give us the URL. HTTPS only.
Server-side
Games that need a real process — Python backends, socket servers, anything stateful. The runtime abstraction is built; the provider isn't switched on yet.
Python server (Flask / Streamlit)
PlannedGames that need a real Python process — server-authoritative logic, LLM calls, Streamlit UIs.
Include a requirements.txt and a start command. Runs as a scale-to-zero container once the container runtime is enabled.
Node server / multiplayer
PlannedSocket.io lobbies, authoritative servers, anything with a persistent connection.
Include package.json with a `start` script. Runs as a container once that runtime is enabled.
Missing yours?
Adding a stack is a single entry in the registry — a name, a colour, what files to expect, and any headers it needs. If you've got a build that doesn't fit any of the above, post in Stack Help with the export layout and it can usually be supported the same day.