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
| Parameter | Kind | Required | Default | Notes |
|---|---|---|---|---|
| duration | number | no | 0.4 | Seconds 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. |
| amount | number | no | 8 | Peak 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
show emma-shocked
@shake
say "Emma": "What was that?"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 punctuationtransition— Ren'Py-aligned bare transitions; effects are a separate verb space