Publishing

What happens to an upload before it goes live, how versions and launches work, and how to keep the checks green.

Publishing has two halves. An upload creates a version and resets its checks. A launch makes a checked version the live one. Uploads are cheap and frequent; launching is a deliberate step you take after playing the version yourself.

What an Upload Does

Remix Desktop and the CLI publish a project folder in five steps. An upload through the HTTP API sends a finished document and starts at step 3:

  1. Compile. A project with game-main.ts is compiled into one HTML document. Imports of three and @remix-gg/three are mapped to the pinned browser engine; nothing is inlined. A single-file game is taken as is.
  2. Host assets. Every literal assets/<path> reference in the built code is uploaded and rewritten to its hosted URL. Achievement icons declared in remix.json are hosted the same way.
  3. Inject the SDK. The platform adds the Remix SDK script tag, or replaces the one the document already has. The Studio on remix.gg saves a pasted document as written, so a game made there includes the tag itself. Never bundle a second copy into your code: two copies run the handshake twice.
  4. Sync declarations. leaderboards and achievements from remix.json are created or updated on the platform right away, so they apply to a live game before you launch the new version. The response lists what was created, what changed and any warnings.
  5. Reset checks. Every upload clears the version's checks. The automated review runs again when you launch it.

Uploads overwrite the latest unpublished version. If the latest version has been launched, the upload creates a new draft instead.

Declaration Warnings

Boards and achievements are declared once. A board's sort, operator and reset are fixed by the first upload that declares it: changing one of those on a later upload is ignored with a warning, and the name and metadata still update. An achievement's name, description, icon and hidden can change on any upload. Declaring more than your game's limit is refused with a warning naming the cap. Read the warnings in the publish output.

Launching

Launch a version from the game page in the Studio, from Remix Desktop, or with remix publish --launch. The version must pass an automated review, which runs as part of the launch. The Studio and Remix Desktop also ask for a name and an icon, and Remix Desktop asks for a gameplay trailer for each platform you choose. Launching sets the version live on every surface at once. Play it first: passing review does not make a game fun.

Level games lock their mode on first launch. The level count can grow on later versions but cannot shrink.

Where a Game Appears

Which surfaces list a game follows its presentation in remix.json, or the platforms you choose when you launch from Remix Desktop. Mobile games are everywhere. Desktop games are listed on Remix Desktop and wide web windows, and phones show a preview with the trailer and creator details instead of booting the game.

Keeping the Checks Green

  • Call ready() before the first run and gameOver exactly once per run. Open-ended games never call gameOver.
  • Reset on play without reloading the page.
  • Reference media with literal assets/ paths.
  • Keep the document self-contained. Fetching game code from a third-party host at runtime can fail the automated review.
  • Load the SDK once, and never bundle a copy into your code.

See Launch Checklist for the full list.