Publishing a game

From the Publish step to the game page: what’s missing, the cover, pinning the document, on-chain or signed draft registry, updates and remixes.

Publishing makes your game playable by everyone at /play/<id>, lists it on the games page and makes its plays count toward rewards. It all happens on the studio’s Publish step.

The studio’s Publish step
The Publish step: listing, cover, what’s missing and publishing.

Before you publish

The listing

A title (64 characters max) and a description (400 max): what it is, how you win, what makes it yours. The game mode comes from the document.

The cover

The cover is a 1280×720 image. Capture from the game renders the start of your game with the real runtime; you can also upload a PNG. It is sent with the document and capped at 2 MB.

What’s missing

The What’s missing list counts four things. It is open here, and summed up by the “x/4” chip in the top bar, wherever you are in the studio. The Publish button stays disabled until the list is complete, and every line still open is clickable: it takes you to the step that fixes it.

ItemFixed onWhat counts
A player startCastAn entity with the player start role: it comes with the character you pick.
An objective for the modeBuildA finish or checkpoints (race); a finish or coins (platformer); an enemy, a spawner or an enemy spawn (arena); obstacles, hazards or coins (runner); coins, signs, NPCs or a key (explore); a flag and a base (capture the flag); waypoints and a base (tower defense).
A titlePublishA non-empty title, and not “Untitled”.
A coverPublishCaptured from the game or uploaded as a PNG.

The server then validates the document again: known format, title and description, existing mode, at most 96 assets and 3,000 entities, consistent terrain, imported models of 12 MB at most, URL models served from the platform’s storage, and a player start.

The flow

  1. Connect a wallet

    Publishing requires a wallet on Robinhood Chain. When the token threshold is armed, it must hold 1,000 $SANDBOX.
  2. Pin the document

    The studio sends the document and cover to POST /api/games/upload. The server validates them, canonicalises the JSON (sorted keys), computes its keccak256 hash and stores it at objects/<hash>.json (and the cover at objects/<hash>.png). It returns { hash, uri, cover }.
  3. Register the hash

    On the contract when it is deployed, otherwise with a signature from your wallet (see below).
  4. List the card

    The studio calls POST /api/games/register, which writes the game card. Your game is live: the studio shows the link to its page and keeps it in the project for updates.
POST/api/games/uploadvalidates, hashes and stores
POST/api/games/registerwrites the card

Request bodies and responses in detail: HTTP API.

On-chain or draft registry

Until the contract is deployed, your wallet signs this message (no transaction, no fee):

signed messageText
Sandbox publish
title: <title>
hash: <0x…>

The server checks the signature and the token threshold, then creates the card with the id d- followed by the first 10 hex characters of the hash. The creator is the signing address. Republishing the same document keeps the id and bumps the version.

The token threshold

Publishing is reserved for wallets holding at least 1,000 $SANDBOX. The studio shows the threshold state (open or closed, with your balance) and the server checks it again in draft mode. The threshold only concerns publishing: playing, ranking and tipping stay open to everyone.

Before the token launches

As long as the token address is not configured, the threshold is open: any wallet can publish. See The $SANDBOX token.

Updates

A project that is already published shows Publish an update. The new document is pinned under its new hash; on the contract, update(gameId, contentHash, uri, title) keeps the same id and bumps the version (only the creator can call it). Players always get the latest version, and plays count for the same game.

Draft mode

In draft mode, the id depends on the hash: a modified document gets a new d-… id, hence a new game page.

Remixes

The Remix button on every game page opens a copy of the document in your studio (/studio?remix=<id>). For a game published on-chain, the document keeps the original id in meta.remixOf, and the remix page links back to the original.

Hiding and transferring

On the contract, the creator (or the contract owner, for moderation) can hide a game with setHidden; a hidden game no longer accepts tips. transferGame hands the game to another address, and shares of already settled epochs that have not been claimed follow the game. See The Sandbox.sol contract.

Backing up off platform

The Publish step also exports the project as .sandbox.json (re-importable into the studio) and the whole scene as GLB, glTF, OBJ, STL or USDZ. See Export.

What next