FolioTier 2

@shake

Jitter the stage briefly to punctuate impact, surprise, or shock.

Demo

@shake

Hello.

Click play to fire @shake against a placeholder stage. The textbox stays still — only the backdrop layer animates, mirroring how the live player isolates effects to the stage wrapper.

Parameters

ParameterKindRequiredDefaultNotes
durationnumberno0.4Seconds the shake plays for. Range `0.05`–`2.0`; values outside the range reject at parse time with a stable issue code that flows to the migration report.
amountnumberno8Peak displacement in CSS pixels along both axes. Range `1`–`32`. The shake decays linearly toward zero across the duration; the parameter is the *starting* magnitude, not the average.

Canonical example

Folio
show emma-shocked
@shake
say "Emma": "What was that?"
Ren'Py
show emma shocked
with shake
e "What was that?"

@shake is its own line — it doesn't take a with clause and doesn't appear inside scene / show / hide. The effect plays after the preceding stage operations have committed; the next line resumes the script as soon as the effect's duration elapses.

Notes

The bare form @shake uses the documented defaults. Override either parameter explicitly when the moment needs more or less:

@shake duration=0.2 amount=4

Both parameters are optional; pass one without the other to keep the other at its default. Out-of-range values reject during parse, not runtime — the importer surfaces them in the migration report and the studio editor flags them inline with the documented range.

@shake differs from @hpunch in shape, not just orientation: @shake is a sustained jitter that decays across the duration; @hpunch is a single horizontal recoil that returns to rest. Reach for @shake when the moment needs vibration (an earthquake, a slammed door), @hpunch when it needs recoil (a slap, a gunshot).

See also

  • @hpunch — horizontal recoil, single-impulse
  • @flash — full-stage color punctuation
  • transition — Ren'Py-aligned bare transitions; effects are a separate verb space