Fire balls from the bottom of the board at bricks marked with numbers. The number is the brick's remaining hit points; every touch takes one off. When all balls have returned, every row moves down one step and a new row enters at the top. New bricks carry as many hit points as the current stage, so the longer you last, the thicker the bricks. Each row hides one «+1 ball» — brush it and you fire one more ball next turn. The game ends the moment a brick reaches the launch row. Your best stage is saved in this browser only; nothing to install.
A new row places the «+1 ball» first in one of the seven cells, then a brick in each of the other six with 45% probability. Brick hit points equal the stage number, doubled with 15% probability.
You cannot aim flatter than 10° from horizontal. Flatter than that, balls would shuttle sideways and the turn would never end.
Balls move 9 pixels 60 times a second (540 px/s). A brick side is 46 pixels, so balls never pass through. Balls leave about 0.07 s apart.
A «+1 ball» that reaches the launch row is collected automatically, so one missed pickup cannot freeze the game.
Your best stage lives in this browser's localStorage and is never sent to a server.
Three rules make the whole game: balls bounce off walls and bricks, bricks lose one point per hit, and every row drops one step when a turn ends. The board is 7 columns by 10 rows with the launch row beneath. A brick touching the launch row ends the game.
Every new row contains exactly one «+1 ball»; each of the other six cells gets a brick with 45% probability. Brick hit points equal the stage, doubled with 15% probability. So the game gets harder in exactly one way — bricks get thicker — and there is exactly one answer: more balls.
The stage is the turn count. It rises by 1 each turn and is the number saved as your best. Bricks broken are counted too, but whoever lasts longer breaks more bricks, so the two mostly move together.
Bricks thicken every stage, but balls only grow when you collect pickups. Missing one «+1 ball» does not cost one turn — it costs one ball on every turn after that. Early on, look for the pickup before the bricks.
A pickup needs only a touch: no repeated hits, just a ball passing through it. So the first question when aiming is «does this path cross the pickup?»
A pickup that drifts down to the launch row is collected on its own. Missing it is not the end, but you spent two or three turns one ball short.
Balls leave a wall or ceiling at the angle they arrived (angle of incidence equals angle of reflection). The aiming line shows those bounces up to the walls but ignores bricks — showing the path after a brick would make aiming the answer and delete the game.
The strongest shot threads a ball into an empty column between bricks. A ball caught there hits both neighbours in turn and struggles to get out, grinding them down. Hitting the seam where two bricks touch takes 1 off both at once. A tall empty column is the turn's target.
Flat angles are clipped at 10°. A low shot sweeps a row sideways nicely, but flatter than that the ball just shuttles left and right without climbing, and the turn drags.
The first ball back sets the next launch spot. With many balls, think about where that first ball lands — an angle that returns near the middle keeps next turn's options open.
Around thirty balls, turns get long. Hold the screen while balls fly and the game runs at triple speed; after 8 seconds it speeds up on its own. Physics runs on a fixed 1/60 s tick, so fast-forwarding changes nothing but the wait.
What keeps you here is that a turn is short and each one ends with two open questions at once: what the next row brings, and which gap to thread. Failure never arrives all at once either — you watch a thick row creep down and can count the turns you have to break through.
Ball motion is computed 60 times a second, 9 pixels per step. On a phone that drops frames the picture slows but the path is identical. The same board and angle always produce the same result, which lets the tests write down the rules literally.
Brick collision measures the distance from the ball's centre to the nearest point on the brick; the bounce axis is the larger component of that vector. A top hit flips only the vertical velocity, a side hit only the horizontal. After bouncing the ball is pushed clear so the next step does not hit the same brick again.
A new row picks the pickup cell first and then places bricks. Done the other way round, a row of seven bricks occasionally leaves no pickup, and a few such rows in a row freeze the ball count.
The rules are pure functions over immutable state, so each tick can be compared with the previous one — that difference is what triggers the brick-break and pickup sounds.
Your best stage stays in this browser. Nothing is sent to a server, there is no global leaderboard, and clearing site data clears the record.
Fire balls upward at numbered bricks. Each touch lowers the number by 1; at 0 the brick vanishes. When every ball has returned, all rows drop one step and a new row enters. The game ends when a brick reaches the bottom launch row.
Brush the ring-shaped «+1 ball» hidden in every row. From the next turn you fire one more ball. A pickup that reaches the launch row is collected automatically.
Remaining hit points. New bricks get as many as the current stage, doubled with 15% probability. A brick entering at stage 20 takes 20 hits (40 if doubled).
By 1 every turn — a turn is one full salvo out and back. The stage is how many turns you survived, and that is the record kept.
Yes. Drag on the board to aim and release to fire; hold the screen to fast-forward. It runs in the browser without install or sign-up, and works offline.
What this tool bases its numbers on, and how far those numbers go.
The board is 7×10. A new row has one «+1 ball» plus a brick in each other cell with 45% probability (hit points = stage, doubled with 15% probability). Balls move 9 px sixty times a second and reflect off walls and bricks at the incoming angle. When a turn ends every row drops one step.A brick entering at stage 12 has 12 hit points (24 if doubled). With 5 balls, removing it this turn means each ball must hit it 2.4 times on average.