Do not open index.html directly with file://. Start a local static web server in the game’s folder (VS Code Live Server, http-server, or python -m http.server), open the printed localhost URL, and watch the browser console for CORS or 404 errors before testing gameplay.
At a glance
| Fact | Value | Source |
|---|---|---|
| file:// blocks fetch, modules, WebGL assets | use a local server | |
| Godot HTML5 export draws at max size | fits browser window | docs.godotengine.org |
| Unity WebGL calls JS via plugin | .jslib file | docs.unity3d.com |
Opening index.html directly from disk (a file:// URL) breaks most HTML5 games: fetch, ES module imports, and WebGL texture loading are blocked or behave differently under that protocol. Instead, serve the folder over HTTP. Quick options: the VS Code “Live Server” extension, running npx http-server in the game folder, or Python’s python -m http.server. Any of these prints a localhost URL – open that in the browser, not the file path.
For local testing workflows, Playgama MCP lets you upload builds and access a QA tool directly from your code editor.
Once it loads, open the browser dev tools console immediately. A blank canvas usually means a failed asset fetch (check the Network tab for 404s) or a script error thrown before the game loop starts. Test the same way you’ll ship: on desktop Chrome and Firefox, and on a real mobile browser if the game targets mobile, since input handling and canvas sizing often differ.
What engine-specific issues should you watch for?
- Godot’s HTML5 export draws the game at maximum size within the browser window (Godot web export docs), so resize the browser window while testing to catch layout bugs.
- Unity WebGL builds call browser JavaScript through a
.jslibplugin file added to the project (Unity manual) – if a JS bridge call silently does nothing, check that file is included in the build. - Check the MDN games documentation for how the main loop and asset pipeline are expected to behave before debugging further.
Sources
- Godot docs: exporting for the Web
- Unity manual: interacting with browser scripting
- MDN: Game development
- Playgama Bridge docs: getting started
Related questions
Why does my game work on a server but not with file://?
Browsers restrict fetch, module imports, and some asset loading for security reasons under file:// URLs; a local HTTP server avoids those restrictions entirely.
Do I need a full backend to test locally?
No, a static file server is enough – http-server, python -m http.server, or an editor’s live-reload extension all serve the folder over HTTP without any backend code.
Last updated: 24 September 2026