Back to Blog
progressionbalancingmechanicsplayer retention

Power Curves and Unlock Gates: How to Pace Progression Without Grind

Progression is a schedule, not a multiplier. Split your rewards into power, access and identity, budget one new toy per session, and check your XP curve against a clock before you build thirty levels.

GameDesignerX TeamSeptember 25, 20267 min read

A tester reaches level 14 of your RPG, opens the level-up screen, adds +2 to Strength, closes it, and keeps swinging the same sword at the same goblins. Nothing about the next ten minutes is different from the last ten. The number went up and the game did not change.

That is the most common progression bug in indie games, and it is not a tuning problem you can fix by editing one multiplier. It is a structural problem: the game has a power curve but no unlock cadence. Fixing it means separating the two, budgeting them independently, and then checking them against a clock.

Progression does three different jobs

Before you touch a spreadsheet, split your progression into three tracks. They fail in different ways and they need different pacing.

  • Power — numbers that make existing actions stronger. Damage, health, crit chance, movement speed. Cheap to add, invisible to feel.
  • Access — new verbs, new spaces, new content. A double jump, a grapple hook, a new region, a new crafting tier. Expensive to build, enormously felt.
  • Identity — choices that make one player's build differ from another's. Charm loadouts, skill trees with real opportunity cost, weapon affinities. Moderate cost, drives replay and discussion.

Most indie progression is 90% power because power is the only one you can author in a data table. The games people remember front-load access and identity. Hollow Knight's charm-and-notch system is almost pure identity: notches are a fixed budget, charms compete for it, and the interesting decision is what you leave behind. Hades' Mirror of Night is identity too — each mirror row is an either/or, not an accumulation. Slay the Spire's card reward after every combat is access, delivered on a fifteen-second cycle.

Write down which track each of your rewards belongs to. If a track is empty for forty minutes of play, that is your first finding.

Budget access by session, not by level

The cadence rule that survives contact with playtests: one new toy per session, where a session is however long your audience actually plays in one sitting — 20 minutes for a mobile puzzler, 45–90 for a PC action game.

A "new toy" is anything that changes what the player does: a verb, an enemy that requires a new answer, a biome with a new hazard, a system unlock like crafting or fast travel. It does not have to be big. Celeste's chapters mostly introduce one mechanic each — dream blocks, wind, moving platforms — and then interrogate it for twenty minutes. That is the pattern to copy: introduce, complicate, combine, retire.

Sketch it as a table before you build anything. Here is the shape for a 10-hour action game with ~45-minute sessions:

Session New access New enemy answer Identity choice Power granted
1 Dash Blocker (must dash through) — +0%
2 Hookshot Flyer (hook to reach) First charm slot +10%
3 — (deepen dash + hook) Shielded (break with hook pull) Second charm +20%
4 Crafting bench Swarm (needs AoE) Weapon affinity +35%
5 Fast travel Ranged sniper Third charm slot +50%

Two things fall out immediately. First, session 3 has no new access — that is deliberate, and it is where you place your hardest combination challenge rather than a new mechanic. Second, power is a slow background hum, not the reward itself. Which brings us to the curve.

Pick a curve, then check the clock

Your XP curve's only real job is to set time between rewards. Choose the intervals you want first, then solve for XP.

Suppose you want level-ups roughly every 8 minutes early and every 20 minutes late, over a 10-hour game with 30 levels. Work from the encounter rate: if a typical fight awards 50 XP, the player clears about 1.5 fights per minute of combat, and combat uptime is roughly 50%, that is about 37 XP per minute of play.

A geometric curve, XP(n) = base * growth^(n-1), with base = 300 and growth = 1.12:

Level XP to next Minutes at 37 XP/min Cumulative hours
1 → 2 300 8.1 0.13
5 → 6 472 12.8 0.9
10 → 11 832 22.5 2.4
20 → 21 2,585 69.9 9.7
30 → 31 8,031 217 32.6

The curve fails. A single level-up at 20 costs over an hour, simply reaching level 20 consumes the entire 10-hour budget, and max level would take 33 hours. Growth of 1.12 compounds to 26× by level 30 — geometric curves are for games designed around an income curve that also compounds (idle games, MMOs with tiered zones). If your XP income is roughly flat, use a shallower shape: quadratic (base * n^1.6) or a table you author by hand. Thirty rows is not too many to author manually, and hand-authoring is the only way to put a cheap level right before a boss so the player walks in feeling fresh.

Sanity checks to run on any curve:

  1. Total XP required at max level, divided by your measured XP-per-minute, lands inside your target playtime ±20%.
  2. No single level costs more than 3× the average.
  3. The gap between rewards never grows monotonically for more than 4 levels — insert a fast level as a breather.
  4. A player who skips all optional content still reaches the level the final boss is tuned for.

That last one is the check people skip, and it is where "the ending is impossible unless you grinded" comes from.

Keep the power gap oscillating

Power only feels good relative to challenge. If enemy health scales at exactly the rate of player damage, the player's growth is mathematically invisible — a treadmill. If enemies never scale, the back half is a walkover.

The usable pattern is a sawtooth: let the player overtake the curve, then raise it. Concretely, if player DPS goes 100 → 150 → 220 across three sessions, set enemy effective HP to 100 → 120 → 200. Time-to-kill drops from 1.0 to 0.8 of baseline (the player feels the upgrade), then snaps back to 0.9 when the new region arrives. The player reads that as "I got stronger, and then the world got more serious."

Track it as one derived number — time-to-kill for the standard enemy of each region — and put it next to your power table so the oscillation is visible instead of emergent. A balance sheet in GameDesignerX's balance and economy module is a reasonable home for this, with the unlock cadence table living alongside your mechanics entries so the two are reviewed together rather than drifting apart across two documents.

An audit checklist

Run this against your current build, not your design doc:

  • Every reward is tagged power, access, or identity.
  • No 40-minute stretch contains only power rewards.
  • Each new verb gets an introduce → complicate → combine sequence before the next one arrives.
  • At least one identity choice carries real opportunity cost (you give something up).
  • Max-level total XP ÷ measured XP-per-minute ≈ target playtime.
  • Time-to-kill oscillates between roughly 0.75× and 1.0× of baseline rather than sitting flat.
  • The critical path alone reaches the final boss's tuned level.
  • Nothing unlocks in the last 10% of the game that the player never gets to use.

Three failure modes worth naming

The stat-only build. All power, no access. Symptom: testers stop opening the level-up screen. Fix: convert two power milestones into verbs, even small ones — a ledge grab, a parry.

The empty mid-game. Sessions 4–7 have nothing new because all the interesting mechanics were needed for the vertical slice and the ending. Fix: hold one verb back from the slice on purpose and place it at the midpoint.

The last-minute toy. A mechanic unlocks 20 minutes before the credits. It cost three weeks and nobody remembers it. Fix: either move it earlier or cut it — a mechanic with less than an hour of runway is not a mechanic, it is a cutscene.

Progression is the schedule on which your game keeps its promises. Write it as a schedule, check it against a clock, and the level-up screen stops being a formality.