Upload and publish
Prepare a web build, check its private preview and release updates.
Build requirements
Upload the playable output of your build. Looping serves static files; it does not run your source project or compile Unity.
What to upload
- A folder or .zip with index.html at the top, or one folder that holds it. This is the finished, playable build, not the source code.
- Unity: the Web build output (index.html, Build and TemplateData). Build with WebGL 2 and Native C/C++ Multithreading off; Brotli or Gzip compression both work. The Looping Unity package's Looping ▸ Build Web sets all of this.
- Three.js, Phaser and other web games: the built site (for example Vite's dist folder), or a single index.html. Scripts load from your own files or from cdn.jsdelivr.net, unpkg.com, cdnjs.cloudflare.com at an exact version (three@0.185.1, not three or three@latest), which the publish reads and checks.
Limits
- 2048 MB in total, 2048 MB per file, 10,000 files at most.
- No server code or secrets: files such as .php, .py, .sh, .exe, .env or .pem are refused. The game runs entirely in the player's browser.
- No wallet or seed-phrase prompts and no redirects away from the game's page. The site handles wallets and payments; games only name what they sell.
dist/
index.html
assets/
game.js
game.css
sprites.png
rules.js # if your game uses authoritative rooms
sim.js # if your game uses replay verificationUpload a preview
From the website
Open Create, choose your project and upload the build folder or ZIP. For a game that has launched, upload a new build from its project tools.
From an agent
game_check checks the structure before upload. A local stdio connection uses game_publish with an absolute dir. A remote connection can publish small builds with inline files.
game_upload_ticket returns a folder-upload command and upload_url.
Publishing creates an immutable build. Previews are visible only to the creator, including updates to a public game. Preview saves, scores and rooms stay separate from public play.
Verify the build
- The upload is checked as it arrives. A build that breaks a rule is refused with each problem and how to fix it.
- Then it is started in a headless browser, and must start with no error: a game using the Looping SDK calls looping.ready() within 30 seconds (90 for Unity); a game without it shows something other than a blank screen by 12 seconds.
Read the result with project_status or site_status. Use site_check with wait: true to repeat the check and receive its result. Only a verified build can be released.
If multiplayer or checkout starts after a click, register looping.onCheck so the platform can exercise it. Read the SDK's “The check hook” section through engine_docs.
Launch and update
- First release
project_launchreturns the launch page. You choose and sign the token settings there. The registered launch makes the verified build public.- Later releases
- Upload and test a preview, then use
site_releasewith its version. The public game keeps its saves, scores and rooms policy. - Rollback
site_rollbackrestores a previously released, still verified build. Read the available versions withsite_status.- Catalog visibility
game_listlists or unlists a launched game. An unlisted game remains accessible to anyone with its link.