mugon.net docs
SDKs

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 dynamic import(),
  • 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.settings is always empty for now.

Engines

Unity, Godot and Trunk are not supported yet.

On this page