Playing and leaderboards
The game page, the wallet you connect to play, how runs are posted, per-game leaderboards, likes, tips and remixes.
Every published game has its own page, /play/<id>, where it runs on the same runtime as in the studio. Playing a published game needs a connected wallet: that is the anti-bot rule that makes play counts worth something. One more signature, at the end, puts your score on the leaderboard.

Finding games
The Games page lists published games and the showcase templates. Filter by mode, sort by most played (the default) or newest. Each card shows the number of plays and players.

Connect a wallet to play
A published game does not start until a wallet is connected: on its own page and in the mini-games on the home page, the Play button is replaced by Connect wallet to play, and the run starts as soon as the connection is accepted. The studio’s Test step is not affected: your own game runs there with no wallet, as often as you like.
This is the anti-bot rule that makes play counts meaningful. Rewards are computed from how many wallets played a game and how many runs they played, capped at 10 per wallet per 24-hour epoch; if anything that can open a page could post runs, the counter would measure scripts, not players. A run posted by a connected wallet counts fully toward the creator’s weight; the leaderboard asks for one thing more: the player signs the run.
No account, no fee
$SANDBOX token is only asked for when you publish.The game page
- The game, with its mode’s controls (see Game modes).
- Fullscreen: the button at the top right of the game frame fills the screen with the game and its HUD; Esc, or the same button, leaves it.
- Sound: the button next to it mutes or unmutes the sound effects.
- The card: title, description, creator, plays, players and, for a remix, a link to the original game.
- The game’s leaderboard: the best signed scores.
- Remix: opens a copy of the game in your studio.
- Tip: 0.001 ETH sent in full to the creator through the contract, for games published on-chain once the contract is deployed.
Controls of each mode: Game modes.
Posting runs
Connect, then play
Connecting signs a short session message once (no transaction, no fee). It ties every run of that sitting to your wallet, for at most six hours.End of run: the post
As soon as a run ends, its result (score, time, won or not, mode) is posted to the platform with your wallet. It counts fully toward the game’s weight for the current 24-hour epoch.Sign to get ranked
The Sign to get ranked button asks your wallet to sign the run itself, score included (again no transaction, no fee). That signature is what puts the score on the game’s leaderboard.
Sandbox session
game: <game id>
at: <timestamp ms>
Sandbox play
game: <game id>
score: <score>
at: <timestamp ms>Anonymous runs
Templates do not count
/api/playsrecords a runServer checks
| Check | Error |
|---|---|
| The body has game, score (number) and at (timestamp) | 400 Bad play |
| at is within 10 minutes of server time | 400 Stale play |
| The game exists (published or template) | 404 No such game |
| When an address is given, the run or session signature matches | 401 Bad signature |
| The signed session is less than six hours old | 401 Stale session |
The score is rounded and clamped to zero when negative.
Leaderboards
Every game has its own leaderboard, fed only by runs signed one by one. One row per wallet: a new score only replaces the old one when it is strictly better. The game page shows the top 20.
Scores and rewards
Likes
Games and library assets can be liked. A like is idempotent: a visitor counts once per target, identified by their wallet when connected, otherwise by a salted hash of their IP. Counts are refreshed at most every 30 seconds.
/api/likes?ids=a,b/api/likes{ id, address? }Platform in draft mode
Without storage configured (local development), runs are not recorded: the page says so after the run, and the game stays playable.