pixi-reels
All recipes

Cascade & tumble

Cascade & tumble. step-by-step slot recipe built with pixi-reels.

The full cascade and tumble toolkit, one live demo at a time.

Cascade 6x4 tumble#

Modern tumble mechanic where runCascade owns the detect, destroy, refill loop; the second canvas is the identical recipe on real Thunderkick Spine art.

Loading recipe…

Loading recipe…

Cascade wins. present, destroy, refill#

The fixed round order (present the win, destroy the winners, refill the holes), then the destroy stage two ways: the engine implode versus an authored Spine explosion.

Gotcha: compute winners from your match logic, never by diffing two grids. survivors slide past cleared slots and a diff misreads them.

Loading recipe…

Loading recipe…

Loading recipe…

Lead-in delay before the fall#

Same spin, only the gap between the SPIN click and the first frame of fall-out changes: 0, 150, 350, and 700 ms.

Loading recipe…

Loading recipe…

Loading recipe…

Loading recipe…

Cascade refill orders#

Same destruction, only the post-win refill ordering changes: simultaneous, left-to-right wave, and bottom-up.

Loading recipe…

Loading recipe…

Loading recipe…

Tumble feels. every preset#

Same spin and cascade refill, only .tumble({ fall, dropIn }) changes: classic, slow drop, slam, rain column, and wave.

Loading recipe…

Loading recipe…

Loading recipe…

Loading recipe…

Loading recipe…

Cascade anticipation refill#

Two-stage refill: survivors slide down first, a held anticipation beat for multipliers and mascots, then new symbols drop in reel by reel.

Loading recipe…

Loading recipe…

Spin first, cascade after#

Open every play with a classic strip-spin, then cascade the respins; the per-spin mode override flips between strip-spin and pure drop.

Loading recipe…

Loading recipe…

Loading recipe…

Cascade sideways#

The same tumble on .orientation('horizontal'): reels are screen rows, the strip travels along X, and tumble({ gravity }) stays on its default 'auto', so each reel drains toward the edge it travels toward and refills from the other one.

Gotcha: gravity decides the server contract. survivors must be packed against the edge gravity exits by ([...fresh, ...survivors] under forward gravity). The engine animates the grid you send, it never reorders it.

Loading recipe…

Spin up, drop down (explicit gravity)#

Reels built .direction('reverse') roll upward, but tumble({ gravity: 'forward' }) makes the tumble settle downward anyway. gravity is only worth setting when you want travel and settling to disagree; leave it at 'auto' and a reverse reel drains upward with no further config.

That includes the cell stagger. cellOrder defaults to 'auto', which starts at the gravity-exit end. the edge symbols are leaving by. Under the explicit forward gravity here the bottom cell still goes first; drop the override and the top cell leads instead, because that is the edge the column now drains through. Pass 'endFirst' or 'startFirst' to pin a geometric end regardless of gravity.

Loading recipe…

Drain upward (gravity follows travel)#

The default case, for comparison: .direction('reverse') with no gravity key at all. Everything flips together. the top cell falls first and lands first, and the column peels upward behind it.

Gotcha: the server contract flips with it. Survivors pack against the edge gravity exits by, which is now the top, so nextGrid returns [...survivors, ...fresh]. Flipping the reel without flipping the grid is what makes an upward board look scrambled.

Loading recipe…

Peek symbol from buffer-start#

Pre-fill the bufferStart slot so a teaser symbol sits just out of frame, visible during the next spin’s scroll-in.

Loading recipe…

Assets provided by Thunderkick