Tier C — live mesh rig

This is the Rive / Spine technique running on your real raster sprites — not flat SVG. Each image is mapped onto a deformable mesh: it jelly-wobbles, breathes, squashes, sweeps a gloss highlight and pulses a coloured rim glow. Hit WIN / MEGA WIN (or click any symbol) to fire the elastic pop + flash + shockwave + sparkles. A per-symbol state machine (idle → anticipate → win → bigwin) drives it — exactly what a .riv gives you.

juice 96/120 · +35% vs classic

The flacon — classic rig vs juiced rig

Same 360² gpt-image-1 sprite, the same mesh rig. Left = classic pipeline (gloss sweep, rim glow, flash). Right = juiced: a grounding contact shadow the candy lifts off, a hit-stop freeze at the pop apex, a wet-sugar specular + glass-dot, additive sugar bursts — over a daylight board. Both auto-pop; click either to fire a WIN.

Versions — pick the personality per symbol

Three presets in rig.js: Premium glossy (elegant, gold sweep), Gummy candy (heavy squash, bouncy — the Sweet-Bonanza feel), Charged (electric, shakes on win). Click any tile to make it react.

Why no characters here: a uniform mesh-warp is the right tool for symbols (bright, simple silhouettes) but the wrong tool for a standing figure with thin limbs — it shears and a glow-halo around a dark character (e.g. Aristide) just smears. Characters get pose-swap (Tier B, on the main showcase) or true bone-rigging in Rive/Spine. Using the right technique per asset is the actual craft.

Mesh-deformation rig in WebGL (js/rig.js, ~5 KB) on real sprites from vigfi-kazino-lechat & perkons-game.
Production path: author the same rig once in the Rive editor → export a tiny .riv → play with @rive-app/react-canvas. The motion you see here is what that buys.