Proposal: EXP System
The reward model moved on. Cash now comes from quests, not from EXP/levels (see Reward Economy, the accepted direction). EXP is still the progression currency, but it advances a Season tier track that unlocks cosmetics and status, not money. The EXP math below stands (1 validated min = 1 EXP, plus quest bonuses, plus a party multiplier); wherever this page says EXP levels grant cash, read that as superseded — levels are now Season tiers with cosmetic unlocks.
Owner: Tom · 2026-06-18. The user-facing progression currency. Pairs with the Home View Directions mockups, where the EXP bar is the centre of the home view. Nothing here is shipped.
Formalizes EXP as the single progression currency for Playroll, so that casual
play and quests feed one bar. This sits inside the existing rules in
playroll-ui (CLAUDE.md): hours = system truth, Levels + XP = the
user-facing layer, the XP bar is the single source of truth for progress, and
rewards are status, not destinations. EXP is that XP layer, now given an
explicit unit.
1. The base unit
1 validated minute of recording = 1 EXP. (So 1 hour = 60 EXP.)
- "Validated" — EXP accrues from minutes that pass the validation pipeline, not raw recorded time. This keeps the bar honest (idle/fake/menu time doesn't pay) and aligns with the "validated hours = truth" direction. Consequence: EXP lands with a short delay after a session, not live during recording.
- "Generic recording" — base EXP is earned by any eligible recording, quest or not. Just playing an eligible game earns EXP. This is the casual-play floor of the system.
- Source of truth: validated session duration
(
recording_sessionsvalidated state →quest_participations.validated_secondsfor quest sessions; the same validated-minutes figure for non-quest sessions).
Softening the validation delay (UX)
Because base EXP is validated-only, a freshly recorded session shows as
"pending EXP" until validation completes, then converts to earned EXP. This
preserves honesty while giving immediate feedback (mirrors the existing
recorded · uploaded · validated breakdown in DailyRecordingStatus).
2. Quests add EXP on top
Quests are the lever that lets us reward toward the same bar without changing the base math:
- A quest grants a flat EXP bonus on completion (
quest_rewards.kind = 'xp',amount= EXP), and optionally per-qualified-session EXP. tier_progressrewards fold in as EXP too (they're just EXP grants by another name).- Quest bonus EXP is additive to base EXP — a quest can accelerate leveling well beyond the raw minutes recorded. That's the point: quests are how we "push hardest" on a mission without inventing a parallel currency.
So: Total EXP = (validated minutes × 1) + Σ(quest bonus EXP). The XP bar and the level are computed from Total EXP.
This is a deliberate, small evolution of the current rule. Today the level base is uploaded/validated hours. Under EXP, the base is the same validated minutes (×1), plus quest bonuses. Validated hours remain the business/data truth metric; EXP is the user-facing progression currency built on top of it.
3. Levels → Season tiers
The table below was the old hours→cash ladder. Cash no longer attaches to these thresholds (see Reward Economy). The thresholds survive as Season tier breakpoints whose rewards are cosmetic/status and re-tunable each Season. The Cash column is retained only to show what was replaced.
The tier track is expressed in EXP so the bar, the thresholds, and quest bonus EXP
all speak one unit. Mapping the original MACRO_LEVELS hours to EXP (×60):
| Tier | Hours-equiv | EXP threshold | Season reward (new) | |
|---|---|---|---|---|
| T1 | 1/6 h | 10 EXP | cosmetic/status (TBD) | |
| T2 | 1 h | 60 EXP | cosmetic/status (TBD) | |
| T3 | 5 h | 300 EXP | cosmetic/status (TBD) | |
| T4 | 12 h | 720 EXP | cosmetic/status (TBD) | |
| T5 | 25 h | 1500 EXP | cosmetic/status (TBD) |
- Crossing a tier auto-grants its (cosmetic) reward — rewards remain status, not targets. Cash is earned separately, by completing quests.
- A quest's EXP bonus (and party multiplier) can carry a player across a tier, advancing the Season track faster — no cash is triggered by tier crossings.
- Tiers and their EXP breakpoints are per-Season and re-tunable; the curve
above is the Season 0 (pilot) starting point. The
microPulseCadenceSecondsflashes derive from the table as today.
4. What the bar shows (copy + behavior)
- The XP bar is the EXP bar — single source of truth, always visible at the home view bottom (do not clip; do not touch its core fill/segment logic).
- Footer top row:
TIER {N}on the left,NEXT TIER at {Y} EXPon the right (Y is the next Season-tier threshold in EXP). The right slot is the next cosmetic/status unlock — not a cash figure. Cash is surfaced on quests, not on the EXP bar (see Reward Economy). +EXPfeedback: base EXP converts from "pending" as sessions validate; quest completions show a+{N} EXPfloater into the bar. One micro-pulse cadence per level as today.- Microcopy to teach the model once (not repeated per screen):
1 min played = 1 EXP · quests give bonus EXP. - Keep the rules: no predictive/pace copy ("at your pace", "est. sessions"), no ghost-fill — only earned (validated) + granted (quest) EXP render.
5. Why this shape
- One progression currency, two sources. Casual play (validated minutes) is the floor; quests + party multiplier accelerate. Both move the same Season bar, so the home view can say a single clear thing: play to earn EXP; do quests to earn cash (and bonus EXP).
- Honest by construction. Validated-only base resists idle/AFK farming; quest bonuses require real, validated quest completion.
- Cash is decoupled from EXP. Money is earned by completing quests, not by crossing EXP tiers — so generous progression (party multipliers, referral EXP) never inflates cash outlay. See Reward Economy.
- Respects the existing rules. EXP is the XP layer the docs already mandate; validated hours stay the data truth; rewards stay status.
6. Open calls
- Pending-EXP visibility: show pending (uploaded-not-yet-validated) EXP as a dimmed segment, or hide until validated? (Recommend: show dimmed, label "pending" — better feedback without faking progress.)
- Per-session quest EXP vs completion-only: do early quests pay per qualified
session (steady drip) or only on completion (bigger pop)? Tunable per quest via
grant_policy. - EXP ↔ hours divergence: once quest bonuses + party multipliers land, a player's tier can outrun their raw recorded hours. That's the intended "quests/parties accelerate you" effect; data-side reporting keeps using validated hours, not EXP.
- Seasons: now in scope — EXP advances a time-boxed Season tier track that can go dormant between Seasons. Whether EXP banks toward the next Season or pauses is an open call in Reward Economy.