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
| Parameter | Kind | Required | Default | Notes |
|---|---|---|---|---|
| duration | number | no | 0.3 | 0.05-1 seconds. Default 0.3. |
| amount | number | no | 12 | 1-32 pixels. Default 12. |
| target | string | no | "" | Optional sprite tag; empty targets the whole frame. |
| wait | boolean | no | true | Block for the effect's duration when true; false fires and continues so effects can overlap. |
Canonical example
sprite show liam
@punch
say "Liam": "Say that again."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:
@shakeis a sustained, decaying jitter. Use it for vibration - earthquakes, engine rumble, sustained tension.@punchis 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@punchfor "slap + white flash" reaction eventstransition- Ren'Py'shpunchtransition is the no-parameters source form