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
- Submit in ~5 minutes
- You keep ownership
How it works
Live in three steps
Solo dev or team. No fees, no payment setup, about two minutes.
Link a game URL or upload a build (.zip), then add a title, a 16:9 cover image, control instructions, and at least 100 words about the game. No SDK required to start.
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
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).
No host of your own? Drop a host agnostic HTML5 build as a .zip and we host it for you: Godot 3 or single-threaded Godot 4.3+, Unity WebGL, GameMaker HTML5, Construct, Three.js, PlayCanvas, Phaser, or plain HTML5/Canvas.
index.html at the root, uncompressed, up to 64 MB per file, 250 MB total, and 160 files. Cloud saves and leaderboards come free through the SDK, and you can upload a new build whenever you like. The live one keeps serving while the update clears a quick re-review.
Need help with an unsupported build?
Precompressed 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
Make it count
Set your game up to win
The SDK
Leaderboards in three lines
<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
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
}Multiplayer lobbies
async function enterLobby() {
if (!BBArcade.multiplayer) return showSoloFallback('unsupported');
try {
const room = await BBArcade.multiplayer.joinRoom({
create: true, // or code: 'ABCD', or match: true for public quick match
// The first relay seat may choose an integer roomSize from 2 to 64 (default 8).
joinData: { roomSize: 8, avatar: 'golem' }, // always untrusted
});
// The initial welcome is already reflected in these fields.
renderLobby(room.code, room.players, room.state);
room.on('playerJoin', () => renderPlayers(room.players));
room.on('playerLeave', () => renderPlayers(room.players));
room.on('snapshot', ({ state }) => renderRoomState(state));
room.on('event', event => {
if (event?.type === 'relay') receivePublicMessages(event.messages);
else if (event?.type === 'relay_host') setHost(event.hostId);
else handleRefereeEvent(event);
});
room.on('connection', ({ reconnecting }) => setReconnecting(reconnecting));
let ended = false;
room.on('close', ({ reconnecting }) => {
setReconnecting(reconnecting);
if (!reconnecting && !ended) showConnectionClosed();
});
room.on('end', ({ results }) => {
ended = true;
showResults(results); // relay rooms never emit end
});
onGameMessage(data => {
// Relay sends this to every seat; never put private/hidden data in it.
if (!room.trySend(data)) {
if (!room.connected) setReconnecting(true);
else showSendFailure();
}
});
onExit(() => room.leave());
return room;
} catch (error) {
showSoloFallback(error.code || 'error');
return null;
}
}Cloud saves
await BBArcade.save(JSON.stringify(state)); // persist progress (logged-in players)
const data = await BBArcade.load(); // your saved blob, or nullWebXR (VR) games
BBArcade.xrSessionStart(); // after navigator.xr.requestSession(...)
BBArcade.xrSessionEnd(); // in the XRSession 'end' eventPublishing questions, answered
Yes. Submit a hosted URL or an HTML5 build to the Arcade. Submissions are reviewed before going live, and approved games can add leaderboards, cloud saves, and rewarded ads through the Arcade SDK.
Browser playable HTML5 and WebGL games, either linked from a URL you host or uploaded as a build with index.html at the root, up to 64 MB per file, 250 MB and 160 files total. Games go live after a quick review for playability and content. Approval lists the game in the Arcade; it does not guarantee traffic or creator coverage.
You do. Publishing in the Arcade never transfers ownership of your game, code, or IP, and you can delist your game whenever you want. Publishing also does not automatically create a marketplace campaign.
URL linked games update whenever you deploy to your own site. Uploaded builds update by submitting a new build from your dashboard, which replaces the live version.
Eligible Arcade studios keep 90% of finalized ad revenue attributed to their game, settled monthly via Stripe once the $50 minimum is reached. Revenue shown before a month closes is an estimate. Terms apply.
The Arcade SDK adds leaderboards, cloud saves, multiplayer rooms, and rewarded ads to approved HTML5 games with a few lines of code. Integration is optional, games can go live in the Arcade without it.
Get started
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.