Quick answer: Pick a single gameplay event that captures the heart of your game’s core loop (not a cutscene, not a tutorial step), instrument every step between launch and that event, and measure elapsed time. The median and the distribution tell you whether your onboarding is helping or hurting.
Most indie games die in the first fifteen minutes. Not because they’re bad — they often have excellent core gameplay — but because new players never get to the part that’s actually fun. They bounce off tutorials, wander through slow exposition, or get stuck in menus. Time-to-first-fun (TTFF) is the single metric that captures this failure mode, and instrumenting it is cheap compared to the retention you’ll recover.
Defining the Fun Moment
The hard part of TTFF isn’t the measurement — it’s deciding what fun is for your game. There’s no universal answer. A few starting points:
- Racing: completing a first race with real opponents.
- Roguelike: reaching the first meta-unlock, or the first run completed past the tutorial run.
- Strategy/4X: the first time the player makes a decision that feels like theirs — a diplomatic choice, a tech pivot, a military gamble.
- Shooter: the first online win, or the first encounter with the full range of weapons.
- Crafting/survival: building the first permanent base or crafting the first upgraded tier item.
Pick one event. Not a tutorial completion — tutorials are often part of the problem, not the solution. You want the first moment when the player is exercising the thing your game is actually about.
Instrument the Funnel
You can’t measure TTFF with a single event. You need a funnel: every step between launch and fun, with timestamps, so you can see where players drop. A minimal event set:
// Fire these on the first session of a new install
analytics.Track("session_start", {install_day: "D0"});
analytics.Track("main_menu_reached", {elapsed_s: t});
analytics.Track("new_game_clicked", {elapsed_s: t});
analytics.Track("tutorial_started", {elapsed_s: t});
analytics.Track("tutorial_completed", {elapsed_s: t});
analytics.Track("core_loop_entered", {elapsed_s: t});
analytics.Track("first_fun_achieved", {elapsed_s: t, meta: "first_race_won"});
Record elapsed active play time, not wall-clock time. A player who pauses for a phone call and comes back should have their TTFF measured from actual gameplay time. Otherwise, you’ll see wildly variable tails driven by external interruptions.
Read the Drop-Off
With the funnel in place, look for the largest drop between adjacent steps. That’s where your onboarding is failing. I’ve seen this pattern more times than I can count: 95% of new sessions reach the main menu, 78% start a new game, 60% finish the tutorial, 45% reach the first core-loop screen, 22% achieve the fun moment. The drop from 60% to 45% is almost always the problem — the gap between tutorial and real play.
Don’t just look at the median TTFF. Plot the full distribution. A bimodal shape (a clump at 5 minutes and another at 25) usually means the game has two paths through onboarding and one of them is much worse. A long right tail means some fraction of players is getting stuck; focus on understanding them specifically.
Pair With Retention
TTFF is only useful if it predicts retention. Bucket players by TTFF — <10 minutes, 10–20, 20–30, 30+, never reached — and compute day-1 and day-7 retention for each bucket. If there’s a clear pattern (faster TTFF correlates with higher retention), you have an actionable metric. If not, you’ve picked the wrong fun moment and should revisit the definition.
On one mid-core game we shipped, moving the “fun moment” forward by four minutes — mostly by cutting an expository cutscene and starting combat earlier — improved day-7 retention by 14 points. That was a two-week change with a cutscene designer and a scripting engineer.
Measure Tutorial-Skip Rates Separately
Skippable tutorials skew TTFF in interesting ways. Players who skip often reach fun faster but may not have the context to stay engaged. Players who complete the tutorial take longer but may retain better. Break out your funnel by “tutorial completers” vs. “tutorial skippers” and compare their subsequent retention. If skippers retain worse, your tutorial is doing its job. If they retain as well or better, your tutorial is unnecessary friction.
First-Hour Completion Rate
Beyond TTFF, track the first-hour completion rate: the percentage of new players who play through the first hour of content without quitting. This catches a different failure than TTFF — the “I had fun but I’m done now” moment. Games that have great TTFF but poor first-hour completion are typically hooking players on novelty but not giving them a reason to come back.
Instrument the end-of-first-hour milestone the same way: fire an event when a player crosses 60 minutes of active play, and record how they got there. Cross-reference with day-7 retention and you’ll quickly see whether your first hour is actually setting up long-term engagement.
Don’t Chase the Metric Too Hard
A warning: TTFF is a diagnostic, not a target. Optimizing for TTFF at the expense of other things can cut the heart out of your game. A stripped-down opening where the player is shooting within 45 seconds may look great in the funnel and feel terrible in reviews. Use TTFF to find where players accidentally drop — broken tutorials, confusing UI, skippable-but-mandatory filler — not to justify flattening your game’s opening.
Related Issues
For the weekly reporting cadence that turns TTFF into action items, see how to write a game bug weekly status report. For related analytics practice, read bug reporting metrics every game studio should track.
If players don’t reach the fun, nothing else you do matters. Measure the path to fun first, everything else second.