A memory game — sixteen cards, eight pairs, one board — written around art that does not exist yet. The theme is fascinating animals and the model picks all eight, with the obvious zoo eight banned by name, so the deck is the model's taste with nowhere to hide. Each animal carries a fact under 120 characters that shows when its pair is matched, which turns a small game into a small honesty probe. The floor-check challenge of the set: simple enough that a cheap model should finish it, and a model that cannot is telling you something.
The easy one, on purpose. Nearly everything here should work; the interest is in what a model does with the freedom, and in the four or five places where an apparently simple game has a decision hiding in it.
pnpm check-turn-two-cards settles the envelope and prints the eight facts. pnpm stage-turn-two-cards writes each game to disk on a numbered stub deck. Then play them, which takes about a minute each.
This is the graphic: eight animals per model, side by side. The zoo eight are banned by name, so what comes back is the model's second thought, and the checker prints which animals more than one model reached for. Expect the axolotl, the octopus, the tardigrade and the mantis shrimp to be popular; a model that gets to eight without any of those has taste.
Look at the eight as a set, the way you would a deck: is there variety of shape and color, or is it eight blue-green sea creatures that will be hard to tell apart on a card at thumbnail size? That is a real design failure in a memory game and it is invisible in a list of names — it appears the moment the art pass runs.
The checker measures their length and refuses to touch their truth. Eight facts times six models is around fifty claims about animals, written fast, and this is the cheapest hallucination probe in the whole set: the claims are short, checkable in one search, and about a subject where a confident wrong number ("it has eleven hearts") reads exactly like a right one.
You are an expert web developer and game designer. Your task is to build a memory card game (also known as "Concentration") as one self-contained HTML page.
The theme is fascinating animals. You will design the mechanics, UI, and write prompts for an external image generator to create the assets.
Follow these strict constraints carefully:
The Board: A 4×4 grid of 16 cards, scaling to fit the window with no scrollbars at any size. Do not use a single-column layout that requires scrolling.
The Play: Cards start face down. A player clicks to flip a card. At most two cards can be face up at once.
If they match, they stay face up.
If they do not match, they flip back over after a short, playable delay.
The State: Shuffle cards at the start of every game. The game is won when all 8 pairs are matched.
The HUD: The player must clearly see a move counter and a pairs remaining counter.
The Facts: When a pair is matched, display the animal's fact on the screen.
The Win: Show a clear victory message when the game is won.
Watch for the shape of the errors, not just the count. A fact that is true of a related species, a number inflated by an order of magnitude, and a piece of folklore stated as biology are three different failures and the third is the interesting one.
Every staged game runs on the stub deck first, and this is where the challenge's one real trap sits. A memory game whose face-up cards are blank cannot be played at all — not degraded, unplayable. The prompt says so and asks what shows instead. Open each game before running the art pass and see whether you can play it.
The other half of that: play one round on the stubs and watch the numbers. Two cards that the game calls a match must show the same number. If they do not, the sheet is being sliced wrong, and that is worth finding for free rather than after paying for animals.
The prompt fixes the board (4x4), the deck (8 pairs), the sheet (3x3, back on cell 8) and the controls (cards, plus one New game button). Everything else is open, and a small set of decisions shows up in every round:
This is the challenge to put a genuinely small model in. The rest of the coding set punishes them for being small, and a round that is only large models tells the audience nothing about the floor. Run it with the cheapest models on the shelf beside one flagship: the interesting question is not who wins, it is where the small ones actually break — and on a spec this plain, several of them will not.
Pairs with the-atomic-bandit in an edit, not in a recording session: same art pipeline, same fixed-geometry contact sheet, opposite ends of the difficulty range. One video could show both sheets going through nano-banana back to back.
The Controls: Clicking a card is the only gameplay interaction. You may include exactly one button: "New game". Do not add difficulty selectors, board-size settings, timers, or menus.
Emojis: Forbidden. Do not use emojis anywhere in the game, UI, or code.
You will not generate the art; you will write the JSON spec for an image model to generate it later.
The Sprite Sheet: The game relies on a single image file located at art/cards.png. The path art/cards.png must appear exactly once in your HTML. Slice it using CSS background positioning or canvas.
Grid Layout: The image is a 2048×2048, 3×3 contact sheet (9 equal cells, numbered 0 to 8, reading left-to-right, top-to-bottom).
Cells 0–7: The 8 animals.
Cell 8: The card back design.
All cells have a flat black background. Ensure this looks good on your card UI.
Card Faces: A face-up card must show its animal filling the whole card, at the card's full size. Give the front of a card the same geometry as its back — only the content differs. Artwork squeezed into a strip, or a face that collapses to the height of a label, is a broken card, and it is the easiest thing in this build to get wrong without noticing.
Fallback Art: The game must be playable before art/cards.png exists. If the image fails to load, face-up cards must show a clear, readable fallback (e.g., the animal's name or a styled shape). Blank faces are unacceptable.
Optional Decoration: You may request exactly one additional optional image (e.g., a table background). It must use the path art/<id>.png and the game must look finished without it.
.html file.localStorage, sessionStorage, Cookies, or indexedDB.#demo, initialize the game state with 7 pairs already matched and only 1 pair remaining. This must use the real game logic, not a fake animation.Your response must consist of exactly these four sections, using these exact headings:
Write one single sentence explaining the game's title and visual style.
Provide exactly one fenced html code block containing the complete, playable HTML page.
Provide exactly one fenced json code block defining the art. It must contain no prose and no comments inside the block. Use this exact structure:
{
"game": { "name": "YOUR GAME NAME" },
"sheet": {
"style": "One paragraph appended to all cell prompts: medium, palette, lighting, line quality. Make the 9 images look cohesive.",
"cells": [
{
"cell": 0,
"id": "animal_id",
"name": "Animal Name",
"role": "animal",
"prompt": "Visual description of the animal.",
"fact": "Fascinating fact here (max 120 chars)."
},
... Include cells 1 through 7 here following the same structure ...
{
"cell": 8,
"id": "back",
"name": "Card back",
"role": "back",
"prompt": "Visual description of the pattern on the back of every card."
}
]
},
"extras": [
{ "id": "table", "aspect": "16:9", "prompt": "Visual description of the background." }
]
}
(Rules for JSON: cells must have exactly 9 entries with values 0-8. Cells 0-7 must have "role": "animal" and a fact. Cell 8 must have "role": "back" and NO fact. extras is limited to max 1 item. aspect must be 16:9, 9:16, 1:1, 3:2, 2:3, 4:3, or 3:4).
Provide exactly four bullet points explaining your design choices:
art/cards.png fails to load.