Studio

FolioTier 2

@punch

Snap the whole frame, the backdrop, or a single sprite horizontally for a single event of physical impact.

@punch throws a fast horizontal snap at the moment of impact, giving a hit, explosion, or sudden jolt the physical weight that audio and text alone cannot convey. Place it right before the dialogue line that follows the action so the shake lands at the same beat the player clicks through.

By default the whole frame jolts, which reads as a world-level event. Point it at a single sprite when you want the hit to feel personal and contained - a character staggered rather than the room shaken.

Keep duration short for clean strikes; anything above 0.5 seconds starts to read as a lingering tremble rather than a sharp snap. Amount controls how far the frame travels on that snap, so pushing it above the default suits a heavy nearby explosion, while leaving it low works for a glancing blow or a muffled thud off-screen.

When wait is false, the shake runs behind the scenes while the script continues, which lets you layer @punch with a flash or audio cue and have everything land at once. If you need the character to speak only after the frame has settled - so the dialogue does not appear mid-shake - keep wait at true.

Demo

@punch

Hello.

A single horizontal recoil that damps back to rest - distinct from @shake's sustained jitter. Watch the stage snap right, oscillate with shrinking amplitude, then settle.

Parameters

ParameterKindRequiredDefaultNotes
durationnumberno0.30.05-1 seconds. Default 0.3.
amountnumberno121-32 pixels. Default 12.
targetstringno""Optional sprite tag; empty targets the whole frame.
waitbooleannotrueBlock for the effect's duration when true; false fires and continues so effects can overlap.

Canonical example

Folio
sprite show liam
@punch
say "Liam": "Say that again."
Ren'Py
show liam angry
with hpunch
l "Say that again."

@punch is the right tool for a single event of physical impact - a slap, a gunshot, a slammed-against-wall reveal. The stage snaps horizontally once, returns to rest, and the next line runs.

Notes

@punch and @shake are not interchangeable even though both displace along the x-axis:

  • @shake is a sustained, decaying jitter. Use it for vibration - earthquakes, engine rumble, sustained tension.
  • @punch is a single recoil-and-return. Use it for impact - one hit, one snap-back, done.

The corpus signal is loud here: one sampled game uses with hpunch (Ren'Py's source primitive for this effect) 113 times across episodes 2-8, almost always paired with a show of a reaction sprite (a character recoiling from a slap or shout). The defaults match that pattern; override amount upward (@punch(amount=20)) for heavier impacts.

A vertical variant - @vpunch - exists as a Ren'Py primitive and appears 15 times in one sampled game (mostly stomps and falls). Folio has no vertical-punch effect yet, so the importer lowers both with vpunch and with hpunch to a @punch effect line (and with pixellate to @dissolve) rather than emitting a dead transition line. A dedicated @vpunch lands when the Phase 3 matrix-driven second batch ships.

See also

  • @shake - sustained jitter, different shape entirely
  • @flash - pairs with @punch for "slap + white flash" reaction events
  • transition - Ren'Py's hpunch transition is the no-parameters source form