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

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.

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.

  • Add unlockedTier to gameState
  • Add conditional checks before generating high-tier events
  • Display unlock requirements in console or HUD
  • Test: trying to access higher tier before unlock fails
  • Test: meeting threshold unlocks correctly
  • Verify unlock persists across refresh
  • 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.