F2P economics
The three numbers
ARPDAU — average revenue per daily active user:
Lifetime (a player's average "life span" in days) is the area under the retention curve: if rd is the fraction who came back on day d (r0=1), then
For geometric retention rd=rd the series collapses into a closed form:
Then LTV (a player's lifetime value):
And CPI (cost per install) is what it costs to bring a player in through advertising. The project pays off only if LTV > CPI, and the margin per player is LTV − CPI. All of UA marketing is buying installs while that inequality holds.
Whales and the heavy tail
Spending in F2P is distributed extremely unevenly: the rough model is "90/9/1" — ~90% never pay, ~9% pay a little ("dolphins"), ~1% are "whales", and they account for roughly half of all revenue. That's not a bug, it's the structure: the design targets a wide free base (which creates value as content and as opponents for the payers) and a narrow group willing to pay a lot. Forecasting revenue from the average player is therefore dangerous — the tail determines it.
Gacha and probability
Loot boxes/banners are a probabilistic mechanic. The chance of getting at least one rare item in n attempts with probability p per attempt:
The expected number of attempts until the first success (geometric distribution):
At p=0.006 (a typical SSR rate) that's ~167 attempts — hence "pity" systems (a guarantee on the Nth attempt), which cut off the heavy right tail of that distribution and make the "pain" predictable (more in the deep end).
🕹 Games to play — and what to notice
The three numbers and the heavy tail aren't an abstraction, they're concrete screens in live games. Three F2P mechanics, from a simple time gate to a full gacha with pity; for each, how it works and what to open and compute by hand (simple to complex). Play like an analyst, not like a whale.
The simplest monetization spring is a limit on attempts. Up to 5 lives, losing a level costs one, regeneration is +1 every 30 minutes (a full set is 2.5 hours). Lose five times on a hard level → either wait, or pay/ask friends. A direct lever on session length and retention: the gate isn't on money, it's on time, and money is the way around it.
🎮 Play: Candy Crush. Burn several lives in a row on a hard level — you'll hit the regeneration timer and the "buy/ask" offer. Notice: nobody is forcing you to pay — they're forcing you to wait, and the payment sells impatience. That's lifetime and retention rendered as UI.
Two springs at once. Chests won in battle open on a timer (real-time hours; speeding it up costs gems), and there are only 4 slots — a bottleneck. The contents aren't "honestly random": drops follow a fixed cycle of 240 chests (≈180 silver, 52 gold, 4 giant, 4 magical at known positions) that repeats. Legendaries are a separate pseudo-random cycle (~500). "Randomness" you can actually compute in advance.
🎮 Play: Clash Royale. Win a battle with all 4 slots full — no chest drops and the cycle doesn't advance (you feel the bottleneck physically). Search for a "chest cycle tracker" — players deterministically count how many wins until the next magical/giant one. Pseudo-randomness under the hood of the timers.
The peak of it — a probabilistic banner with pity. The base 5★ rate is 0.6%, but that's the deceit of the "average": from soft pity ~74 the chance jumps sharply (to ~6.6%+ per pull), and at 90 it's guaranteed (hard pity). Effectively ~1.6% per pull → one 5★ per ~62 pulls on average. Plus 50/50: the first 5★ may not be the banner one, in which case the next is guaranteed to be. Exactly the truncated geometric from the lesson, wrapped in UX.
🎮 Play: Genshin (or any HoYo gacha). Open the banner's "Details" — 0.6% and the guarantee at 90 are written there. Look at the pull counter since your last 5★ — that's your position on the pity curve. Notice how the UI hides soft pity (it isn't in the published rates — only the community measured it) and sells "just a bit more".
Deep end · math: predicted LTV, sensitivity and pityskippable
Predicted LTV before the players have churned
You can't measure the real L right away — the players haven't lived that long yet. You take an early cohort, estimate the shape of the retention curve and extrapolate. The geometric model often underestimates the tail; in practice retention is closer to a power law:
The sum ∑rd diverges for c ≤ 1, so you cap it at a horizon D: L ≈ ∑d=1..D r1·d−c. LTV forecasting = fitting (r1, c) on 7–30 days of a cohort and summing to the horizon. The main risk is extrapolation: a small error in c swings wildly across the tail.
Why retention beats ARPDAU
LTV = ARPDAU/(1−r) makes the asymmetry visible: ARPDAU enters linearly, while r enters through 1/(1−r), which explodes as r→1. Lifting retention from r=0.90 to 0.93 changes L from 10 to ≈14.3 days (+43%); the same absolute increase in ARPDAU gives only a few percent. Which is why product teams are obsessed with retention rather than with the price of purchases.
Pity as a truncated geometric
Without pity, the number of attempts until a reward is ~ Geom(p), E=1/p, with a long tail. Hard pity at N truncates the distribution to min(X, N):
That's strictly less than 1/p and, more importantly, bounded above by N — the player knows the maximum, which lowers anxiety (and the regulatory risk of a "gambling" mechanic).
Deep end · design: the monetization spectrum (ethical → predatory)skippable
The same economics feels different depending on what you sell:
- Cosmetics (skins) — no effect on balance; payers fund the game without breaking it for the free players. The most "honest" model (Fortnite, Dota 2).
- Convenience (boosters, inventory) — a gray zone; you're selling time.
- Pay-to-win — you're selling power; it maximizes whale ARPPU but burns out the free base and the trust.
A battle pass is a commitment device: a fixed price plus a goal for the season raises both retention and conversion without being predatory. Dark patterns (artificial "pain", tangled currencies, FOMO timers) lift short-term ARPDAU at the cost of trust and regulatory risk (see loot boxes in Belgium/the Netherlands). The design fork: optimize seasonal revenue, or LTV-through-trust.
Deep end · engineering and hosting: the analytics loopskippable
Unit economics only exists if it gets measured. What's under the hood:
- Event telemetry: every action → an event into a stream (Kafka/PubSub) → storage (BigQuery/ClickHouse). Volumes run to billions of events/day at large F2P titles.
- Cohort analysis: retention/LTV are computed per install cohort, not "on average" — otherwise fresh players corrupt the metric.
- A/B tests: price, balance, onboarding — behind experiments with statistical significance; decisions from data, not from intuition.
- Server-authoritative economy: currency balances and purchases live on the server, otherwise cheating/duping breaks the economy. Anti-fraud on payments.
- Privacy: GDPR/COPPA on telemetry (especially with child audiences) — consent, retention policies, the right to deletion. An engineering and a legal constraint at once.
SaaS / business: the same churn / LTV / CAC — all of subscription unit economics; retention compounds through 1/(1−r) in any service.
ML / data: power laws everywhere — you can't judge by the mean: token frequencies (Zipf), a long tail of classes, outliers decide it; LLM cost = price-per-call × volume (like per-turn × DAU) — the same unit economics of inference.
Security / marketing: a few actors produce most of the effect (whales = fraudsters = viral nodes) — forecast from the tail, not from the mean.
Principle: compounding beats linear; with a heavy tail the mean deceives — look at the distribution.
Why does ~1% of players fund the game — is that exploitation or sustainability?
Why is retention more important than ARPDAU, if ARPDAU is what actually brings the money?
How do you compute LTV when the players haven't churned yet (predicted LTV)?
Are whales Pareto (80/20) or something else, and why does it matter for forecasting?
A pity system reduces the publisher's income — why do they add it?
- Module 6 (Mobile/F2P) and Module 10 (Business) — the full text with case studies (Supercell, HoYoverse).
- "Game Balance" (Schreiber & Romero) — the math of economies and probabilities in games.
- Lab 06 —
economy_sim.py, get your hands on the curves.