Gamehub
A little more you.

Sign in to save your favorites and make yourself at home.

For developers and publishers
Browse docs Build a paid leaderboard game
On this page

Build a paid leaderboard game

Try it first

Check one paid competition path#

You need A playable game, saved competition rules and your chosen trusted score backend.

  1. Read playmos_get_paid_competition_guide and save the entry price and competition rules through MCP.
  2. Inspect the service plan and complete the selected admission, replay verification and score submission setup.
  3. Test a valid run, a rejected replay and recovery of the same saved result without another charge.

Check your result You can distinguish saved rules from a working paid competition and identify the actual admission, verification and leaderboard evidence.

Call playmos_get_paid_competition_guide on public or game MCP to read this workflow. A game connection controls one game. A publisher connection handles studio contest plans and testnet pools.

Base Sepolia uses test USDC. An entryMicro value of 250000 means 0.25 test USDC. A 600-second contest window lasts ten minutes. The game can be shorter.

Choose the price and prizes#

A prize pool holds the entry money. The contest rules say how much each play costs, when entry closes, and how prizes are split. Save those choices at the current draft version. Read again if someone else changed the draft.

MCP connection — game.

playmos_get_competition_rules · playmos_save_competition_rules

Connect the managed pool and tennis backend#

The studio controls and operates its pool. Playmos holds neither admin nor operator roles and provides independent anti-scam review. Read playmos_get_managed_competition for the exact build. Reuse a registered pool from playmos_list_managed_competition_pools, or call playmos_prepare_managed_competition_pool for an unsigned deployment controlled by the saved studio wallet. That wallet sends the transaction. Call playmos_register_managed_competition_pool first for its ownership message, then again with the wallet signature. Call playmos_prepare_managed_competition_series to prepare the saved entry terms; the studio wallet sends that configuration. Bind the confirmed pool and series with playmos_activate_managed_competition, bindExisting:true, existingPool and existingSeries. No agent signs or sends transactions. Ownership and chain rules must match. Existing publisher workflows also expose playmos_list_contest_pools, playmos_prepare_contest_pool and playmos_register_contest_pool; these preserve the same studio control and wallet-proof boundaries.

MCP connection — game or publisher; external pool tools require publisher.

playmos_get_managed_competition · playmos_list_managed_competition_pools · playmos_prepare_managed_competition_pool · playmos_register_managed_competition_pool · playmos_prepare_managed_competition_series · playmos_activate_managed_competition · playmos_list_contest_pools · playmos_prepare_contest_pool · playmos_register_contest_pool

Submit the contest plan for review#

List existing contest plans so you can reuse yours. Create or update the plan for the saved game, then submit its current version for independent review. For managed tennis, playmos_submit_managed_competition_review reuses the saved terms and submits a matching contest plan. The agent cannot approve it. Playmos must approve the exact build and matching contest terms before paid entry can be prepared. For other integrations, use the publisher contest tools. The studio keeps both pool roles throughout review. A saved plan needs the matching series before it can accept paid players.

MCP connection — publisher.

playmos_submit_managed_competition_review · playmos_get_contest_guide · playmos_list_contests · playmos_create_contest · playmos_update_contest · playmos_submit_contest

Give each paid play one ticket#

For managed tennis, call playmos_prepare_paid_tennis_entry with the buildId and a stable requestId. It returns unsigned SDK wallet calls. The linked wallet authorizes and sends payment separately. Pass its original transaction hash to playmos_confirm_paid_tennis_entry; pending means check that same transaction again. A confirmed receipt produces Ready, then playmos_start_paid_tennis_run starts the run after explicit Play. Use the existing Playmos SDK paid-entry adapter for other games. The backend checks the payment and gives the player a ticket tied to their account, game build, rules, round and seed. The player presses Play after confirmation. Keep an unused ticket so reconnecting can resume it. A pending payment should stay pending while the backend checks it.

MCP connection — game or publisher.

playmos_prepare_paid_tennis_entry · playmos_confirm_paid_tennis_entry · playmos_start_paid_tennis_run · playmos_get_integration_example

Let the server check the score#

The game records the player’s button presses by tick. The server plays that recording through the same rules, using the seed on the ticket. The leaderboard saves the score the server calculates. Submit the bounded recording with playmos_submit_paid_tennis_replay and read playmos_get_paid_tennis_leaderboard for its exact build and epoch. The Hub runs the registered tennis simulation; uploaded scripts are never executed. get_managed_competition reports persisted confirmed-payment and replay evidence. Local fixtures, hosted checks and real testnet payments are separate evidence. Each production game still needs independent exact-build review and compatible hosting.

MCP connection — game.

playmos_submit_paid_tennis_replay · playmos_get_paid_tennis_leaderboard · playmos_get_managed_competition · playmos_get_game_services

Try the things that can go wrong#

Try a lost response, a repeated request, an expired ticket, a wrong wallet, a changed game build and a changed score. For tennis, sending the same finished recording again returns the saved result. Sending a changed result fails. A retry must keep the original payment and ticket.

MCP connection — game.

playmos_record_build_evidence · playmos_get_handoff

Check the exact release#

Read the service checks for the build you will release. Check that entry, payment confirmation, replay verification, leaderboard delivery and settlement work together. Complete the required review and publisher approval. Managed static ZIP hosting currently serves practice games. A paid release also needs a compatible configured runtime. The studio wallet performs signing and spending steps.

MCP connection — game.

playmos_get_game_services · playmos_get_publishing_guide

If it did not work#

Keep the payment and run IDs when a check is pending. For managed setup gaps, follow the reported Playmos task; external pool registration is only for your selected external pool.

Try one variation

Continue with the next guide →