Tetris rebuild deck
FIDDLY
SRS wall kicks are a published lookup table, and every attempt to derive rotation instead costs you an evening wondering why an S-piece will not tuck.
You will get it, but one specific system will fight you.
Everyone thinks this is a two-hour build and then discovers SRS wall kicks. Tell the agent to implement the published kick tables verbatim rather than deriving rotation, or you will spend an evening wondering why an S-piece will not tuck. The gameplay is a solved problem; the tuning constants are the whole product.
- Difficulty
- FIDDLY · 2 of 5
- First playable
- An evening
- The original
- 2 team-years
- Released
- 1984 · Classic
- Genre
- Puzzle
Build a modern falling-block puzzle game to the Tetris Guideline spec. Single HTML file, Canvas 2D, 60fps. Requirements: - 10x20 visible playfield with a 20-row buffer above. Seven pieces using the standard rotation system (SRS) including wall kicks — implement the kick tables, do not improvise them. - 7-bag randomiser: shuffle all seven pieces, deal them, repeat. Never pure random. - Hold piece (once per drop), next-piece queue of five, ghost piece showing the landing position. - Lock delay of 500ms with a maximum of 15 move/rotate resets, so a piece resting on the stack can still be adjusted but not stalled forever. - Scoring: single 100, double 300, triple 500, tetris 800, all multiplied by level. T-spin detection with the 3-corner rule, scoring 400/800/1200. Back-to-back bonus of 1.5x. - Gravity table by level, soft drop at 20x with 1 point per cell, hard drop with 2 points per cell. - DAS 133ms / ARR 10ms, both configurable in a settings panel — feel is everything here. - Line clear: 300ms flash-and-collapse, screen shake on a tetris, particles on a T-spin. Definition of done: I can perform a T-spin double and the game scores it correctly.
- The right to call it Tetris — the name and the brand are aggressively enforced
- Official multiplayer, rankings, and the modern guideline tuning players have muscle memory for
- The music, which you also cannot use
Kick tables: try offsets before refusing a move
The gap between an input that feels precise and one that feels stiff is usually a short ordered list of nearby positions you try before telling the player no. Write kick tables once and you start seeing them everywhere — corner correction in a platformer, ledge grabs, snapping in an editor.
ScopeA weekend— build just this, not the game
Build a rotation-with-kicks test bed as a single self-contained HTML file, Canvas 2D, no build step. A grid holding a four-cell piece and a stack of fixed blocks you paint in with the mouse. Rotating tests the naive rotated position first; if it collides, walk an ordered table of candidate offsets for that specific from-state to to-state transition — one right, one left, up, down-and-across — and accept the first that fits. If none fits, refuse the rotation. Keep the offset table in a JSON block, one list per transition pair, editable at runtime so I can see bad tables produce bad feel. Then draw what happened: every offset tried outlined in grey, the accepted one in green, and a line like "kick 3 of 5" in an on-screen log. Definition of done: I paint an overhang, rotate underneath it, and watch the piece tuck into the gap on the fourth candidate offset with all four attempts visible.
Not a clone — Tetris 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. 24,360 ways to land.
Tape Flatland
Tetris, but 2D instead of 3D, set in a found-footage nightmare. Rendered in silhouette against one light.
Build a browser game called "Tape Flatland". The pitch in one line: a puzzle in the spirit of Tetris, but 2D instead of 3D, set in a found-footage nightmare. WHAT THIS IS Take the SHAPE of Tetris — 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 2D instead of 3D. Canvas 2D and sprites. The mechanics survive the dimension drop; the asset budget falls by an order of magnitude. 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 found-footage nightmare. Shaky single camera, diegetic light only, and evidence the characters should not be recording. 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.
- jakesgordon/javascript-tetris — readable canonical implementation
- Tetris Guideline mechanics reference (Hard Drop wiki)
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.
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.
Then try these
Questions
How hard is Tetris to rebuild with an AI agent?
Yes — every game is buildable at some scope. The question is how hard, and Tetris is FIDDLY (2 of 5). You will get it, but one specific system will fight you. SRS wall kicks are a published lookup table, and every attempt to derive rotation instead costs you an evening wondering why an S-piece will not tuck. Reckon on an evening to something you can actually play — not to something that matches the 2 team-years Alexey Pajitnov spent.
What makes Tetris hard to rebuild?
SRS wall kicks are a published lookup table, and every attempt to derive rotation instead costs you an evening wondering why an S-piece will not tuck. That is why it sits at FIDDLY rather than a tier either side of it. If you want the idea without the project, the transferable part is kick tables: try offsets before refusing a move — a weekend of work.
How long does it take to build a Tetris clone?
Wrong question, and it is worth saying why. Nobody rebuilds Tetris — the original took Alexey Pajitnov on the order of 2 team-years, released in 1984 on Classic. 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 Tetris?
The right to call it Tetris — the name and the brand are aggressively enforced. Official multiplayer, rankings, and the modern guideline tuning players have muscle memory for. The music, which you also cannot use. 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.
One email when new games go on the list. No other reason to email you, ever.