process

Use when

You have pillars and need to design the actual moment-to-moment play and how it nests up into a session and a reason to return.

The Core Loop Stack

What it is. A game is loops inside loops. The smallest is one input and its answer; the largest is the reason you open it again tomorrow. Design each layer, then nest them so every turn of a small loop advances a bigger one.

Why it’s fun. Fun is a satisfying loop, repeated, that keeps meaning more. A loop that doesn’t feed the loop above it is a treadmill; a stack where each turn compounds is “one more run.” The nesting is the engagement.

The step

Pillars → the loop stack. You design four layers and the single cycle that runs inside each of them, then check every layer expresses a pillar.

The four layers

LayerTimescaleThe question it answersReference
Moment1 frame – 2 s”Does the second-to-second feel good?“the dash, the shot, the swap, the placement
Encounter10 s – 2 min”Is a single unit of challenge satisfying?“a room, a wave, a hand, a corner, a fight
Session5 – 40 min”Is one sitting a complete arc?“a run, a level set, a match, a day
Metaacross sessions”Why open it again?“unlocks, mastery, collection, story

Not every game needs all four fully loaded. A pure-mastery arcade game (anchor-tetris) is almost all moment, thin meta. A roguelite (anchor-hades) leans hard on meta. Match the weight to the brief’s session length and fantasy — but design each layer consciously, even the thin ones.

The cycle inside every layer

Each layer runs the same five-beat cycle. The layers differ in timescale, not in shape.

VERB ──▶ CHALLENGE ──▶ FEEDBACK ──▶ REWARD ──▶ GROWTH ──┐
  ▲                                                      │
  └──────────────────────────────────────────────────────┘

How to run it

  1. Name the moment verb first. The one input the whole game orbits. If it isn’t fun alone, in a grey box, nothing above it saves the game. Prototype it as a sandboxes/*-lab before anything else.
  2. Build the encounter around the verb. One clean unit of challenge that demands the verb. This is your smallest shippable, verifiable thing.
  3. Shape the session as a sequence of encounters with a curve — rise, breather, peak (pacing is pattern-pacing-and-tension). A session must end, and end at its peak.
  4. Design the meta hook. What does finishing a session change? Unlock, record, story beat, collection tick. Weight it to session length: short sessions need strong meta; long ones can carry themselves.
  5. Nest — the load-bearing step. Wire each layer’s growth to the layer above: encounter reward feeds the session build; session reward feeds meta progression. If a layer’s growth feeds nothing above, it’s a dead end.
  6. Score against pillars. Each layer should dramatise a pillar. A loop that expresses no pillar is a mechanic with no reason to exist.

Worked example

Intent: “a chill deckbuilder I can play in short bursts.” Pillars: (1) every run rewrites the deck, (2) decisions with teeth, (3) a clean 20-minute arc. X = anchor-slay-the-spire.

LayerVerbChallengeFeedbackRewardGrowth (→ up)
Momentplay a cardmana + timingnumber pops, sfx, flashdamage / blocktempo this turn
Encounterwin a fightenemy intenttelegraph resolves as shownHP kept, goldcard reward → session build
Sessionfinish a runboss + curverun summaryvictory / deathunlock → meta
Metaunlock cardsrarer picksnew draft-of-3 optionsexpanded poolfuture runs diverge (pillar 1)

The nesting is explicit: the card reward (encounter) is the session’s deck; the run’s unlock is the meta’s new option. Every arrow points up. Pillar 1 lives in the meta→moment feedback: yesterday’s unlock changes today’s draft.

Verify the loop, don’t just draw it. The deckbuilder’s “decisions with teeth” pillar becomes a FUN.md §11 draft-delta proof (drafting on beats drafting off by a margin) — declared here, proven there.

Diagnosing a weak loop

SymptomLikely broken layerFix
”Feels like a treadmill”growth feeds nothing abovewire the nesting; make a reward change the next layer
”Great for 5 min then boring”encounter has no varietyvary the challenge, not the verb (system-enemy-archetypes)
“No reason to come back”thin/absent metaadd a meta hook sized to the session
”Every run feels the same”growth doesn’t divergemake rewards branch (system-build-diversity)
“The core just isn’t fun”the moment verbstop; the verb is wrong — re-prototype it in isolation
”Rewards feel hollow”feedback, not rewardit’s a feel gap → design/JUICE.md, not more loot

The single most common failure is a weak moment verb propped up by heavy meta — unlocks papering over a core that isn’t fun. No amount of meta fixes a bad moment. Fix the bottom of the stack first.

Traps

Composes with

See also

This module rendersthe repo's markdowndirectly — edit it there, it changes here.