Skip to content
📱 Mobile2014SirvoHARD

Threes! rebuild deck

HARD

The rules fit in a paragraph and the game is fourteen months of drag-feel iteration, which the team published afterwards as a 45,000-word email thread.

You will get the loop working. Then the real work starts.

The single-cell shift is what makes this a different game from its more famous imitator, and every agent that has read about the imitator will try to slide tiles to the wall. State it twice in the prompt and check it first. The bag matters just as much: pure random draws make runs feel arbitrary, and the deck is precisely why a good session feels earned rather than handed to you. Count the draws rather than eyeballing them, because a bag that reshuffles on the wrong condition still looks random for the first minute.

Difficulty
HARD · 3 of 5
First playable
An evening
The original
2 team-years
Released
2014 · Mobile
Genre
Number Puzzle
The one-shot build prompt
Build a sliding-number puzzle on a 4x4 grid as a single self-contained HTML file. No build step, no dependencies.

Requirements:
- Tile values are 1, 2, 3, 6, 12, 24 and upward. A 1 and a 2 merge into a 3. Two equal tiles of 3 or above merge into their double. Nothing else ever merges.
- Two rules that get botched constantly. First: a swipe shifts tiles exactly ONE cell in that direction, never all the way to the wall, and the swipe is only legal if at least one tile in some line can move or merge. Second: the incoming tile is drawn from a shuffled bag, not at random. Use a deck of twelve holding four each of 1, 2 and 3, reshuffled when empty. Once the board's highest tile reaches 48, occasionally substitute a bonus tile drawn from the values between 6 and maxTile/8.
- Show the next tile before the swipe as a colour hint only, never as a number.
- Drag feel carries this: tiles follow the finger up to 20% of a cell width, settle over 120ms ease-out, and snap back if the drag ends under a 25% threshold.
- Final score is exponential per tile, from a scoring.json table where a 3 is worth 3 and every doubling triples the value.
- Game over when no direction produces any change at all.

Definition of done: log 120 consecutive draws and count exactly 40 each of 1, 2 and 3, and swiping into a full immovable line does nothing whatsoever.
What you lose
  • Greg Wohlwend's tile faces and their small, put-upon personalities
  • Jimmy Hinson's soundtrack, which carries far more of the mood than it has any right to
  • Fourteen months of iteration, which the team published afterwards as a 45,000-word email thread
  • The card-stock tactility of the drag, tuned by people who did nothing else for a year
What to steal

A shuffled bag instead of pure random

Pure random is not the same thing as fair, and players feel the difference long before they can name it. A bag gives you bounded droughts and something to count, which is what turns a run from luck into a plan.

ScopeAn evening— build just this, not the game

Build a bag randomiser and its visualiser as a single self-contained HTML file, Canvas 2D, no build step.

Implement one draw source with three modes, switchable live: pure random, a shuffled bag, and a bag with board-aware substitution.

The bag holds a fixed multiset — say four each of three values — dealt in shuffled order and refilled only when empty, so a player counting draws can predict what is left. The substitution mode occasionally replaces a draw with a rarer high value sampled from a range derived from the current maximum on a mock board, so the source scales with progress.

The visualiser is the deliverable: draw 2000 samples per mode and chart, per value, the frequency, the longest run of repeats, and the longest drought between two appearances.

Definition of done: pure random shows droughts three times longer than the bag's worst, the bag's counts are exactly equal per cycle, and I can state the guaranteed maximum gap between two appearances of any value.
Make it different

Not a clone — Threes! re-themed and cut down to something you can finish. The angle is the important reel: it is what turns a project into a weekend. 5,880 ways to land.

Fallout Zone One Room

Threes!, but one level, done properly, set in a post-apocalyptic wasteland. Rendered in silhouette against one light.

Themea post-apocalyptic wasteland
Angleone level, done properly
Looksilhouette against one light
Build a browser game called "Fallout Zone One Room".

The pitch in one line: a number puzzle in the spirit of Threes!, but one level, done properly, set in a post-apocalyptic wasteland.

