Why Delta-V doesn’t force ads on anyone
Delta-V has no forced ads. That cost us some revenue, and it turned up a bug that was handing out rewards for ads nobody watched.
- Product
- Monetisation
- Android
- Testing
Can a free mobile game make money without interrupting play with forced ads?
Yes, as long as the ads only show up where the player has already stopped. There are no ads between attempts in Delta-V. Players can choose to watch a video for a reward, and there are banners on the menu screens, so an ad never interrupts a flight. We show fewer ads, and people keep playing.
01
Ads between attempts
The usual pattern in a level-based mobile game is an interstitial ad between attempts. It’s easy to set up and it fills reliably, but in a physics game it gets in the way of the whole point.
Delta-V is about gravity and momentum. You misjudge an approach, crash, and try again straight away at a slightly different angle. That retry has to be instant. An ad in the middle of it would wreck the game.
02
What Delta-V has instead
Forced interstitials are turned off at the policy level, so there’s no setting in a config file for anyone to flip later. What’s left is opt-in rewarded video, where the player taps a button that says what they’ll get, and banners on menu screens, where the player has already stopped playing.
03
A bug in the reward videos
Rewarded video has a failure that the opt-in model makes worse, because opt-in rewards are bigger. The ad SDK resolves with a result object when the ad completes. It also resolves when the player closes the ad early, with a different object.
The grant check only tested whether that result was truthy. An empty object is truthy in JavaScript. So a skipped ad paid out exactly like a finished one, and a player who worked out they could open a rewarded ad and close it straight away had an endless supply of currency.
The real damage was to the game’s economy. If parts can be bought for nothing there’s no progression, and a difficulty curve tuned against an expected earn rate stops meaning anything.
// Wrong: {} is truthy, so a dismissal pays out.
if (result) grantReward();
// Right: check the thing the SDK actually promises.
if (result?.type === "rewarded" && result.rewarded) {
grantReward();
}04
The economy tests
The bug got a careful fix because the game’s economy is modelled. Roughly 580 components across fifteen categories, five hulls and a hundred levels are balanced against an expected earn rate, and an audit suite runs on every change. It models the economy and the difficulty curve, and fails if any purchase stops adding up.
That suite is why a truthiness bug in one conditional showed up as an economy failure and not a minor ad glitch.
05
What it cost
Fewer ads means less ad money. There’s no way round that for now.
In return, nothing gets between a crash and the next try, and what the store listing says about ads stays true.
Continue