Known limitations
What doesn't work yet, or works differently from what you might expect.
Saving data
A game runs in a sandboxed frame with an opaque origin, so localStorage, IndexedDB, cookies and
everything built on them (Unity's IDBFS, Godot's user://) don't persist. There is no supported
way to keep data between sessions yet. See saving data.
Only fetch() of your own files is cached
The platform caches large files that your game loads with fetch(), including the wasm loaders
built on it. These still work but are not cached:
- element loads:
<script>,<link>,<img>,<audio>,<video>and dynamicimport(), XMLHttpRequest(synchronous requests can't be proxied at all),fetch()inside web workers.
Engines that load their data one of these ways load it from the network each time. See the file proxy.
Absolute asset paths break after publishing
mugon dev serves your game at the root of its own address, so a path like /assets/level.bin
works there. Once published, the game is served from a folder below the platform's file host, and
the same path no longer resolves. Use relative paths and build with a relative base (for Vite:
--base ./). The typescript and bevy templates already do.
Loading overlay
The platform shows a loading overlay until your game is playable. It closes when the callback you
pass to Mugon.start finishes. If that callback never finishes, for example because it keeps the
game loop alive, your game has to call ctx.progress.done() (in Bevy: Bridge::loaded()) or
the overlay stays. See loading progress.
Caching of large files takes a few launches
Files are written to the cache one at a time. When a game loads several large files at once
(a .wasm and a .pck, for example), the first one is cached on the first launch, and a large
file that finished downloading while another was still being written is cached on a later launch.
Nothing is lost by this: your game is never held up, and every file is served from the cache once
it is stored. See the file proxy.
Versions and settings
- Everyone plays the latest published version of a game. There is no way to pick a version yet.
ctx.settingsis always empty for now.