Make progression earned, not given. An unlock is a rule that blocks content until a condition is met.

Discussion Question: Think about the last time you unlocked something in a game. How close to the threshold were you before you got it? Did you keep playing JUST to reach that unlock? That "almost there" feeling — is the game designer doing that on purpose?

Players should not have access to everything immediately. Unlocks create anticipation and make reaching new content feel like an achievement. Gating is the mechanism that turns progression into a reward.

The unlock formula: Condition met → Content revealed. That's it. One if statement is all it takes. But the design of what threshold to set and what content to reveal — that's where the craft is.

Ami — XP-Gated Tiers

Unlock Tier 2 when bankedXP >= 50. Unlock Tier 3 when bankedXP >= 150.

if (bankedXP < 50) { maxTier = 1; } else if (bankedXP < 150) { maxTier = 2; } else { maxTier = 3; }
Ida — Karma-Gated Tiers

Unlock Tier 2 when totalKarmaEarned >= 100. Unlock Tier 3 when totalKarmaEarned >= 300. Higher tier jobs don't generate unless the tier is unlocked.

Time: 15–20 minutes | Materials: 3 small treats/prizes, 3 pieces of paper, a die

Setup: Place 3 treats/prizes behind 3 paper barriers. Label each barrier with a threshold:

  • Door 1: "50 XP" (or 50 Karma)
  • Door 2: "150 XP" (or 150 Karma)
  • Door 3: "300 XP" (or 300 Karma)

Play: Each kid takes turns rolling a die. Multiply the roll by 5 to get XP/Karma earned per turn. Keep a running total. When you hit a threshold, you unlock that door and claim the prize.

Pay attention to:

  • The moment you're at 45 and need just one more roll for Door 1 — that's anticipation
  • The frustration of being at 140 and rolling a 1 — that's tension
  • The satisfaction of finally breaking through — that's the unlock feeling

That IS the unlock mechanic. Your code will create this exact feeling.

  • Add unlockedTier to gameState
  • Write checkUnlock() function with threshold logic
  • Add conditional checks before generating high-tier events
  • Display unlock requirements in console or HUD
  • Show "Tier Unlocked!" message when threshold is reached
  • Test: trying to access higher tier before unlock fails
  • Verify unlock persists across refresh (localStorage)
  • Checkpoint

    Trying to access a higher tier before meeting the requirement fails. Meeting the threshold unlocks it and it feels rewarding.

    No cosmetic unlocks. No achievement system. Just tier gating.

    Not persisting unlock state — if the player refreshes and loses their unlock, the progression feels broken.

    Allowing events from locked tiers — if a Tier 3 encounter can trigger while maxTier is 1, the gating is meaningless.

    Threshold too high (frustrating) or too low (meaningless) — playtest both extremes to find the right balance.

    Unlocks are motivation architecture. Ask: "What makes unlocks satisfying?" Answer: the gap between wanting and having, closed by effort. This is a core principle of game design and applies to real-world goals too.

    During the Locked Door activity: Don't rush it. Let them feel the anticipation of being close to a threshold. After the activity, ask: "When were you most excited — when you were far from a door, or almost there?" The answer reveals why threshold placement matters.

    Connection to real life: Unlocks work exactly like earning a belt in martial arts, leveling up in school, or saving money for something you want. The principle is universal: earned access feels better than given access.

    Looking ahead: Tomorrow you build the ONE special feature that makes your game memorable.