# Prism Puddle (demo game) A tiny fictional game made only to show storebound's screenshot and video pipeline end to end. Drops fall into puddles; tap a puddle to switch its color so the next drop matches. Everything is drawn on a canvas (no image files), and the game has the switches a real game needs for store captures: `lang`, `seed`, `t` (freeze at a moment), `scene` and `auto=1` (hands-free play for video clips). The ids in `storebound.config.ts` are placeholders; nothing here talks to a store. From this folder (needs Bun, ffmpeg, and Playwright's Chromium or Google Chrome): ```sh bun serve.ts & # the game on http://127.0.0.1:8740 bun ../../cli/index.ts shots capture # raw frames: 4 languages x phone + tablet bun ../../cli/index.ts shots fonts # title / body fonts + Noto subsets for Japanese and Arabic bun ../../cli/index.ts shots render --variants # every store size, base + variant b (about 7 minutes) bun ../../cli/index.ts shots record # gameplay clips (autoplay) for the previews bun ../../cli/index.ts shots video # App Store preview + YouTube promo per language bun ../../cli/index.ts shots check --variants # store rules, exit 1 on errors bun ../../cli/index.ts shots gallery # store/renders/index.html, open it in a browser bun ../../cli/index.ts icons # every icon from store/icon (artwork drawn in bg.svg + fg.svg) ``` Everything it writes (`store/shots/frames`, `store/renders`, `store/video`, `store/icons`, `.storebound`) is gitignored. `bun ../../cli/index.ts scan` (offline rejection-risk scan) reports two findings, accepted on purpose in `scan.ignore` of the config: the `com.example` package name is the repo placeholder and is never uploaded (a real game picks its own), and there is no Play developer account type to set (a real game sets `play.accountType`). The game has no native project here, so the code checks (ATT, purpose strings, privacy manifest) have nothing to read.