pixi-reels
Cookbook

Small recipes, one mechanic each.

Each page is a focused how-to: the minimum code to make a single mechanic work, plus a live mini-demo you can replay.

Big symbols (N×M blocks)

Single symbol that occupies an N×M block of cells. 2×2 bonuses, 3×3 giants, 1×3 bars.

Features, bonuses & transforms

Mystery reveals, value coins, collectors, symbol upgrades.

BP

Board primitive: build your own board

A reveal-and-collect prize grid built directly on the generic BoardGrid primitive — every cell spins independently to a result you choose, and the rule is yours. Hold & Win is just one opinionated board on the same primitive.

Open recipe
HL

Hold & Win: live event trace

A board runs a full feature while every board.events beat prints to a live log — feature:enter, respin:start, cell:landed, coin:locked, respins:changed, respin:end, board:full / feature:end. The lifecycle, made visible.

Open recipe
HR

Horizontal reel (paying-symbol banner)

A single one-row reel above the reels that spins, lands, and cascades. Same spin() / setResult(ColumnTarget[]) / SpinResult contract as ReelSet — one column — plus a real cascade that removes winners, collapses survivors, and refills from the feed side.

Open recipe
HS

Hold & Win: sprite coins (no Spine)

The whole board from TexturePacker sprites — number symbols that blur as they spin and a 30-frame coin flip on land. The sprite path that ships most often, no skeleton runtime.

Open recipe
HM

Hold & Win: multiplier-strike coin

A multiplier coin lands, the strike FX fires over it, a ×N badge pops in the game's multiplier font, and every coin's value is multiplied. The board never reads the multiplier.

Open recipe
HC

Hold & Win: collector with particle streams

A collector lands and each coin's value flies into it on a bezier arc trailed by a stream of neon particles, ticking the total up. The board hands out geometry; the flight is yours.

Open recipe
HB

Hold & Win: bonus cells

A few cells are marked bonus cells from the start; a coin that lands on one flashes the cell active and doubles its value. Positional rules are pure game state.

Open recipe
HM

Hold & Win: mystery value coin

Coins land blank; on lock a strip of candidate amounts spins inside the coin face and decelerates onto the real value. The value lives in coin.data — the board never reads it.

Open recipe
HP

Hold & Win: payer / doubler coin

A special payer orb lands and pumps its value into every other coin — a gold token arcs to each one and bumps it on arrival. One line changes it into a doubler.

Open recipe
HU

Hold & Win: upgrade a coin in place

A held coin climbs the value ladder (5 → 10 → 25 → 50 → 100) with a flip-and-pop — no respin, no cell movement. The new tier lives in coin.data.

Open recipe
HC

Hold & Win: count-up coin

Each coin's amount ticks up from 0.00 to its value as it settles, in a reading-order wave, instead of snapping to the number.

Open recipe
HF

Hold & Win: fly to a feature meter

On collect, each coin's value flies UP into a meter above the reels (arriveScale shrink), ticking the total and filling a progress bar toward a target.

Open recipe
HR

Hold & Win: row-complete jackpot

When a coin completes a full row, that row flashes coin by coin, the MINI plaque fires, and the row total flies up into it. Row detection is pure game logic.

Open recipe
HE

Hold & Win: enter from the base game and back

A normal 5x3 spin that, on 3 BONUS, transitions in the same chain into the Hold & Win board, runs the feature, and swaps back to the base game on feature:end. Two display objects, one Spin button.

Open recipe
HD

Hold & Win: drive each cell on its own

board.reelAt(cell) hands you the raw 1x1 ReelSet — start it, slam-stop it, read the symbol inside it, independently of every other cell.

Open recipe
HS

Hold & Win: swap a symbol in place (coin → MINI → MAJOR)

board.setSymbolAt(cell, id, data) re-places one cell with a different symbol — a coin climbs the jackpot tiers — and rewrites its ledger entry, leaving every other coin where it was.

Open recipe
HO

Hold & Win: an overlay that survives swaps and rides flights

A ×100 badge lives in coin.data, attached as a child of the symbol's view — so it survives an in-place swap (re-attached from data) and travels with the coin on a collect flight.

