onceworlds

Make games

Build a browser game with your own AI, put it on GitHub, and it's live for everyone. Free.

Download AGENTS.md New game

What you can make

Anything that runs in a web browser: 2D or 3D, solo or multiplayer, a quick party game or a big world. A game is a folder of files with an index.html: HTML, CSS and JavaScript, plus images, sounds, models and fonts. Engines that export to the web work too, like Phaser, PixiJS, three.js, Babylon.js, Godot and Unity (WebGL). Python games need a web export such as pygbag.

There's no server code to write or run: onceworlds provides the servers for multiplayer, saves and accounts. A game can be up to 100 MB (25 MB per file).

Build it with your AI

Use any AI coding tool: Claude Code, Codex, Cursor, Copilot and others. First give it the onceworlds guide, AGENTS.md, which explains everything your game can use. Put it in your game's folder (games you import from the dashboard get it automatically), then ask for what you want:

Read AGENTS.md, then make a multiplayer kart racer with three tracks.
Add multiplayer to my game.
Make my game work well on phones.

Publish it

  1. Put it on GitHub

    A public or private repo, with your game in it.

  2. Import it

    In your dashboard, click New game, connect GitHub and pick the repo. onceworlds checks that it will run here and tells you what to fix. Importing adds two small files to it: onceworlds.json (your game's name and page) and a workflow that publishes every push.

  3. Push

    Your game is live at onceworlds.com/play/your-game about a minute later. Pushes to other branches get a preview link instead.

  4. Make it public

    New games are private: only you can play them. When it's ready, click Make public in the game's Settings.

Update it

Change your game and push. That's it. Every version is kept, so you can go back to an older one from Deployments in the dashboard. Errors players hit show up in the dashboard too.

Your game page

The title, description, genre, icon, thumbnails and badges come from onceworlds.json in your repo, or from the dashboard's Details and Badges tabs. A push applies the fields you changed in the file; edits in the dashboard stay until you change that field in the file again.

{
  "slug": "kart-rush",
  "name": "Kart Rush",
  "description": "Race friends around twisty tracks.",
  "dir": ".",
  "genre": "Racing",
  "icon": "store/icon.png",
  "thumbnails": ["store/thumb-1.png", "store/thumb-2.png"],
  "badges": [{ "id": "first-win", "name": "Top Step", "description": "Win a race." }]
}

The icon is square (at least 128 × 128), thumbnails are 16:9 (at least 480 wide). Your AI can draw them for you.

What your game gets

onceworlds adds window.onceworlds to every game, so plain JavaScript needs nothing installed. With it your game can use:

Chat, invites, volume and the player list are built into the platform menu, so your game doesn't need them. Everything is in the docs.

Using TypeScript or a bundler like Vite? Install @onceworlds/sdk from npm for types and autocomplete. It's the same onceworlds as on the platform, and it still runs outside it (saves in the browser, solo rooms).

npm i @onceworlds/sdk
import onceworlds from '@onceworlds/sdk';

const room = await onceworlds.rooms.join({ maxPlayers: 8 });
room.on('join', (player) => console.log(`${player.name} joined`));

How saving works

Each player has their own saves for each game, stored on onceworlds and waiting on any device they sign in on. A guest's saves move to their account when they sign up.

await onceworlds.save.set('progress', { level: 3, coins: 120 });
const progress = await onceworlds.save.get('progress'); // null the first time

Save when something happens (a level ends, a purchase), not every frame. Each player gets up to 100 keys and 1 MB per game.

What happens when you push

A GitHub Action in your repo runs the onceworlds CLI. If your game has a package.json with a build script (Vite, webpack and the like), it builds first. Then it uploads the folder named by dir in onceworlds.json, only the files that changed. onceworlds checks the files (types and sizes) and switches your game to the new version at once. Players already playing keep the old version until they reload.

Testing

Games run on onceworlds, where multiplayer and saves live. Play your private game before you make it public, or push a branch and open its preview link. To try multiplayer, open a second window: a private window plays as a guest.

Rules

Make things people can enjoy: no stolen games or art, nothing that collects passwords or personal details, no real-money gambling. The full rules are in the Terms.