WHAT THIS IS
Take the SHAPE of Threes! — its core loop, and whatever makes that loop good — and rebuild it as your own game in a different world at a smaller scope. Use your own names, art and audio, which you want anyway: a reskin of somebody else's game is less interesting than a new one that works the same way.

THE ANGLE — this is the important constraint, honour it above everything else
One level, done properly. A single space, built to a finish quality you could not sustain across twenty. Every prop and every sightline is deliberate.
This is what makes the project finishable. If a decision would push the scope back towards the original's, take the smaller option every time.

THE THEME
A post-apocalyptic wasteland. Scarcity in every system. Everything the player uses was built for a different purpose by people who are gone.
The theme is not a coat of paint. Let it change what the mechanics mean — a reload, a health pack and a locked door should all be things that make sense in this world and nowhere else.

LOOK
Silhouette against one light. Everything renders pure black against a lit background, with depth from four parallax layers of increasing blur, grain and a heavy vignette.

REQUIREMENTS
- Runs in a browser with no build step. Canvas 2D unless the angle genuinely requires 3D, in which case three.js.
- Fixed-timestep update loop with interpolated rendering, so it behaves the same at 60Hz and 144Hz.
- Every tuning constant in one CONFIG object at the top, exposed as live sliders in a debug panel. You will find the feel by dragging those, not by prompting.
- All content — levels, entities, balance numbers — in JSON or plain data files, never inline in the logic.
- Audio generated with the Web Audio API rather than asset files.
- Respect prefers-reduced-motion: keep the fades, drop the shake and the parallax.

BUILD ORDER
1. The core loop with placeholder rectangles, at the reduced scope the angle demands. No theme, no art, no audio. Make it fun as rectangles first.
2. The angle's consequences. Cutting to bots, or to turn-based, or to one level changes the design rather than just shrinking it — find out how and rewrite step 1.
3. The theme, as content and data.
4. The look, applied last as a rendering layer over a game that already works.

Start by writing a one-page plan: the core loop, what the angle removes and what that frees you to do properly, and what you are deliberately leaving out. Wait for me to approve it before writing code.
Prior art — read before you build

Half the time one of these already does what you wanted, and the other half it saves you a week of solving a problem someone documented in 1997.

Did you build it?
0Share on X

One count per game. No account — it is tied to a salted hash of your IP, which is not stored in a form anyone can reverse. Every build adds 2 team-years to the counter on the homepage.

Questions

How hard is Threes! to rebuild with an AI agent?

Yes — every game is buildable at some scope. The question is how hard, and Threes! is HARD (3 of 5). You will get the loop working. Then the real work starts. The rules fit in a paragraph and the game is fourteen months of drag-feel iteration, which the team published afterwards as a 45,000-word email thread. Reckon on an evening to something you can actually play — not to something that matches the 2 team-years Sirvo spent.

What makes Threes! hard to rebuild?

The rules fit in a paragraph and the game is fourteen months of drag-feel iteration, which the team published afterwards as a 45,000-word email thread. That is why it sits at HARD rather than a tier either side of it. If you want the idea without the project, the transferable part is a shuffled bag instead of pure random — an evening of work.

How long does it take to build a Threes! clone?

Wrong question, and it is worth saying why. Nobody rebuilds Threes! — the original took Sirvo on the order of 2 team-years, released in 2014 on Mobile. What you can do is reach something playable and genuinely yours in about an evening, and then keep going for as long as it stays interesting. Any figure that claims otherwise is measuring a prototype and calling it a game.

What do I lose by building my own Threes!?

Greg Wohlwend's tile faces and their small, put-upon personalities. Jimmy Hinson's soundtrack, which carries far more of the mood than it has any right to. Fourteen months of iteration, which the team published afterwards as a 45,000-word email thread. Those are the parts a prompt will not hand you.

Which AI coding agent should I use to build it?

Any of Claude Code, Codex or Cursor will handle this prompt. Paste it as your first message, let the agent scaffold the project, then iterate on feel — the second, third and tenth prompts are where a game actually gets good. Work in an empty folder or a fresh git branch so you can throw it away cheaply.

Get the next game

One email when new games go on the list. No other reason to email you, ever.