Onboarding & difficulty
A vibedgames player arrives cold from a link, mid-conversation, with seconds
of patience. The first session is the whole funnel. Fun is learning: the game
lives while there's a pattern left to master, and difficulty must rise with
skill to stay in the flow channel.
The first 30 seconds
- Time-to-first-input < 5s. No splash chain, no settings, no mode select.
- Time-to-core-verb < 30s. The player performs the signature verb (jump,
shoot, plant) for real, with consequences, in the first half-minute.
- One input to start — "press any key / tap" over a live game scene.
Show the actual game behind the title (attract mode), not a static logo.
- First input produces a juicy result: sound + motion + particles. The
brain needs proof inputs matter before it will learn the pattern.
- Goal in one sentence or zero: "Survive." "Reach the flag."
- Detect input device: show touch hints to touch users, key hints to
keyboard users — never a scheme the device can't use. If the core input is
exotic (webcam, gamepad, mic), hint it explicitly and ship a plain
mouse/keyboard fallback that's announced, not silent. Gimmick inputs
(webcam/face/pose/hand, 3D presentation) are the product's identity —
never drop them in a rebuild; standard inputs are fallbacks alongside. Hand
tracking is undiscoverable on touch — hint it.
- Browser permission prompts are modals. Camera/mic/motion requests are
the most common cold-open modal in browser games — make them opt-in behind
a button, or defer until after first play. Never fire
getUserMedia on
mount, and don't fetch the model before consent: the MediaPipe bundle
pulled pre-consent from CDN is the biggest per-game load lever (6.1 MB →
0.15 MB and 2.5 MB → 0.14 MB on two games once deferred).
Teaching without a tutorial (George Fan's PvZ rules)
- Doing > reading. Never explain in text what a situation can force the
player to discover once. Gate progress behind doing it once — done = taught.
- ≤ 8 words on screen at a time. If an instruction needs more, redesign
the situation, not the sentence.
- Safe first exposure (Half-Life 2 pattern): observe the hazard eat a
barrel before dodging it yourself.
- Ramp: teach → repeat with one twist → combine. Never two new ideas at
once; roughly one new element per level.
- Objects self-describe: appearance telegraphs function; piggyback on
real-world knowledge (red = damage, coins = money, arrows = direction).
- Hints are adaptive, not up-front: "Try planting further left!" only
after the relevant failure. No modal popups that pause play.
- Bias the first decision: make the correct opening move the cheap,
shiny, obvious one (Fan made sunflowers cheap and sparkly).
- Never label anything "Tutorial".
- Control hints live on the start screen only — never persistent chrome
during play (allowed exceptions in
game-ui).
Difficulty curve
- Start below the floor: the first challenge is nearly unfailable — it
teaches the verb and pays out a win.
- Sawtooth, not ramp: spikes then recovery valleys; mastery registers in
the valleys. (Shape details in
level-design.)
- Re-test old skills while teaching new ones — that combination is where
the fun lives (Koster).
- Embed difficulty choice in play (Chen's flOw): risk/reward verbs — dive
deeper, take the shortcut, bank or gamble — beat an Easy/Normal/Hard menu.
Optional hard routes + collectibles let novice and expert share one build.
- Hidden mercy after repeated failure (Crash Bandicoot pattern): after
3–5 consecutive deaths at one spot, silently soften — extra checkpoint,
slower hazard. Never announce it.
Failure & retry
"Death" means any failure event — a conceded point, a wiped wave, a failed
puzzle attempt all follow the same rules.
- Death → retry: one input, < 2 seconds. No confirmation dialogs, no
unskippable death animations, no score screens between the player and the
retry (Celeste/Super Meat Boy convention).
- Failure must be legible (Juul): the player answers "what killed me?"
instantly, and the counter-move is visible in the death itself. Fair
failure motivates; opaque failure is a broken promise.
- Lose little while learning: early deaths cost seconds. Punishment can
scale after investment.
- Keep something across failure: best-score deltas, unlock progress —
a failed run becomes a deposit ("one more run").
- Celebrate near-misses: "Best: 412 — you got 398" reframes failure as
approach.
Assist mode (Celeste model)
For any skill-gated game, ship granular, judgment-free assists: game speed
50–100%, extra HP/invulnerability, skip-section. Available from the start,
reversible mid-game, named neutrally ("Assist Mode", never "Easy/Cheat
Mode"), no "intended experience" framing, no score asterisks unless
competitive integrity truly demands it (Thorson). Baseline accessibility is
onboarding too: readable text, never color alone as a signal, remappable or
multiple input schemes, pause anywhere.
Session shape
- First full loop ≤ 60–90s — a complete win-or-lose cycle with a score in
the first minute.
- Result screen = 1 glance, 1 button: score, best, delta, play-again.
- End every session with an open loop: next unlock, almost-beaten score,
teased content — adjacent to the retry button.
Audit checklist (every "no" is a defect)
- Meaningful input within 5s of load?
- Core verb performed in real play within 30s?
- Every instruction ≤ 8 words; first-minute total < ~25 words?
- Mute all text — still discoverable through doing?
- Each mechanic introduced alone, failure cheap or impossible?
- First failure shows what killed you + hints the counter?
- Death-to-retry one input, < 2s?
- Session ends with a visible reason to replay (delta, unlock, tease)?
- Every object's function readable from its appearance?
- Difficulty has recovery valleys after spikes?
- Zero modal popups/cutscenes/settings before first play?
- Native input works immediately (touch on mobile, keys on desktop)?
- Skill-gated game has a neutral, mid-game-reachable assist option?
- Something softens after 3–5 failures at the same spot?
- Score/goal visible at all times?
Related skills: design-lenses (finds the problems this skill fixes),
level-design (teaching through geometry), game-feel (the juicy first
input), game-playbook (build order).
1---2name: onboarding3description: Design a game's first minute: invisible tutorials, difficulty curves, failure and retry loops, assist modes. Use when players quit early or don't get it.4---56# Onboarding & difficulty78A vibedgames player arrives cold from a link, mid-conversation, with seconds9of patience. The first session is the whole funnel. Fun is learning: the game10lives while there's a pattern left to master, and difficulty must rise with11skill to stay in the flow channel.1213## The first 30 seconds1415- **Time-to-first-input < 5s.** No splash chain, no settings, no mode select.16- **Time-to-core-verb < 30s.** The player performs the signature verb (jump,17 shoot, plant) for real, with consequences, in the first half-minute.18- **One input to start** — "press any key / tap" over a live game scene.19 Show the actual game behind the title (attract mode), not a static logo.20- **First input produces a juicy result**: sound + motion + particles. The21 brain needs proof inputs matter before it will learn the pattern.22- **Goal in one sentence or zero**: "Survive." "Reach the flag."23- **Detect input device**: show touch hints to touch users, key hints to24 keyboard users — never a scheme the device can't use. If the core input is25 exotic (webcam, gamepad, mic), hint it explicitly and ship a plain26 mouse/keyboard fallback that's announced, not silent. Gimmick inputs27 (webcam/face/pose/hand, 3D presentation) are the product's identity —28 never drop them in a rebuild; standard inputs are fallbacks alongside. Hand29 tracking is undiscoverable on touch — hint it.30- **Browser permission prompts are modals.** Camera/mic/motion requests are31 the most common cold-open modal in browser games — make them opt-in behind32 a button, or defer until after first play. Never fire `getUserMedia` on33 mount, and don't fetch the model before consent: the MediaPipe bundle34 pulled pre-consent from CDN is the biggest per-game load lever (6.1 MB →35 0.15 MB and 2.5 MB → 0.14 MB on two games once deferred).3637## Teaching without a tutorial (George Fan's PvZ rules)3839- **Doing > reading.** Never explain in text what a situation can force the40 player to discover once. Gate progress behind doing it once — done = taught.41- **≤ 8 words on screen at a time.** If an instruction needs more, redesign42 the situation, not the sentence.43- **Safe first exposure** (Half-Life 2 pattern): observe the hazard eat a44 barrel before dodging it yourself.45- **Ramp: teach → repeat with one twist → combine.** Never two new ideas at46 once; roughly one new element per level.47- **Objects self-describe**: appearance telegraphs function; piggyback on48 real-world knowledge (red = damage, coins = money, arrows = direction).49- **Hints are adaptive, not up-front**: "Try planting further left!" only50 after the relevant failure. No modal popups that pause play.51- **Bias the first decision**: make the correct opening move the cheap,52 shiny, obvious one (Fan made sunflowers cheap and sparkly).53- **Never label anything "Tutorial".**54- **Control hints live on the start screen only** — never persistent chrome55 during play (allowed exceptions in `game-ui`).5657## Difficulty curve5859- **Start below the floor**: the first challenge is nearly unfailable — it60 teaches the verb and pays out a win.61- **Sawtooth, not ramp**: spikes then recovery valleys; mastery registers in62 the valleys. (Shape details in `level-design`.)63- **Re-test old skills while teaching new ones** — that combination is where64 the fun lives (Koster).65- **Embed difficulty choice in play** (Chen's flOw): risk/reward verbs — dive66 deeper, take the shortcut, bank or gamble — beat an Easy/Normal/Hard menu.67 Optional hard routes + collectibles let novice and expert share one build.68- **Hidden mercy after repeated failure** (Crash Bandicoot pattern): after69 3–5 consecutive deaths at one spot, silently soften — extra checkpoint,70 slower hazard. Never announce it.7172## Failure & retry7374"Death" means any failure event — a conceded point, a wiped wave, a failed75puzzle attempt all follow the same rules.7677- **Death → retry: one input, < 2 seconds.** No confirmation dialogs, no78 unskippable death animations, no score screens between the player and the79 retry (Celeste/Super Meat Boy convention).80- **Failure must be legible** (Juul): the player answers "what killed me?"81 instantly, and the counter-move is visible in the death itself. Fair82 failure motivates; opaque failure is a broken promise.83- **Lose little while learning**: early deaths cost seconds. Punishment can84 scale after investment.85- **Keep something across failure**: best-score deltas, unlock progress —86 a failed run becomes a deposit ("one more run").87- **Celebrate near-misses**: "Best: 412 — you got 398" reframes failure as88 approach.8990## Assist mode (Celeste model)9192For any skill-gated game, ship granular, judgment-free assists: game speed9350–100%, extra HP/invulnerability, skip-section. Available from the start,94reversible mid-game, named neutrally ("Assist Mode", never "Easy/Cheat95Mode"), no "intended experience" framing, no score asterisks unless96competitive integrity truly demands it (Thorson). Baseline accessibility is97onboarding too: readable text, never color alone as a signal, remappable or98multiple input schemes, pause anywhere.99100## Session shape101102- **First full loop ≤ 60–90s** — a complete win-or-lose cycle with a score in103 the first minute.104- **Result screen = 1 glance, 1 button**: score, best, delta, play-again.105- **End every session with an open loop**: next unlock, almost-beaten score,106 teased content — adjacent to the retry button.107108## Audit checklist (every "no" is a defect)1091101. Meaningful input within 5s of load?1112. Core verb performed in real play within 30s?1123. Every instruction ≤ 8 words; first-minute total < ~25 words?1134. Mute all text — still discoverable through doing?1145. Each mechanic introduced alone, failure cheap or impossible?1156. First failure shows what killed you + hints the counter?1167. Death-to-retry one input, < 2s?1178. Session ends with a visible reason to replay (delta, unlock, tease)?1189. Every object's function readable from its appearance?11910. Difficulty has recovery valleys after spikes?12011. Zero modal popups/cutscenes/settings before first play?12112. Native input works immediately (touch on mobile, keys on desktop)?12213. Skill-gated game has a neutral, mid-game-reachable assist option?12314. Something softens after 3–5 failures at the same spot?12415. Score/goal visible at all times?125126Related skills: `design-lenses` (finds the problems this skill fixes),127`level-design` (teaching through geometry), `game-feel` (the juicy first128input), `game-playbook` (build order).