What it does
The board is a set of columns hanging from a ceiling, with no gaps. On a timer set by the level, a new row pushes in at the top and every piece moves down one; a column that grows past the bottom loses. The player's character stands under the columns. A grab takes the bottom piece of its column and every piece of the same colour directly above it, and it can keep grabbing that colour from other columns. A throw sends everything held back up under the current column as one stack.
When a piece lands, the vertical line through it is checked. Three or more of a colour clear, and the clear floods to every touching piece of that colour. Cleared pieces flash for two-thirds of a second, then the pieces below rise into the gap and may line up again. A clear that starts while another is still flashing or rising is the next link of the chain, and while a chain runs, new rows and incoming attacks wait. Special pieces react in a set order: bubbles pop, ice clears and thaws the rest of the board's ice, colour ice thaws by its colour, arrows fire along their line, and numbered bombs count down by chains and blow up their neighbours.
You call move, grab and throw, step with tick, and read the state and events. Every piece keeps one id from
the board to the hand and back, with a position and a phase for its rise, throw, push or clear, so a presenter keys one
sprite per piece and animates from the state.
Features
- Grab and throw — any number of pieces held, across columns, with an optional hand limit and a wrapping character.
- Flood clears — lines of a set length clear with every touching piece of their colour, and rainbows count as any colour.
- Chains — rises that line up again and clears made while others flash both extend the chain.
- Special pieces — specials and rainbow crystals that wipe a whole colour, plain ice, colour ice, bubbles, arrows and numbered bombs.
- Scoring — points per piece plus a chain bonus that doubles per link, with the formula's numbers as settings.
- Four objectives — endless survival with a level table, quotas per level, the most pieces against a clock, and authored clear-the-board stages with throw and time limits.
- Three rule sets — the variations of the three arcade games in the series, for how specials match and are grabbed.
- Versus hooks — attack events with an attack level and lines, incoming garbage lines of uneven shapes that wait while a chain runs, and offsetting.
- Held-direction repeat —
DropRepeaterturns a held direction into steps for keyboards and pads. - Deterministic — seeded rows, fixed 120 Hz steps, and snapshot and restore.
Good for
- Grab-and-throw arcade puzzles, in the style of Magical Drop, in survival, quota or timed modes.
- Puzzle-stage games with authored boards that must be cleared within a number of throws.
- Two-player versus games, two boards trading attacks through
versus-garbage. - Tutorial ladders, where each stage teaches one rule, as the second preset's ten stages do.
- Hybrids, such as a defence game where enemy waves arrive as garbage lines between the player's chains.
Make it yours
A configuration is plain data. You choose the board's columns, rows and colours; the match length and how specials match and are grabbed; whether bubbles pop on a grab, whether the player can push a row in by hand, and whether a throw that overflows loses or is refused. Every timing is a setting, as are the board's contents through a text legend, the starting rows or a whole authored board, the row generator, the level table, the objective, the character's start and wrapping, the scoring, the attack table and the garbage cap.
Two quite different games ship as presets. The arcade preset is a seven-by-twelve endless survival game with specials, rainbows, ice, bubbles and a push button, in three rule sets and three difficulties. The puzzle preset is an eight-by-ten board in five colours with no new rows and a wrapping character, and ten authored stages that each teach one rule, with throw limits at par, par plus one or par plus two. A ten-by-eight board in six colours with lines of four and a three-piece hand runs through the same API.
A quick look
An endless game, a grab and a throw, and attacks passed to an opponent:
const gtc = game.grabThrowColumns;
const drop = gtc.createDropGame(gtc.magicalDropPreset({ mode: 'endless', difficulty: 'normal', seed: 7 }));
drop.move(-1); // one column left
drop.grab(); // bottom run of one colour into the hand
drop.move(1);
drop.throw(); // every held piece back up this column
const s = drop.tick(dt); // fixed 120 Hz steps inside; returns a copy of the state
for (const e of drop.drain()) if (e.kind === 'attack') opponent.receiveGarbage(e.lines);
Works with
versus-garbage— the attack exchange between two boards.typography— for the score, level and chain counter.controls-touch— on-screen buttons for moving, grabbing and throwing.faller— for steered pieces falling into a well; it shares the shape of these versus hooks.bubbleshooterandcatch-stack— for shooting into a hanging grid, or catching from a conveyor.
Good to know
- One character per board; two-player play is two games and a versus layer.
- The arcade's survival push interval and level-up rule were never published, so the preset uses an estimate, and rows come from a seeded generator or authored strips rather than the arcade's own.
- Character specials, a computer opponent and the special-mode pieces of later games (fire, medals, drips) are not modelled.
- Boards go up to 64 columns by 128 rows and 16 colours; an unsupported setting throws and names itself.