Open recipe
ST

Symbol transform

A symbol morphs into a different (usually higher) one mid-round. winning lows upgrade to meds.

Open recipe
VC

Value-carrying coin (Hold & Win)

Each coin carries a coefficient (×2 … ×50) in coin.data; the board locks hits and respins only the free cells natively — no pins, no hand-rolled grid. The ×N badge is painted from data, the total summed from board.lockedCoins.

Open recipe
CS

Collector symbol

On the Hold & Win board, the collector orb absorbs its neighbours: walk board.lockedCoins, sum the adjacent coins, fly their values in and release() those cells. No pins.

Open recipe
MR

Mystery reveal (CellPin)

Mystery symbols land, all reveal to the same random class via eval pins. auto-cleared at next spin.

Open recipe
PM

Positional multiplier cells

Specific cells carry multipliers. any symbol that lands there boosts the win passing through.

Open recipe
SM

Spine mystery reveal

Mystery bushes land, burst, and seamlessly uncover the round's shared symbol underneath.

Open recipe
SL

Symbol layering - zIndex, unmask, promote

Three tiers of "draw my symbol on top" - within one reel, above every reel and the mask, and per-instance via the spotlight layer.

Open recipe
Anticipation, skip & respin

Slow a reel, slam-stop, near-miss, single-reel respin.

HL

Hold & Win: last-cell anticipation

One builder knob slows the last still-spinning cell to a tension profile — the 'one more for the full board' moment. The recipe only listens to events.

Open recipe
HS

Hold & Win: skip the whole feature

board.skip() slams every in-flight cell to its landed position and fires feature:skip; the game layer cuts its flights / collect short. feature:end stays the single "feature over" signal.

Open recipe
AR

Anticipate a reel

Slow a specific reel to build tension before it lands.

Open recipe
PS

Peek symbol from buffer-above

Pre-fill the buffer-above slot so a teaser symbol sits just out of frame, visible during scroll-in on the next spin.

Open recipe
AT

Anticipation teaser

Pair setAnticipation with a buffer-above prefill so the next cell to scroll into view on a slow reel is a caller-chosen symbol.

Open recipe
SS

Staggered / sequential anticipation

Tease reels one after another instead of all slowing at once.

Open recipe
SA

Slowing anticipation

Each teasing reel crawls slower than the last, then stops exactly there.

Open recipe
SD

Scatter-driven anticipation

Pick the tease reels straight from the result grid.

Open recipe
AT

Anticipation in turbo

Keep the tease playing in Turbo / SuperTurbo with a duration override.

Open recipe
ST

Skip the tease

Let the player slam through a long anticipation at any point.

Open recipe
SS

Slam-stop

Let the player smash the button to land the reels now.

Open recipe
SJ

Scatter jaw anticipation

The rig's own near-win clips - the leftmost scatter snaps its jaw, holds the loop, and the rightmost lands the verdict.

Open recipe
FN

Fake a near-miss

Place N-1 scatters plus anticipation on the reel that "almost" landed one.

Open recipe
NR

Nudge a reel

After landing, shift one reel down or up by N positions to reveal caller-supplied symbols.

Open recipe
SA

Spotlight after a nudge

Land a near-miss, parallel-nudge three reels to complete a wild line, then run SymbolSpotlight on the new winners. Chains nudge() and spotlight.show() in their canonical order.

Open recipe
SF

Skip an in-flight nudge

reelSet.skipNudge(col) fast-forwards a running nudge tween to its landed position. The original nudge() promise resolves normally. success path still runs.

Open recipe
AN

Abort a nudge

Cancel a running nudge via NudgeOptions.signal. Strip still snaps to landed; nudge() rejects with AbortError; nudge:cancelled fires on the bus.

Open recipe
SN

Staggered nudge. wave reveal

Promise.all + NudgeOptions.startDelay dispatches every reel's tween concurrently with a per-reel offset. Total wall time is (cols.length - 1) * stagger + duration.

Open recipe
NT

Nudge through a big symbol

A 1xH block on the target reel is nudged through as a unit. Survival formula enforced; cross-reel (w>1) blocks throw.

Open recipe