At a natural break, the game becomes a 15-second branded Bonus Round. Players keep their own character and controls. They play the ad instead of skipping it. Your brand gets experienced. Game devs get paid.
Cheese Puffs is a fictional demo brand. In test mode, your own game shows a free test ad, so you can see a real round right away.
Watch Bo learn a game
Scroll down a little and watch me learn a real game.
…
PlayableOpt-in rewardsAd breaks, but funNative in-game15-second roundsthree.js70% to developersPay per view, play or clickBrand-safe matchingPlayableOpt-in rewardsAd breaks, but funNative in-game15-second roundsthree.js70% to developersPay per view, play or clickBrand-safe matchingPlayableOpt-in rewardsAd breaks, but funNative in-game15-second roundsthree.js70% to developersPay per view, play or clickBrand-safe matchingPlayableOpt-in rewardsAd breaks, but funNative in-game15-second roundsthree.js70% to developersPay per view, play or clickBrand-safe matching
How it works
From one URL to a round people play.
You paste a URL. That’s your part. Then our AI agents do the rest. They browse, play, design, build and test. Everything below comes from real runs of our pipeline.
01 · Your one step
Paste a URL.
Bo opens your website and finds your real logo, products and colours. Then it builds your ad kit: billboards, banners and decals from your exact logo file, your product in 3D, and your tagline.
Brand: just your websiteOne script tag and two lines of code
Then the agents · learn
They learn the brand and the game.
The brand agent reads your site: palette, logo, tone, products, mascot, and what to avoid. The play agent joins the game as a real player. It tries the controls, measures speed, size and camera, and picks a spot for a prop.
Then the agents · build
They build a native 3D ad and play-test it.
Each 15-second round is designed for this game: the mechanic, arena, hero, collectibles and copy. Our own pipeline builds the 3D assets and the music. Then an agent plays the ad in the game and checks it against a checklist before anyone sees it.
Then the players · play
Players play it. You see what happened.
At the next break, everyone drops into the branded arena with their own avatar. They play, see a sponsored leaderboard and head back. You see views, players who joined in, clicks, and earnings per 1,000 views.
index.htmlgame.jsTest mode
<!-- in <head> --><script async src="https://bonusround.io/v1/br.js"data-pub="pub_…"></script>// game.js: once, after you create your rendererBonusRound.attach({ THREE, scene, camera, renderer });
// at a natural break (after a level, between rounds)async function endRound() {
awaitBonusRound.break('intermission');
startNextRound();
}
Until you go live, your breaks play a free test ad. It’s never billed.
A Bonus Round turns the game itself into the ad. Scroll through a real one, captured frame by frame in Hop Isle.
Your gameAd Bonus Round · Cheese Puffs↩ Back to your game
Your game.
A 5-second heads-up.
Then the game becomes the ad.
And right back.
Where it plays
Rooftop Rumble
After a goal.The countdown runs over the replay.BonusRound.break('intermission')
Sky Hopper
Level complete.A 15-second round, then the next level.BonusRound.break('intermission')
Turbo TidesIn-world
Drive past the pier.The pier becomes the ad. The race keeps going.BonusRound.zone('pier')
Sky HopperOpt-in
A second chance.“Play a 15 s Bonus Round to respawn.” It pays the most.BonusRound.rewarded({ onReward })
The snippet
One script tag and two lines of code.
Add the script tag, attach it to your renderer, and tell it when your game takes a break. We handle the rest: selling the slot, making the ad, checking it was seen, and paying you.
Add your game and get your publisher ID.
Paste the snippet. The SDK checks in and Bo starts learning your game.
Play your game. A test ad shows up at your next break.
<!-- 1. One script tag --><script async src="https://bonusround.io/v1/br.js"data-pub="pub_XXXXXXXX"></script>
// 2. One line, after you create your rendererBonusRound.attach({ THREE, scene, camera, renderer });
// At a natural break (between rounds, after a level):awaitBonusRound.break('intermission');
// resolves when the round ends, or right away if there’s no ad
// Optional: a player-chosen round for a reward you pickBonusRound.rewarded({
onReward: () => giveCoins(50),
});
// Native takeover: pass your world + host adapter so players// keep your own avatar, controls and physics in the round.BonusRound.attach({ THREE, scene, camera, renderer, worldRoot, host });
Test mode is on until you go live. Test traffic is never billed.
Integrate with your AI agent
Just say “Integrate Bonus Round”.
Your coding agent reads our docs and llms.txt, finds your three.js renderer, adds the snippet and marks a break between rounds. It works with any coding agent that can read a URL.
Yes. The round runs inside your game with your player’s own avatar and controls: they move, jump and collect the brand’s items, and their score goes on a sponsored leaderboard. You can play one at the top of this page.
Will it interrupt my players?
Only when you say so. You choose when rounds play: at breaks you mark yourself, on a timer, or when a player opts in for a reward. Each round starts with a 5-second heads-up and lasts 15 seconds. Then everyone goes straight back to your game.
Which games does it work with?
Any three.js game in the browser. The SDK attaches to your scene, camera and renderer. For rounds inside your own world, you also pass a small host adapter (position, teleport, bounds) so the round uses your physics. Other engines aren’t supported yet.
What does it cost a game developer?
Nothing. You keep 70% of net ad revenue: what brands spend in your game, minus a disclosed 15% commission when an ad agency places the campaign. Each earning clears 30 days after you earn it (net-30), and you can cash out once you have $50.
How do brands pay?
You prepay into a balance, with one-off top-ups or a monthly plan. Then you bid per 1,000 views (vCPM), per player who joins in (CPE) or per click (CPC). Spending stops when your balance hits zero. Making the ads is included in the platform fee. See pricing.
What does a brand need to provide?
Just your website. If your site blocks automated browsing, you can upload your logo and product images after you sign up, and the agents work from those. You review every ad in the real game, and you can share a test link so anyone on your team can play it before it goes live.
How are ads kept brand-safe?
The play agent records each game’s content rating and audience. Brands are matched to games by rating, category and style, and developers can block whole categories.
What data do you collect from players?
The SDK reports ad events, such as views, time on screen, pickups and clicks. They’re tied to an anonymous player ID, which we use to limit how often one player sees ads. See our privacy policy (draft).
Your next ad break could be the best part of the game.
Free for developers. Brands get $20 free to start.