---
title: "Unity WebGL hosting with cloud saves and multiplayer"
description: "Yes, you can host a Unity WebGL game on KUMODeck by asking your AI: build for Web, ask it to publish the folder, drop the folder on the upload page it links, and you get a test link to play."
url: "/docs/use-cases/unity-webgl-game/"
lang: en
index: "/llms.txt"
---
# Unity WebGL hosting with cloud saves and multiplayer

Yes, you can host a Unity WebGL game on KUMODeck by asking your AI: build for Web, ask it to publish the folder, drop the folder on the upload page it links, and you get a test link to play. Compressed Brotli and Gzip builds work with no server settings. Later your AI can add cloud saves, sign-in or multiplayer rooms through a small `.jslib` plugin, with no game server to run.

Unity can already build your game for the browser. The part that takes an afternoon is everything after the build: finding a host that sends `.br` files the way the browser expects, getting a link you can send, and then wanting progress kept, or a second player in the same match. This page goes through all of it in the order it usually happens, with what to ask your AI at each step.

The Unity settings themselves (Build Profiles, compression, what the folder looks like) are on [Unity games](/docs/guides/unity/index.md). This page is about getting from that folder to a game people play.

## Before you start

- **Your AI connected to KUMODeck.** Claude Code, Codex, Cursor or another agent on your computer works best for a Unity project, since the build is a folder on your disk ([Use from an AI agent (MCP)](/docs/claude-code/index.md)). Claude or ChatGPT in a browser works too, through the upload page.
- **A Web build.** In Unity, pick **Web** (called **WebGL** before Unity 6), keep **Brotli** compression (Unity's default), leave **Decompression Fallback** off and build into an empty folder. Don't rename or unpack anything in it.
- **A KUMODeck account** with funds or invite credit for usage fees.

## 1. Ask your AI to publish the folder

```text Ask your AI
Publish my Unity game in this folder with KUMODeck. Give me the test version's link.
```

What happens:

1. Your AI makes a KUMODeck project for the game if there is none yet.
2. A Unity build is usually larger than an AI can send in a message, so your AI gives you a link to the KUMODeck **upload page**. Drop the whole folder there, or a zip of it.
3. The build goes on the **test version**, an address with `--dev` in it, and your AI gives you that link.

If you use a terminal, `kumodeck deploy path/to/the/folder` puts the same folder on the test version.

**Try it:** open the link on your computer and on your phone. While it loads, the browser gets each `.br` or `.gz` file with the right `Content-Encoding` and type, which is what Unity's loader needs. There is nothing to set for this.

## 2. Fix, rebuild, try again

Change something in Unity, build into the same folder, and ask "Put the new build up again." Every version is kept, so if a build breaks the game, "roll back to the previous version" switches back on the test version.

If the page stays blank after a long wait, open the browser's console: a file missing from the upload shows there as a 404. If it says "Unable to parse Build/….br", the folder was changed after the build. Build again and upload the folder as it is. More fixes are in [If something goes wrong](/docs/guides/unity/index.md#if-something-goes-wrong).

## 3. Publish

When the test version plays well, say:

```text Ask your AI
Publish it.
```

Your AI opens a KUMODeck confirmation page and you press **Publish** yourself. Putting a game on the address everyone can open always waits for your press. The public address is the same name without `--dev`, and your own domain works too ([Hosting & deploy](/docs/guides/hosting/index.md)).

## 4. Add saves, sign-in or multiplayer from C#

Hosting needs nothing from the KUMODeck SDK. When you want more, the features are JavaScript calls in the browser, and Unity reaches browser JavaScript through a **`.jslib` plugin**: a small file in `Assets/Plugins` whose functions your C# calls, and which can send results back to a GameObject with `SendMessage`. Your AI can write both sides.

```text Ask your AI
Add cloud saves to my Unity game with KUMODeck: a .jslib plugin that saves and loads the player's progress, and the C# that calls it. Load the KUMODeck SDK in the page.
```

What your AI does:

1. Turns on cloud saves for the project.
2. Adds the KUMODeck SDK to the page the build uses. A rebuild writes `index.html` again, so the lasting place is a custom **Web template**, Unity's way to change the page it writes.
3. Writes the `.jslib` functions that call `kumo.saves.set` and `kumo.saves.get`, and the C# that calls them and gets the result back.
4. Puts a new test version up for you to try.

The same pattern works for the other parts:

| Ask for | What players get | The details |
|---|---|---|
| "Save each player's progress to the cloud" | progress that is still there next visit, under slot keys such as `progress` | [Cloud saves](/docs/guides/saves/index.md) |
| "Add a Sign in to keep your progress button" | guests first, then sign-in with X, Discord, Google or an email link to keep progress on other devices | [Authentication](/docs/guides/auth/index.md) |
| "Make it playable online" | quick match or a private room with a 6-letter code, with no game server to write | [Multiplayer rooms](/docs/guides/multiplayer/index.md) |

**Try it:** for saves, play, close the tab and open it again. For rooms, open the test link in two different browsers (or one normal and one private window) and join the same room.

## What it cannot do, and conditions

- **One file can be up to 100 MB.** An uncompressed `.data` file is often the largest; turn on Brotli or Gzip, which also loads faster ([Limits](/docs/guides/hosting/index.md#limits)).
- **Big builds do not go through a conversation.** Claude or ChatGPT in a browser cannot send a Unity build in messages; the upload page takes it (up to 100 MB per file).
- **You cannot set `Content-Encoding` yourself** in `_headers`. KUMODeck keeps it so it always matches the file.
- **Multithreading needs two headers.** If you turn on Unity's experimental multithreading for the web, put a `_headers` file next to `index.html` ([Multithreading](/docs/guides/unity/index.md#multithreading)). With it, images or scripts from other sites load only if those sites allow it.
- **The features are reached through JavaScript.** There is no C# package; the `.jslib` plugin is the bridge. Rooms relay messages and keep shared state, but they do not run your game logic on a server.
- **Saves are written by the player's own browser.** Anything a player must not change, such as scores that count against other players, belongs in your own server code ([Functions](/docs/guides/functions/index.md)).
- **Your AI cannot publish to everyone.** The public address always waits for your press.

## What it costs

There is no free tier. Hosting, saves and rooms are taken from your prepaid balance at cost, and an invite code adds $5 of credit for usage fees. The confirmation page shows an estimate for the version before you press **Publish** ([Pricing](/docs/pricing/index.md)).

New to KUMODeck? [Start here](/docs/start/index.md) connects your AI in a few steps.

Sources for the Unity facts on this page, checked on 2026-11-05: [Deploy a Web application](https://docs.unity3d.com/Manual/webgl-deploying.html), [Web templates](https://docs.unity3d.com/Manual/webgl-templates.html), [Interaction with browser scripting](https://docs.unity3d.com/Manual/webgl-interactingwithbrowserscripting.html), [Code examples: call JavaScript from Unity](https://docs.unity3d.com/Manual/web-interacting-code-example.html) and [Call Unity C# from JavaScript](https://docs.unity3d.com/Manual/web-interacting-browser-js-to-unity.html).

## Questions and answers

### Do I need to change server settings for Brotli builds?

No. Files ending in `.br` or `.gz` after `.js`, `.wasm`, `.data` and the other build types are sent with the matching `Content-Encoding` and the type of the file inside. Leave **Decompression Fallback** off.

### Why does my AI give me an upload page instead of sending the build?

A Unity build is usually larger than an AI can send in a message. You drop the folder, or a zip of it, on the KUMODeck upload page, and it goes on the test version.

### My build has a file over 100 MB. What can I do?

Turn on **Brotli** or **Gzip** compression in **Publishing Settings** and build again. The uncompressed `.data` file is usually the one over the limit.

### Can a Unity WebGL game have multiplayer without a server?

Yes. Your AI can add KUMODeck's multiplayer rooms through a `.jslib` plugin: quick match, private rooms with a 6-letter code, shared room state and reconnection. There is no game server for you to write or run, though competitive games should check moves on the host or in your own server code.

### Is there a C# SDK for Unity?

No. The KUMODeck features are JavaScript calls in the browser. From C#, you reach them through a `.jslib` plugin, the same way as any browser API in a Unity web game.

### Do I have to add the SDK again after every build?

Not if it is in a custom Web template. A rebuild writes `index.html` again, so ask your AI to put the KUMODeck SDK in the template the build uses.
