Docs
Make a browser game and publish it free. Multiplayer, saves and accounts are built in.
What every game gets
- Multiplayer: public and private servers, teams, matchmaking and ranked play. Onceworlds runs the servers.
- Players: names, avatars, friends, invites and chat in the platform menu.
- Saves that follow players to any device, badges and leaderboards.
- Phones and tablets: on-screen controls, fullscreen and orientation.
- A place to be found: a game page, link previews and a place on the home page, with plays, likes and favorites.
It all arrives as window.onceworlds, added to every game: the SDK, in the platform guide.
Any web stack
Make the game with whatever fits it: three.js, PixiJS, Phaser, a plain canvas, WebGL or the DOM, any library from a CDN, with or without a build step. The platform guide covers what makes a game good here, how to load a library, the SDK and multiplayer.
npx @onceworlds/cli new my-game --stack three
That starts a folder on three.js (or pixi, phaser, canvas) with the platform wired in. The Onceworlds engine is an optional library, for games that want its structure. Already made it in Godot or Ren'Py? Upload its web build.
Ways to publish
- Describe it: on Create, say what you want to play. Edit opens with it in the chat: send it and the game is made, then change it by asking, play it with friends and publish with Share. Code shows its files.
- With your AI: connect Claude Code, Codex or another tool through the CLI (Upload). It pushes drafts; you play each one and publish.
- From GitHub: import a repo on Upload. Every push goes live, other branches get preview links, and it opens in Build.
- By upload: drop a folder or a zip on Upload. What you can upload.
New games start private. Publishing picks who can play: Private (only you), Unlisted (anyone with the link) or Public (listed on Onceworlds; games from new creators are reviewed first).
What you can upload
Any game that runs in a web browser: its web build, as a folder or a zip, with an index.html at the top.
| Made with | What to upload |
|---|---|
| HTML5 (canvas, three.js, Phaser…) | The folder with index.html, or the folder your build makes. |
| Godot 4.3 or newer | Project > Export > Add > Web, with Thread Support off. Export into an empty folder, name the file index.html, and upload that folder. |
| Ren'Py | In the launcher: Web, then Build Web Application. Upload the folder or zip it makes. |
| Other engines (Unity, GameMaker, Construct…) | Their web export, with compression and threads off. We haven't tried each of them, so play yours here before you publish. |
What can't run here:
- Programs to install (
.exe,.app,.apk). Games here run in the browser. - Engine projects (
project.godot,.rpyfiles). Export them first. - Compressed builds (
.br,.gz,.unityweb). - Threaded builds (
SharedArrayBuffer).
Build
Build opens every game you made here: a game you described, a template's scenes, the code your AI wrote, a folder you uploaded, a GitHub repo. Its AI chat runs on credits.
Switch between Simple (the game, the box to ask the AI, the chat, Share) and Advanced (every panel) in its top bar; it remembers your pick. Phones get Simple.
- Scenes open in the scene editor. A game drawn in code opens on its code, with completion for the engine.
- Files: new files and folders, rename, delete, upload. Pictures and sounds show in the Inspector.
- Play runs your changes, with up to four players side by side. Save keeps a draft; Publish puts it live.
- Project Settings edits
onceworlds.json: name, description, engine, icon and pictures.
A game uploaded as built output (a dist folder) opens as that output: change its source where you build it.
GitHub games
If you can push to a game's repo, it opens in Build, read from the repo through the Onceworlds GitHub App.
- Play tries your changes before anything is committed.
- Save commits them as you to the
onceworlds/buildbranch. Your workflow deploys it as a preview. - Publish merges
onceworlds/buildinto your production branch, and your workflow puts it live. - Nothing is force-pushed. If someone pushed in the meantime, Build asks you to reload; a merge that conflicts is yours to merge on GitHub.
- A repo that builds before it deploys (a
distfolder,npm run build) opens read-only.
Limits
- Up to 1 GB a game and 500 MB a file (5 GB and 2 GB with Pro). WebAssembly works.
- Games can't reach outside servers: multiplayer, saves and API calls go through Onceworlds.
- An engine's own saves (IndexedDB: Godot's
user://, Ren'Py's save slots) stay in the player's browser, up to 100 MB a game.onceworlds.savefollows the player to other devices.