---
title: "Godot games"
description: "A Godot 4 game exported for the web runs on KUMODeck. Export it, put the folder on KUMODeck, and open the link."
url: "/docs/guides/godot/"
lang: en
index: "/llms.txt"
---
# Godot games

A Godot 4 game exported for the web runs on KUMODeck. Export it, put the folder on KUMODeck, and open the link.

## 1. Export for the web

1. In Godot, open **Editor › Manage Export Templates** and download the templates for your Godot version (once).
2. Open **Project › Export…**, press **Add…** and pick **Web**.
3. Set **Export Path** to `index.html` in an empty folder. The link opens `index.html`, so the name matters.
4. Leave **Thread Support** off unless your game needs threads (see below). Off is the default.
5. Press **Export Project** and leave **Export With Debug** off.

The folder looks like this:

```text
index.html
index.js
index.wasm
index.pck
index.audio.worklet.js
index.audio.position.worklet.js
index.png, index.icon.png, index.apple-touch-icon.png
```

## 2. Put the folder on KUMODeck

Pick one:

- **Ask your AI**: "Publish my Godot game in this folder with KUMODeck." The engine file (`index.wasm`) is about 40 MB, more than an AI can send in a message, so your AI gives you a link to an upload page. Drop the folder (or a zip of it) there.
- **From a terminal**: `kumodeck deploy path/to/the/folder` (add `--env production` to put it on the public version).

It goes on the test version first. Open the link it gives you and play.

## Thread Support

With **Thread Support** on, the game uses `SharedArrayBuffer`, which browsers allow only when the page sends two extra headers.
Put a file named `_headers` (no extension) next to `index.html` before you upload:

```text
/*
  Cross-Origin-Opener-Policy: same-origin
  Cross-Origin-Embedder-Policy: require-corp
```

Without this file, a game exported with Thread Support stops at the start with
"The following features required to run Godot projects on the Web are missing: Cross-Origin Isolation … SharedArrayBuffer".
With these headers, images or scripts from other sites load only if those sites allow it. With Thread Support off, you need neither.

Use the `_headers` file rather than Godot's **Progressive Web App › Ensure Cross Origin Isolation Headers** option.

## If something goes wrong

| What you see | What to do |
|---|---|
| The link shows "404" | The export is not named `index.html`. Export again with **Export Path** `index.html`, or rename the `.html` file only (keep the other names). |
| "Cross-Origin Isolation … SharedArrayBuffer" is missing | Add the `_headers` file above, or export again with **Thread Support** off. |
| A file is over 100 MB | One file can be up to 100 MB ([Limits](/docs/guides/hosting/index.md#limits)). Move large assets out of the `.pck` and load them when needed. |

See also: [Unity games](/docs/guides/unity/index.md) · [Hosting & deploy](/docs/guides/hosting/index.md)
