Every game, metaverse or layer that connects is a world, and connected worlds are listed in the registry. A world's profile is
openspatials-world.json. The website tools check a world or an avatar from their public files.
OpenSpatials Connect 0.5.3. The skills are published at https://openspatials.com/developers/skills/SKILL.md, so your AI agent can read them from there.
You built a game with an AI coding agent. With one prompt, your agent can connect it to other games. Then a player can arrive in your game with a character from another game, play with your controls, and walk through a portal to the next game with the same character.
How long it took. We timed fresh agents on kit 0.5.3, connecting four games they had never seen, once each, alone on one machine. Every run ended with the self-check passing and no human help:
- Base Siege, a plain canvas game: 8.3 minutes with Codex, 8.7 with Claude;
- City Action, a Godot game: 11.8 minutes with Codex, 9.2 with Claude;
- Orange Shift, a Three.js maze game: 11.6 minutes with Codex, 19.1 with Claude;
- Horror House, a Three.js game built with Vite: 11.1 minutes with Codex, 9.0 with Claude.
That covers a local connect with a self-check. Hosting at a public address is extra.
What you need
A game in a supported engine:
- a web game made with Three.js, Kaplay, or a plain 2D
<canvas>; - or a Godot 4 game (tested with 4.7.2).
Phaser and Unity are not supported yet. The agent stops and tells you if your engine is not on the list.
- a web game made with Three.js, Kaplay, or a plain 2D
An AI coding agent that can read and edit your game's files and run commands on your computer.
Node 22 and Google Chrome on your computer. For a Godot game, also Godot 4 on your path, with its web export templates if players will cross into it by link.
Nothing else to install. Your agent downloads the plugin OpenSpatials Connect once (openspatials-connect-0.5.3.zip) and sets it up, as the skills tell it.
You write no code. You may need to answer a question or two, such as where the exit portal should lead.
The one prompt
Open your game's folder in your AI agent and give it this:
Make my game connect.
Use the skills at https://openspatials.com/developers/skills/SKILL.md
That is the whole prompt. The skill holds everything else the agent needs.
What the agent does
- Looks at your game. It finds the engine, the player, and the game loop. It also notes three things that change how a visitor gets in: a start menu, a game that locks the mouse, and a player moved by physics.
- Copies in the connector. That is one
openspatials/folder of files (for Godot,addons/openspatials/). Do not edit these files: they are copies of the lab's code. - Writes your game's profile. This small file,
openspatials-world.jsonnext to your start page (for Godot, the project'sopenspatials-world.json), holds your game's name and what visitors may bring in. By default, visitors' items are shown as looks only and have no power in your game. - Adds a few marked lines to your game. Every added line carries a
HOPcomment. In the trials this was about 20 to 30 lines in one to four files. The agent does not change your game's rules, levels, physics or art. The lines do four things:- A visitor skips your start menu and walks straight in.
- In a game that locks the mouse, a visitor can walk with the keys at once. Mouse-look starts with their first click.
- The page declares its language and turns off Chrome's offer to translate it, because that offer can take the keyboard away from your game.
- An exit portal, plus a back portal for visitors who came from another game.
- Measures where the portals go. It walks a test character with each arrow key and reads where the player ends up.
- Runs the self-check. A test character, "Pip", arrives with a hat and a sword. The check confirms that Pip shows up, moves with the keys with no click, and leaves through the exit portal with the same character. A character with missing models must fall back to a picture, and a name-only character to a name tag. A broken file and an unsafe file must be refused while the game keeps running. The check ends with
Result: PASSorResult: FAIL. - Reports to you in plain words: what it found, which files it added or changed, the self-check result, anything it could not check, and what you still need to do.
The report ends with "You need to" items like these:
- Choose the exit address. Until you give one, the exit portal leads to the kit's default, the world registry at
https://openspatials.com/worlds/. - Set your game's public address in the profile before you publish. Until then it says
http://localhost:4850/.
Common problems
These come from the 2026-10-10 timed trials and from this page's own runs.
| What you see | Why | What to do |
|---|---|---|
FAIL The page declares its language... with <html lang="it"> declares a language other than English |
Your page says it is in another language. Chrome may then offer to translate it, and that offer takes the keyboard from the game. | If your game's text is English, ask your agent to set <html lang="en" translate="no">. If the game really is in that language (Pixel Princess starts in Italian), keep the language, add translate="no", and run the check with --allow-lang it (with your language's code). A game that switches language while it runs keeps the language its page starts with. |
Godot: NOT VERIFIED The player moves, and walking into the exit portal leaves |
The desktop check runs Godot with no keyboard, so walking and portals cannot be tested there. | Players cross into a Godot game through its web export, so check that too. Ask your agent to run the Godot web commands below. |
Godot web export: <html> has no translate="no", or no openspatials-world.json next to the page |
The export was made without the skill's Godot web step. Godot writes its own web page on every export, and it keeps the profile inside its game data. | Ask your agent to run the Godot web commands below. From then on every export, also from the Godot editor, keeps the page rules. |
| A visitor arrives, but your start screen stays on top | The agent may start the game with an inner start function instead of the one the Play button calls. | Ask your agent to start a visitor's game exactly as the Play button does, and to look at the arrival screenshot from the check (selfcheck-1-arrived.png). |
| The exit portal leads to the world registry | No exit address was given, so the agent used the kit's default, the registry (https://openspatials.com/worlds/). |
If it should lead to another world, tell your agent that world's address. Try a crossing gives you a test world to send visitors to. |
A note that the profile url is http://localhost:4850/ |
That is the local test address. | Give your agent your game's public address before you publish. To list your world in the registry, use the register tool. |
| The check cannot start because a port is busy | The check uses port 4850 for your game and 4851 for the test characters. | Add --port with a free number, for example --port 4860. The check also uses the next number up. |
| The check fails while the game loads libraries from the internet | A game that loads Three.js or other libraries from a website needs the internet during the check. | Run it while online, or ask your agent to keep local copies of the libraries. |
| In a 2D game, the portals float about half a body above the ground | The portal height was measured from the player's middle, not the feet. The probe now gives a Kaplay game's portals at the player's feet. | Ask your agent to run the probe again and use the places it suggests, or to lower the portals by half the player's height. |
Godot web commands. Your agent runs these inside your Godot game's folder (the skill's Godot step 7). The first makes the web export, ready to host as it is: it sets your game's public address and exit in its profile, gives Godot a web page that keeps translate="no" on every later export, exports the game, compresses its engine file and puts openspatials-world.json, hop.json and openspatials-wasm-gz.js next to the page. The second checks the web version. Use your game's public address and the --exit-keys value your agent's probe suggested.
node SKILL_DIR/godot-web.mjs . --url https://<your world's public address>/
node SKILL_DIR/selfcheck.mjs build/web --exit-keys ArrowUp:800,ArrowRight:2200 --port 4966
SKILL_DIR is the src/skill folder of the plugin your agent set up. Godot needs its web export templates. The folder to host or submit is build/web, with your license file added.
Where to learn more
- What the agent follows, step by step: the skills
- The connector spec and its schemas: spec 0.5
- Check your world or your avatar from their public files: the website tools
Made from docs/package/12-CREATOR-QUICKSTART.md in the OpenSpatials lab's sources.