oneshotprompt_game.md
You are a one-person game studio: producer, game designer, artist, sound designer, engineer, and growth lead. You have exactly ONE turn. I will not answer questions, review drafts, or give a second prompt. When you stop, whatever exists is what ships. MISSION Design, build, ship, and hand off an original browser casual game that a 7-year-old and a 70-year-old can both pick up in 30 seconds and that a busy adult would voluntarily play again tomorrow. HARD CONSTRAINTS (violating any of these = failed run) 1. Single self-contained `index.html`. All CSS, JS, art, and sound inside that one file. No external URLs, CDNs, fonts, image files, or audio files. Art is drawn with Canvas/SVG/CSS; sound is synthesized with WebAudio. Must work offline from `file://`. 2. Runs at 60 fps on a 4-year-old phone and on a laptop. Portrait phone is the primary layout; desktop must also look intentional, not stretched. 3. Touch, mouse, and keyboard all work. No instructions screen longer than one sentence — the first 10 seconds of play must teach the game. 4. Zero console errors or warnings. No TODOs, placeholders, stubs, or "coming soon" text anywhere the player can see. 5. Bilingual UI: auto-detect zh / en from the browser, with a visible toggle. Copy must read like a native wrote it in both languages. 6. All-ages content. No violence, no gambling mechanics, no dark patterns, no loss-of-progress punishment. WHAT IS OPEN (this is where you earn your grade) - The concept is yours. Do NOT ship a clone of 2048, Flappy Bird, Snake, Tetris, Wordle, Match-3, or any other famous game. Combine known mechanics into a twist that has a name and a one-line pitch a kid could repeat to a friend. - The game must have: a clear core loop (one input, one satisfying feedback), a difficulty curve that ramps within a 2–4 minute session, and at least one "aha" moment or surprise that appears after the first minute. - It must have "juice": particles, easing, screen shake or squash-and-stretch, a sound for every meaningful action, and a satisfying end-of-round moment. - Aim for the quality bar of a top-100 App Store casual game, not a coding demo. Decide the palette, typography, and tone deliberately and keep them consistent. RETENTION & MONETIZATION HOOKS (free game today, business tomorrow) Ship these free-tier hooks working now: - localStorage persistence: best score, total rounds, day streak, unlocked cosmetics. - A Daily Challenge mode: same seed for every player on the same calendar date, separate best score. - A shareable result: one tap copies a text card (score, streak, emoji grid or similar) and, where the Web Share API exists, opens the native share sheet. - At least 3 cosmetic themes/skins: 1 default, 2 unlocked by play milestones. Lay the rails for a paid tier WITHOUT implementing payments: - A single `FEATURES` config object with boolean flags (e.g. `adFree`, `premiumThemes`, `extraLives`, `stats`) and one `hasEntitlement(key)` function; premium UI is visibly gated through it and currently shows a tasteful "coming soon" only INSIDE a settings/shop panel, never in the play flow. - An `analytics.track(event, props)` no-op stub called at: session start, round start, round end, share, theme unlock, daily challenge play, and settings open. Event names must be consistent snake_case. - A `<!-- MONETIZATION ROADMAP -->` comment block at the top of the file: 3 phases, each with the trigger metric to advance, what gets charged for, and expected price point. Be specific, not generic. DELIVERABLES, IN THIS ORDER 1. Design brief (max 250 words, in your reply, before any code): game name, one-line pitch, target session length, core loop, the twist, why it fits ages 7–70, and the 3 decisions you made that a lesser designer would get wrong. 2. `index.html` — the complete game. 3. Deploy it. If you have shell or deployment tools, put it live (GitHub Pages, Cloudflare Pages, Vercel, Netlify — your choice) and give me the public URL. If you truly cannot deploy, say so in one sentence and provide the file for download; do not pretend. 4. Handoff notes (max 200 words): how to run it, what you verified, known limitations you are honest about, and the first thing you would build in v1.1. ACCEPTANCE — RUN THIS YOURSELF BEFORE YOU STOP Do not deliver until you have actually checked, not assumed, each of these. If you have a browser or headless tool, use it; if not, trace through the code line by line. [ ] Opens from file:// with zero console output. [ ] First interaction works within 1 second of load on both touch and keyboard. [ ] Round ends cleanly, shows result, restarts in one tap. [ ] Refresh preserves best score, streak, unlocked themes, language. [ ] Daily Challenge produces identical levels for the same date. [ ] Share copies a readable text card. [ ] Resizing the window or rotating the phone does not break layout. [ ] Switching language updates every visible string. [ ] No text overflows its container in either language at 320px width. RULES OF ENGAGEMENT - Make every decision yourself and log the important ones in a short "Decisions" list inside the design brief. Never ask me anything. - Do not stop early, do not summarize what you "would" do, do not ship a partial game. If you notice a bug in your own output, fix it before you finish. - Prefer fewer features that are finished over more features that are half-done. Cutting scope is allowed; leaving scope broken is not. Begin with the design brief.