Juice it or Lose it
A practical reference for adding "juice" — the layered visual, auditory, and
temporal feedback that makes interactive software feel alive. Distilled from
the Jonasson/Purho 2012 talk of the same name, Jan Willem Nijman's "The art of
screen shake," Steve Swink's Game Feel, Mark Brown's analysis, and
field-tested examples from Vlambeer, Cactus, dashpong, and others.
What juice is, and what it isn't
Juice is maximum output for minimum input — every player action triggers a
cascading set of responses across multiple sensory channels. The original
framing comes from a 2005 Gamasutra piece on prototyping: a juicy game "feels
alive and responds to everything you do, tons of cascading action and response
for minimal user input."
Juice is not decoration. It is feedback. Reframing it as "feedback" rather
than "juice" prevents the most common failure mode — adding flash for flash's
sake. If a wobble, particle, or sound is not communicating something to the
player about cause, consequence, weight, or state, it is clutter. Clutter
degrades clarity, and clarity is more valuable than spectacle.
Juice also is not a substitute for gameplay. Add it after the core mechanic
works. Jonasson and Purho built a fully working Breakout clone before juicing
it. Nijman makes the same point: prototype the game first, then spend a year on
the menu.
When to apply this skill
- Polishing a finished prototype that "feels off" or "feels cheap"
- Reviewing a build and producing a structured audit of feedback gaps
- Designing feedback for a single mechanic (a jump, a hit, a pickup, a death)
- Choosing easing curves or tween durations
- Diagnosing why a game feels sluggish or unresponsive
- Adding tactile response to non-game interfaces (transitions, button presses,
drag-and-drop)
Do not apply this skill before the underlying mechanic exists. Polish
before the mechanic is settled wastes effort and entrenches bad design.
The seven categories
Juice is most usefully decomposed into seven channels. Each gets its own
reference file. Read the ones relevant to the task at hand — do not load all of
them by default.
| Category |
Read when… |
Reference |
| Movement & tweening |
Animating any property over time — position, scale, rotation, alpha |
references/movement.md |
| Particles & debris |
Events need spatial spread or visible aftermath |
references/particles.md |
| Sound |
Almost always; the highest-leverage category |
references/sound.md |
| Camera |
Playfield needs to react, or impact needs amplification |
references/camera.md |
| Permanence |
The world should remember what happened |
references/permanence.md |
| Personality |
Inanimate elements need to feel alive |
references/personality.md |
| Clarity & restraint |
Always — and especially when the build feels "loud" or unreadable |
references/clarity.md |
A separate file, references/audit.md, contains a structured checklist for
auditing an existing build. Use it when reviewing rather than building.
The minimal layered-feedback pattern
When a single player action fires, layer responses across as many channels as
fit. The Jonasson/Purho ball-hits-block event in their demo stacks roughly
twelve effects on one collision:
- Ball scales up briefly, then eases back (movement)
- Ball flashes white, then eases back to colour (movement / clarity)
- Ball rotates to face new direction (movement)
- Ball stretches along its velocity vector (movement)
- All blocks scale slightly toward or away from the impact (movement)
- The wall the ball came from bounces (movement)
- Block falls away with rotation, scaling, and darkening (movement / clarity)
- Smoke puff emits at impact (particles)
- Shatter debris falls from destroyed block (particles)
- Ball trail extends behind the moving ball (particles)
- Distinct collision sound, pitch-shifted on streaks (sound)
- Screen shake proportional to impact (camera)
None of these alone changes the game. Stacked, they transform a sterile
prototype into something that demands replaying. The point is the stack, not
any single effect.
Workflow
- Establish the polish baseline. Confirm the core mechanic is settled. If
it isn't, stop and finish the mechanic first.
- Inventory the events. List every player-facing event: every input, every
state change, every collision, every spawn, every death, every UI
transition. This is the surface area for juicing.
- Rank events by frequency and weight. Frequent events (movement, basic
attacks) need light, fast, varied feedback to avoid fatigue.
Rare-but-important events (boss kills, level transitions, death) earn
heavier feedback — slow-mo, screen-wide flashes, voice cues.
- Layer across channels. For each ranked event, sketch responses across
the seven categories. Aim for at least three channels on common events and
five-plus on rare ones.
- Build, then test on someone else. You stop noticing your own juice
within a day. Hand the build to someone unfamiliar — watch where they react
and where they don't.
- Audit for clarity. Run
references/audit.md against the build. Cut
anything that does not communicate. Add accessibility toggles for screen
shake, flashing, and motion.
Pitfalls
- Linear motion everywhere. Lerps are programmer-default and look
mechanical. Real objects accelerate and decelerate. See
references/movement.md.
- Quiet or thin sound effects. A bass-boosted gunshot is a cliché because
it works. See
references/sound.md.
- Screen shake as a hammer. Screen shake on every event becomes invisible
and induces nausea in some players. Reserve it for impact and provide a
toggle. See
references/camera.md.
- Juice in lieu of gameplay. Vampire Survivors aside, no amount of confetti
rescues a broken loop. Fix the loop first.
- Particle-engine yak-shaving. Building your own particle system from
scratch is a known programmer trap. Use what your engine ships with. The
juice comes from how you use it, not how you wrote it.
- No accessibility escape hatches. Some players get motion-sick from shake,
some have photosensitive epilepsy, some find damage numbers
immersion-breaking. Toggles cost almost nothing and broaden your audience.
Source material
The skill draws on:
- Martin Jonasson & Petri Purho, Juice it or lose it (2012). The
canonical talk; the Breakout demo is the worked example.
- Jan Willem Nijman (Vlambeer), The Art of Screen Shake (2013). Thirty
incremental polish steps applied to a stub shoot-em-up.
- Steve Swink, Game Feel: A Game Designer's Guide to Virtual Sensation
(2008). Academic foundation; defines feel as "real-time control of virtual
objects in a simulated space, with interactions emphasized by polish."
- Mark Brown, Game Feel (Game Maker's Toolkit, 2014). Concise
consolidation of the above with practical examples.
- Mike Salyh, 6 Mistakes That'll Drain the 'Juice' Out Of Your Game (Game
Developer, 2020). The "anti-juice" framing.
- Kyle Gabler, "Add eyes to anything" — a maxim from World of Goo.
- Robert Penner, easing equation library (2002). The canonical reference
for easing curves.
When working through this skill, prefer concrete examples from these sources
over invented ones. They have been studied and replicated for over a decade.
1---2name: juice-it-or-lose-it3description: Diagnose and add "juice" — game feel, feedback, and tactile polish — to games, prototypes, and interactive software. Use this skill whenever the user is building, polishing, prototyping, or reviewing a game (especially action, arcade, platformer, shooter, or rhythm games), or when they ask about game feel, juice, screen shake, hit feedback, particles, easing, tweening, screen pause/hitstop, juicy effects, "making it feel good", or why their prototype feels limp, lifeless, dry, or cheap. Also trigger when reviewing UI prototypes that need tactile response, or when the user mentions Jonasson, Purho, Vlambeer, Nuclear Throne, screen shake, or Steve Swink's "Game Feel" book. Apply even to non-game interactive software when the user wants buttons, transitions, or interactions to feel responsive and satisfying.4---56# Juice it or Lose it78A practical reference for adding "juice" — the layered visual, auditory, and9temporal feedback that makes interactive software feel alive. Distilled from10the Jonasson/Purho 2012 talk of the same name, Jan Willem Nijman's "The art of11screen shake," Steve Swink's *Game Feel*, Mark Brown's analysis, and12field-tested examples from Vlambeer, Cactus, dashpong, and others.1314## What juice is, and what it isn't1516Juice is **maximum output for minimum input** — every player action triggers a17cascading set of responses across multiple sensory channels. The original18framing comes from a 2005 Gamasutra piece on prototyping: a juicy game "feels19alive and responds to everything you do, tons of cascading action and response20for minimal user input."2122Juice is **not** decoration. It is feedback. Reframing it as "feedback" rather23than "juice" prevents the most common failure mode — adding flash for flash's24sake. If a wobble, particle, or sound is not communicating something to the25player about cause, consequence, weight, or state, it is clutter. Clutter26degrades clarity, and clarity is more valuable than spectacle.2728Juice also is **not** a substitute for gameplay. Add it after the core mechanic29works. Jonasson and Purho built a fully working Breakout clone before juicing30it. Nijman makes the same point: prototype the game first, then spend a year on31the menu.3233## When to apply this skill3435- Polishing a finished prototype that "feels off" or "feels cheap"36- Reviewing a build and producing a structured audit of feedback gaps37- Designing feedback for a single mechanic (a jump, a hit, a pickup, a death)38- Choosing easing curves or tween durations39- Diagnosing why a game feels sluggish or unresponsive40- Adding tactile response to non-game interfaces (transitions, button presses,41 drag-and-drop)4243Do **not** apply this skill before the underlying mechanic exists. Polish44before the mechanic is settled wastes effort and entrenches bad design.4546## The seven categories4748Juice is most usefully decomposed into seven channels. Each gets its own49reference file. Read the ones relevant to the task at hand — do not load all of50them by default.5152| Category | Read when… | Reference |53| ------------------- | ------------------------------------------------------------------- | --------------------------- |54| Movement & tweening | Animating any property over time — position, scale, rotation, alpha | `references/movement.md` |55| Particles & debris | Events need spatial spread or visible aftermath | `references/particles.md` |56| Sound | Almost always; the highest-leverage category | `references/sound.md` |57| Camera | Playfield needs to react, or impact needs amplification | `references/camera.md` |58| Permanence | The world should remember what happened | `references/permanence.md` |59| Personality | Inanimate elements need to feel alive | `references/personality.md` |60| Clarity & restraint | Always — and especially when the build feels "loud" or unreadable | `references/clarity.md` |6162A separate file, `references/audit.md`, contains a structured checklist for63auditing an existing build. Use it when reviewing rather than building.6465## The minimal layered-feedback pattern6667When a single player action fires, layer responses across as many channels as68fit. The Jonasson/Purho ball-hits-block event in their demo stacks roughly69twelve effects on one collision:70711. Ball scales up briefly, then eases back (movement)722. Ball flashes white, then eases back to colour (movement / clarity)733. Ball rotates to face new direction (movement)744. Ball stretches along its velocity vector (movement)755. All blocks scale slightly toward or away from the impact (movement)766. The wall the ball came from bounces (movement)777. Block falls away with rotation, scaling, and darkening (movement / clarity)788. Smoke puff emits at impact (particles)799. Shatter debris falls from destroyed block (particles)8010. Ball trail extends behind the moving ball (particles)8111. Distinct collision sound, pitch-shifted on streaks (sound)8212. Screen shake proportional to impact (camera)8384None of these alone changes the game. Stacked, they transform a sterile85prototype into something that demands replaying. **The point is the stack, not86any single effect.**8788## Workflow89901. **Establish the polish baseline.** Confirm the core mechanic is settled. If91 it isn't, stop and finish the mechanic first.922. **Inventory the events.** List every player-facing event: every input, every93 state change, every collision, every spawn, every death, every UI94 transition. This is the surface area for juicing.953. **Rank events by frequency and weight.** Frequent events (movement, basic96 attacks) need light, fast, varied feedback to avoid fatigue.97 Rare-but-important events (boss kills, level transitions, death) earn98 heavier feedback — slow-mo, screen-wide flashes, voice cues.994. **Layer across channels.** For each ranked event, sketch responses across100 the seven categories. Aim for at least three channels on common events and101 five-plus on rare ones.1025. **Build, then test on someone else.** You stop noticing your own juice103 within a day. Hand the build to someone unfamiliar — watch where they react104 and where they don't.1056. **Audit for clarity.** Run `references/audit.md` against the build. Cut106 anything that does not communicate. Add accessibility toggles for screen107 shake, flashing, and motion.108109## Pitfalls110111- **Linear motion everywhere.** Lerps are programmer-default and look112 mechanical. Real objects accelerate and decelerate. See113 `references/movement.md`.114- **Quiet or thin sound effects.** A bass-boosted gunshot is a cliché because115 it works. See `references/sound.md`.116- **Screen shake as a hammer.** Screen shake on every event becomes invisible117 and induces nausea in some players. Reserve it for impact and provide a118 toggle. See `references/camera.md`.119- **Juice in lieu of gameplay.** Vampire Survivors aside, no amount of confetti120 rescues a broken loop. Fix the loop first.121- **Particle-engine yak-shaving.** Building your own particle system from122 scratch is a known programmer trap. Use what your engine ships with. The123 juice comes from how you use it, not how you wrote it.124- **No accessibility escape hatches.** Some players get motion-sick from shake,125 some have photosensitive epilepsy, some find damage numbers126 immersion-breaking. Toggles cost almost nothing and broaden your audience.127128## Source material129130The skill draws on:131132- **Martin Jonasson & Petri Purho**, *Juice it or lose it* (2012). The133 canonical talk; the Breakout demo is the worked example.134- **Jan Willem Nijman (Vlambeer)**, *The Art of Screen Shake* (2013). Thirty135 incremental polish steps applied to a stub shoot-em-up.136- **Steve Swink**, *Game Feel: A Game Designer's Guide to Virtual Sensation*137 (2008). Academic foundation; defines feel as "real-time control of virtual138 objects in a simulated space, with interactions emphasized by polish."139- **Mark Brown**, *Game Feel* (Game Maker's Toolkit, 2014). Concise140 consolidation of the above with practical examples.141- **Mike Salyh**, *6 Mistakes That'll Drain the 'Juice' Out Of Your Game* (Game142 Developer, 2020). The "anti-juice" framing.143- **Kyle Gabler**, "Add eyes to anything" — a maxim from World of Goo.144- **Robert Penner**, easing equation library (2002). The canonical reference145 for easing curves.146147When working through this skill, prefer concrete examples from these sources148over invented ones. They have been studied and replicated for over a decade.