Monetization Without Being Annoying
How Ski Resort Empire makes money without banners or forced ads – rewarded videos the player chooses, a rare second currency called snow crystals, and the boring but necessary work of consent and privacy.

Once the game felt like a game, the next question was unavoidable: how can it ever pay for itself? I had one firm rule from the beginning: no banners and no ads that interrupt play. Every ad in the game is one the player asks for.
Rewarded ads, and only those
Rewarded videos are a fair trade: you watch a short video and get something useful. I picked four rewards that fit an idle game:
- double the offline earnings when you come back;
- shorten a running construction by 50 % of the remaining time;
- a temporary income boost (×2);
- a temporary speed boost for all businesses.
Then came the tuning. A boost lasts 60 minutes per video and can be stacked up to 8 hours, so a player can "charge" it before going to bed. Each reward got a 15-minute cooldown per category so that ads do not become the main gameplay loop.
Some of this changed later. The speed boost was dropped because two boosts with two icons were confusing and the speed boost made progress bars flicker. The income boost became 30 minutes per video when a second boost for projects was added. But the principle stayed exactly as planned on day two: the player chooses, the player benefits, and skipping a video never punishes.
A small bug from the same day is a nice example of idle-game details: the remaining boost time briefly showed "01:00:47" before jumping to "59:59". The countdown was rounding up the time of the frame instead of the exact remaining milliseconds. Nobody would have reported it, but everyone would have noticed it.
A second currency: diamonds, or snow crystals?
Most idle games have a rare premium currency next to the normal money. I wanted one too, earned in four ways:
- randomly, now and then;
- at certain events in the game;
- by watching a video;
- or by buying it.
Diamonds would have been the generic choice. Ice crystals sounded cold. Snow crystals fit the theme perfectly: they are beautiful, rare when you look closely, and they make sense on a ski mountain. They are spent on permanent upgrades that work across the whole game. The first one was snowmaking: more snow, more guests, more profit everywhere.
The real-money packs were built first as a simulation in the browser, with the same flow as the simulated ads. That way the whole purchase path could be tested long before there was a Play Store listing.
From web page to Android app
The game runs in the browser, but most idle games are played on phones. I chose Capacitor, which wraps the web build in a native Android project. The same code runs in both places. A few decisions came with it:
- Portrait only. Idle games are played with one hand. Desktop browsers show the game as a centred column, and phones held sideways see a "please rotate" hint.
- Local fonts. Fonts are bundled with the app instead of loaded from a font service. That keeps the game working offline and avoids sending requests to a third party.
- AdMob for the rewarded videos on Android.
The unglamorous part: consent and a privacy policy
As soon as ads are involved, European players have to be asked for consent, and the app needs a privacy policy. I integrated Google's consent form (UMP), which appears before the first ad request, and wrote a privacy policy in German and English. It is linked from the settings and has been updated every time a new service was added (analytics, cloud save, feedback, payments).
It is not exciting work, but it is the part that decides whether you are allowed to publish at all, and it is much easier to do while the app is small.
The rule behind it all
If I had to summarise the monetization design in one sentence, it would be this: the game must be fully enjoyable without paying or watching anything, and everything you pay for or watch should feel like a bonus, not a ransom. Every later decision in this devlog (the supporter pack, the crystal shop, the bonus events) was measured against that sentence.