Arcade

For developers

Put your web game in front of players

Shipped a browser game? Don't let it sit on a bare domain. Submit it to the Bounty Board Arcade and it comes with players, leaderboards, audience stats, and a marketing layer that puts creators to work on your game. Free, no payment setup required.

  • Free, no payment setup
  • Live in ~5 minutes
  • You keep ownership

How it works

Live in three steps

  1. 1

    Create a free studio account

    Solo dev or team — no fees, no payment setup, about two minutes.

  2. 2

    Submit your game

    Link a game URL or upload a build (.zip) — plus a title and square thumbnail. Two minutes; no SDK required to start.

  3. 3

    Go live

    After a quick review your game is live in the arcade with play tracking and leaderboards. List it on the marketplace anytime to run creator campaigns.

Two paths in

Two ways to bring your game

  • You host it

    Link a URL

    Already hosting your game? Paste an https URL that drops players straight into play — you keep your domain and your build, we just embed it.

    Best when your game already lives on your own site — it just needs to allow iframe embedding (we check before you submit).

  • We host it

    Upload a build

    No host of your own? Drop a host-agnostic HTML5 build as a .zip and we host it for you — Unity (WebGL), Three.js, Phaser, or plain HTML5/Canvas.

    index.html at the root, uncompressed, up to 64 MB per file, 250 MB total, and 64 files. Cloud saves and leaderboards come free through the SDK.

Need help with an unsupported build?

Pre-compressed Unity, an odd engine, or a submission that won't go through? Reach out and we'll get your game in.

Everything included

What your game gets

  • Players, instantly

    Your game on the arcade wall next to a curated catalog — daily picks, featured rails, and jump-back-in keep people playing.

  • Leaderboards built in

    Three lines of JavaScript give your game real high-score boards. Every game gets weekly top-player boards automatically, no code at all.

  • Your audience, measured

    Plays, unique players, and playtime per game on your studio dashboard.

  • A marketplace on-ramp

    Once approved, list your game on the marketplace in a couple of clicks — pre-filled from your submission, shown on your studio profile and the community page with a "Play in arcade" tag.

  • The marketing layer

    Start campaigns and creators make content for your game — the players already on your page see them first. Approved Partner games can also join rewarded ad revenue share, whether uploaded or hosted at your own embed URL.

  • WebXR welcome

    VR games get the headset permission, a VR badge, and the /arcade?vr=1 filter — playable straight from a Quest browser.

Make it count

Set your game up to win

  • Start in seconds

    Players decide fast. Skip splash and title screens and drop them straight into gameplay, and keep your build lean (~10 MB is a good target) so it loads quickly on any connection.

  • Play anywhere

    A big share of plays are on phones. Add touch controls and, where you can, support both portrait and landscape — games that work in portrait reach the most players.

  • One click in

    No installs and no login wall before the fun. The arcade embeds your game and players are in instantly, so a linked URL just needs to allow iframe embedding.

The SDK

Leaderboards in three lines

Optional but worth it: drop the SDK into your game and players compete for real high-score placement — and guests who set a score get nudged into an account to claim it. The same SDK also powers lifecycle events, cloud saves, WebXR playtime, and allowlisted rewarded ad breaks. Read the full Arcade SDK docs.

Leaderboards
<script src="https://www.bountyboard.gg/arcade-sdk/v1.js"></script>
<script>
  BBArcade.init();                // returns a Promise; no await needed here
  BBArcade.gameLoadingFinished(); // your game finished loading
  BBArcade.gameplayStart();       // player started a run
  BBArcade.submitScore(1250);     // whenever the score changes
  BBArcade.gameplayStop();        // player died / paused
  BBArcade.gameOver(1250);        // final score
</script>

Rewarded ads

Rewarded ads are allowlisted during review for approved Partner games, including externally hosted embed URLs. Call BBArcade.prepareRewardedAd() while your own “Watch ad for reward” button is disabled, enable it only when preparation is ready, then call prepared.show() directly inside that click/tap handler. Grant only when the final status is viewed; dismissed or unavailable ads stay non-rewarding and the normal fallback remains available. Bounty Board runs the AdSense account, attributes revenue per game, and pays your studio its share — 90% by default — in monthly Stripe settlements once your accumulated balance clears the $50 minimum. Revenue from an external game host remains held until its per-game provider reporting is verified.

Rewarded ad
const watchAdButton = document.querySelector('#watch-ad');
watchAdButton.disabled = true;

const prepared = await BBArcade.prepareRewardedAd({
  placement: 'revive',
  reward: 'extra_life',
  onStart: () => pauseAudio(),
});

if (prepared.status === 'ready') {
  watchAdButton.disabled = false;
  watchAdButton.addEventListener('click', async () => {
    const resultPromise = prepared.show(); // call directly from this click
    watchAdButton.disabled = true;
    const result = await resultPromise;
    resumeAudio();
    if (result.status === 'viewed') giveExtraLife();
    else showNoReward(result.status); // dismissed/unavailable/error: no reward
  }, { once: true });
} else {
  showAdUnavailable(); // no reward; keep the normal fallback available
}

Cloud saves

Uploaded builds run sandboxed with no localStorage, so player progress saves through the SDK instead — stored per player and synced across devices (about 1 MB each).

Cloud saves
await BBArcade.save(JSON.stringify(state)); // persist progress (logged-in players)
const data = await BBArcade.load();         // your saved blob, or null

WebXR (VR) games

VR games get the headset permission and the arcade's VR filter out of the box. Wire two extra calls to your XRSession so playtime keeps tracking while the headset hides the page, credited as VR time:

WebXR
BBArcade.xrSessionStart();  // after navigator.xr.requestSession(...)
BBArcade.xrSessionEnd();    // in the XRSession 'end' event

Your game deserves players

Most reviews complete within 2 business days — we'll email you either way. Link your own URL and keep your domain, or upload a build and we host it — either way you keep ownership.