three.js game monetization

Monetize your three.js game with one line of code.

Add one line of code and you’re in. Attach it to your renderer and mark your natural breaks for full rounds. Brands pay for a 15-second Bonus Round that players actually play inside your game. You keep 70% of net ad revenue.

three.jsWebGLReact Three FiberVitewebpackNext.jsImport maps
How to add ads to a three.js game

One line to start. Two more for full rounds.

One line of code is all you need to start. attach() and break() are the optional upgrade: they connect it to your scene and tell it when your game takes a breather, for full 15-second intermission rounds. We sell the slot, make the ad for your game, check it was seen, and pay you.

Paste this line into your page’s <head>.
Optional: attach after your renderer, scene and camera exist.
Optional: await break() at natural breaks: round over, level complete, respawn.
index.html · game.js
<!-- 1. One line of code -->
<script async src="https://bonusround.io/v1/br.js" data-pub="pub_XXXXXXXX"></script>

// 2. Optional, for full rounds: after your renderer exists
BonusRound.attach({ THREE, scene, camera, renderer });

// 3. Optional: at a natural break
await BonusRound.break('intermission');
New games start in test mode: a free test round plays at your next break.
or let the CLI make the edits
npx bonusround init   # shows a diff, asks before writing
What players see

Ads that players actually play.

A 5-second heads-up, then a 15-second branded round in your game, labelled “Ad”. Then everyone goes straight back in. These are real rounds in our own three.js games.

  • 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.Players choose a round to respawn. It pays the most.BonusRound.rewarded({ onReward })
Revenue share

You keep 70%.

Of net ad revenue: what brands spend in your game, minus any disclosed agency commission. See pricing.

70%

of net ad revenue goes to you, the developer.

$0

to join. No minimum traffic, no setup fee.

Net-30

Each earning clears 30 days after you earn it.

$50

minimum to cash out, through Stripe.

FAQ

three.js ads, answered.

How do I add ads to a three.js game?

Add one line of code to your page’s <head>. For full intermission rounds, also add BonusRound.attach({ THREE, scene, camera, renderer }) after your renderer exists, and await BonusRound.break('intermission') at natural breaks. npx bonusround init makes the install and attach edits for you; you place break() yourself. Step-by-step guide.

Does it work with React Three Fiber?

Yes. useThree() gives you scene, camera and gl (the WebGLRenderer). Add a small component inside your <Canvas> that attaches the SDK, and call break() from your game state. See Install → React Three Fiber.

Do ads slow down my game?

The loader is a small async script and the rest of the SDK is imported only when it’s needed. Round models are budgeted (about 10k triangles for a hero, 3k for a collectible) with 1K textures, and nothing loads until there’s an ad to show.

How much do I earn?

You keep 70% of net ad revenue: what brands spend in your game, minus any disclosed agency commission. Earnings clear after 30 days (net-30), and you can cash out through Stripe once you have $50. See Payouts.

My game is also on Poki or CrazyGames. Is that a problem?

No. Keep the same build. Those portals don’t allow third-party ads, so the SDK detects them and switches itself off there: no ad requests, and break() resolves right away. See portal mode.

Can I try it before going live?

Yes. New games start in test mode, so your next break() plays a free test round right away. Test plays are never billed and never paid.

Your next ad break could be the best part of the game.

Free for developers. Monetize your three.js game with one line of code and keep 70% of net ad revenue.