Block Blast Clone
Games app · from our videos on X
Block Blast Clone is Boxburst, an original block puzzle that plays by Block Blast's rules: three pieces in the tray, an 8x8 board, and full rows and columns that burst. Drag a piece and the lines it would complete light up in its colour; drop it and they burst with Nice!, Sweet! or Clean Sweep! and a growing combo. Journey levels hide stars and diamonds on the blocks to collect, four skins (Jelly, Bevel, Wood, Neon) restyle every block, and a new best ends on a trophy with confetti. Every tray can be placed, and the README shows how to add pieces, levels, skins or a power-up like the one-prompt Solve button.
- iPhone · Swift
- Built in 2 prompts
- Free to remix

Remix copies the working app into your account for free, exactly as we built it. It runs in Vibecode's cloud iOS simulator, in your browser.
Watch the video on X@vibecodeapp · Nov 7, 2026The prompt that builds it
We built Block Blast Clone in 2 prompts. Here they are folded into one, so a single paste into a new app builds the finished version.
Prompt · 2,127 words
Build Boxburst, an original block puzzle game for iPhone in SwiftUI with a SpriteKit board, in the genre of 8x8 block puzzles like Block Blast and Woodoku: drag pieces from a 3-piece tray onto an 8x8 board, full rows and columns burst, combos and praise words, a best score, an Endless mode and a Journey mode with level goals, block skins and settings. Its own name, logo, colours and words, all below.
ASSETS
curl -L once and unzip flat: https://vibecode-boxburst-media.beacon.host/brand.zip. It holds AppIcon-1024.png: use it as the app icon. Everything else (the logo, blocks, effects, icons) is drawn in code with SF Symbols where needed; no image generation.
LOOK
- Screen: a full-bleed vertical sunset gradient #FF9A62 (top) → #FF5F8F (middle) → #7C4DFF (bottom), with a few soft white circles drifting slowly at 8% opacity.
- Board: a rounded panel (16 pt corners) #2B1740 with a 2 pt inner glow #4A2A66; 64 empty cells drawn as rounded squares #3A2152 (8 pt corners) with 3 pt gaps.
- Blocks are "jelly" squares that fill their cell: 22% corner radius, a vertical gradient from 12% lighter at the top to 12% darker at the bottom, a 1.5 pt outline 25% darker, and a glossy white highlight (a soft ellipse at the top-left, 38% opacity). Colours: R red #FF4D6D, O orange #FF9F1C, Y yellow #FFD23F, G green #34D399, C teal #2EC4B6, B blue #4D96FF, P purple #B266FF.
- Text: SF Pro Rounded, black weight, white with a soft plum shadow. Light status bar, always visible.
- The Boxburst logo, drawn in code: "BOX" over "BURST", chunky rounded capitals, each letter filled with a block colour (B blue, O orange, X red; B yellow, U green, R teal, S purple, T red) with a 4 pt white outline and a plum drop shadow, a small white 8-point burst star over the X.
GAME SCREEN (Endless; points on a 402x874 iPhone)
- HUD: top-left a gold trophy (trophy.fill #FFD23F) + the best score in white (22 pt black) at y ~97; top-right a white gear (gearshape.fill, 28 pt, 85%) opening Settings; the current score centred at y ~190, white 58 pt black, rolling up with numericText.
- The board: 8 cells of 44 pt, centred, top at y 236.
- The tray: three slots centred under the board at y ~655; pieces drawn at 0.55x; a placed piece's slot stays empty; when all three are placed, three new pieces pop in (scale 0 → 1.1 → 1.0, 0.06 s apart).
- Below the tray, y 735-805: PowerUpBar, an empty band for buttons a remix adds.
- Dragging: touching a tray piece grows it to board size in 0.1 s and floats it with its bottom 70 pt above the finger. While its cells line up with empty cells, a ghost sits on those cells (white at 28% + a 2 pt white outline). Every row and column the drop would complete shows its blocks in the dragged piece's colour, reverting when the piece moves off, with small sparkles along those lines. Release on a valid spot snaps the piece in (0.08 s, a small squash); anywhere else it flies back to its slot (0.18 s). Pieces never rotate. The dragged piece, the touch dot and any piece flying onto the board always draw above the praise word, the COMBO capsule and the +N pops.
- Bursting: full rows and full columns clear together, starting on the frame the piece snaps in. Each cleared line flashes a soft white light bar (in 0.06 s, fading over 0.3 s); its blocks pop 1.15x and burst into 6-8 small rounded squares and stars of their colour that fly out 40-90 pt with gravity and fade in 0.5 s, in a wave from the drop point outward, 0.02 s per cell. 3+ lines add a 2 pt shake (0.15 s). Haptic on every drop and burst.
- Scoring: +1 per cell placed; clearing n lines in one move scores L(n) x streak with L = 10, 20, 60, 120, 200, 300 (n = 1..6, +100 per extra line) and streak = consecutive clearing moves including this one; an empty board after a clear adds +300. The streak survives two placements without a clear and resets on the third. The move's total ("+126", white with a plum outline) starts 24 pt above the placed piece's top edge, rises 30 pt and fades out in 0.5 s, and never sits under the praise word (it goes beside the piece if they would overlap).
- Words: 2 lines "Nice!", 3 "Sweet!", 4 "Superb!", 5+ "Epic!", an empty board "Clean Sweep!" (with "+300" in a small gold capsule under it). The word springs in at the board centre (0.4 → 1.15 → 1.0 in 0.3 s), chunky rounded white letters with a thick coloured outline (Nice! teal, Sweet! pink, Superb! purple, Epic! orange, Clean Sweep! gold), about 80% of the board width for Clean Sweep!. Under it a capsule "COMBO x2" (white on purple) when the streak is 2+. A new word replaces the old one at once; a word holds 0.6 s then shrinks out in 0.15 s; Clean Sweep! holds 1.4 s.
- Fair deals: a new tray is always placeable (Engine.solve finds an order and spots for all three; redeal otherwise).
- Game over: when no tray piece fits, the blocks fade to grey from the bottom row up (0.05 s per row), then a card: "No moves left", Score, Best with the trophy, a big white "Play Again" capsule (plum text) and "Home". A new best shows "New High Score!" instead: a gold trophy bounces in over white light rays, the score in huge gold numerals, confetti. The HUD's score and best hide while any end card is up.
- No ads, no revives, no coins, no lives.
OTHER SCREENS
1. Home (launch): the Boxburst logo centred at y ~240 (300 pt wide), the trophy + best under it, a big round white Play button (120 pt, play.fill in plum, a soft pulse) that starts Endless, a "Journey" capsule (white text on #2B1740 at 40%, "Level 3" under it), round Skins and Settings buttons at the bottom corners.
2. Journey: the "Journey" title and subtitle on a solid band in the gradient's top colour that the path scrolls under; a winding path of levels 1-20 on the same gradient (round nodes 64 pt: done = gold with 3 stars, current = pulsing white, locked = plum with lock.fill). A level replaces the score with goals: some blocks carry an item (a gold star.fill or a teal diamond drawn on the block face); clearing its line flies the item up to its goal counter in the HUD (e.g. star x5, diamond x4), which counts down. All goals done → "Level Complete!" with 3 stars and "Next"; no moves → "No moves left" and "Retry". Levels 1-3 playable with seeded boards and goals in Levels.swift; 4-20 locked.
3. Skins: a sheet of 4 block skins drawn in code: Jelly (default, above), Bevel (flat face with four bevelled edges), Wood (warm wood tones with grain lines), Neon (dark board, glowing outlines). The choice applies everywhere.
4. Settings: a sheet with Haptics and Reduce Effects toggles, How to Play (three short cards), Reset Best Score. Best score and skin persist in UserDefaults; nothing else persists.
HOOK (the video's first 3 seconds)
Rows top to bottom, columns left to right, numbered from 1; letters are block colours (above), "." empty. Board:
.....GG.
BBPPPGC.
BBOPRRC.
OOOYRRC.
GGCC...P
GGCC...P
YYYRR.OP
.....OO.
Tray: slot 1 a yellow 2x3 (2 rows x 3 columns), slot 2 a red 3x3, slot 3 a teal L (cells r1c1 r2c1 r3c1 r3c2). Score 2140, best 3602, streak 1 (the last move cleared). Checked with a script: the yellow 2x3 at rows 5-6, columns 5-7 completes rows 5 and 6 and column 7 (Sweet!, COMBO x2, +126 → 2266); then the red 3x3 fits nowhere; the teal L with its top at row 5 column 6 completes column 6 and row 7 (Nice!, COMBO x3, +64 → 2330), leaving rows 2-4 full in columns 1-5; the red 3x3 at rows 2-4, columns 6-8 clears rows 2-4 and the board is empty (Clean Sweep!, COMBO x4, +549 → 2879). Re-check it with your own script.
- HOOK MODE: an invisible 44x44 pt area at x 12-56, y 64-108 (over the trophy) on every screen, above every sheet and card. A tap closes everything, opens Endless on the seeded state and plays this run through the real drag, drop, burst and deal code, identical every time (seconds from the tap): 0.40 the touch dot lands on slot 1; 0.50 the piece lifts; 0.50-1.15 the dot drags it on an easing curve to its spot (the ghost and the yellow line preview show from ~0.95); 1.15 drop; 1.20 the burst; 1.25 "Sweet!"; 1.35 "COMBO x2"; 1.80 the words shrink out; 1.95 the dot picks up the teal L, 2.45 drops it on its spot (Nice!, COMBO x3); 2.95 the dot picks up the red 3x3, 3.50 drops it on rows 2-4 / columns 6-8 (Clean Sweep!, COMBO x4); 4.90 a new tray pops in: a blue 1x4, an orange 2x2, a green T. Every wait uses these times, never the app's normal delays; no random numbers anywhere in HOOK MODE.
- The touch dot: 44 pt, black at 35%, a 3 pt white ring, a soft shadow, drawn above everything (under the dragged piece's bottom centre while dragging); it scales in as it lands, glides between points and fades after its last drop.
- What the eye must see: the dragged piece stays visible on every frame from the tray to the board; the line preview is on before the drop; blocks never vanish in one frame (they pop and burst); flashes ≤0.12 s at ≤35% white; Clean Sweep! replaces the earlier word and holds ≥1.2 s; ghosts are exactly cell-sized. Preload everything and warm up haptics at launch: the first run must not stall.
REMIX-READY
Theme/Brand.swift (name, the code-drawn logo, a Copy enum with every word), Theme/Theme.swift (colours, gradients, fonts; no colour literals elsewhere), Theme/Skins.swift. Engine/ is pure Swift with no UI: Board (8x8 of optional Block), Piece (cells + colour), Pieces.swift (every shape of the genre: 1x1; 1x2, 2x1; 1x3, 3x1; the four 3-cell corners; 1x4, 4x1; 2x2; T, S, Z and L/J in all their orientations; 1x5, 5x1; 2x3, 3x2; 3x3; the four 5-cell big corners), Placement (trayIndex, row, col), Engine.canPlace / place (returns the board, the cleared lines and the points) / solve(board, tray) -> [Placement]? (tries every order and every spot, counting clears between moves; prefers a plan that empties the board, then the most lines). Game/GameStore.swift (@Observable: board, tray, score, best, streak, mode, level) with one place(_:) used by the finger, by HOOK MODE and by autoplay([Placement], flight: 0.25, gap: 0.35), which flies tray pieces onto their cells through the same drop code with no finger. Game/HookScript.swift: HOOK MODE as a list of timed steps (dotTo, pickUp, dragTo, drop, wait). Game/PowerUpBar.swift: the empty band under the tray. Data/Levels.swift, Data/DemoBoards.swift (the hook board). Features/<Screen>/. README.md under 80 lines: file map; how to rename, recolour, change the logo, add a piece, a level, a skin or a power-up (PowerUpBar + Engine.solve + autoplay); 3 one-prompt remixes ("Boxburst for your week: pieces are meetings, a full row frees an afternoon", "a 💡 Solve button that shows where all three pieces go", "Boxburst for kids: every burst says the colour's name"). "Read README.md first." atop CLAUDE.md and ios/AGENTS.md; replace ios/CLAUDE.md's structure block with this app's files. No scratch folders.
FILMING
Long-press the score to reset everything to launch (board, tray, score, best 3602, skin Jelly). Long-press the gear to jump to a game over with a new high score (3,640 vs 3,602).
RULES
- Native SwiftUI + SpriteKit (SKView for the board, tray, drag and effects at 60 fps; SwiftUI for the HUD, menus and sheets), iOS 26 (keep the template's target), iPhone portrait.
- Deterministic fixtures; no backend, login, permissions, analytics or network calls at runtime. Delete the SwiftData starter.
- Springs under 350 ms, haptics on taps, pressed states.
- Files under 300 lines, big bodies split into subviews, no long chained expressions.
BUILD
Theme, Brand, Engine (with a quick check of the hook board), then the game screen in small files (board, blocks, tray, drag, burst effects, words, HUD), launching in the simulator every two or three files; then HOOK MODE, Home, game over and New High Score, Journey, Skins, Settings. Fetch brand.zip as soon as the shell runs; check the file exists, never view it. Walk each flow once and fix what breaks; no pixel measuring or debug modes. Deliver the whole app, not a plan.More templates
All templates- View template

Chess.com 3D Clone
WebPlay 8 Stockfish bots on a 3D wooden board, then see every Brilliant and Blunder in a Game Review
- View template

Pokémon GO Clone
iOSPokémon GO's real catch: flick a Poké Ball, Excellent!, three shakes, Gotcha!, then spin PokéStops and evolve
- View template

Candy Crush Clone
iOSCandy Crush with no lives and no ads: drag a Colour Bomb into a Striped Candy and the whole board clears.
- View template

Battlefleet
iOSBattleship for the foldable iPhone Duo, with a realistic 3D ocean, jet strikes and a two-panel board.
