6.3 KiB
RECORD STORE GUY — production bible (v0 draft, pending John's art review)
The whole consistency strategy: nothing is ever prompted freestyle. Every image (FLUX) and every clip (Flow/Veo) is assembled from the verbatim blocks below plus ONE shot-specific action sentence and ONE camera line. Blocks are copy-pasted character-for-character. Edit a block → bump its version and regenerate the ingredient stills before generating any more clips with it.
STYLE BLOCK v1 (verbatim in every prompt, FLUX and Flow)
1980s hand-drawn cel animation, theatrical animated feature quality, thick confident ink outlines, rich painterly gouache backgrounds, dramatic colored rim lighting, saturated jewel-tone palette with deep shadows, subtle film grain, 2D animation cel look, no photorealism, no 3D render, no CGI.
DECIDED: cel animation is canonical for the build (John, 2026-07-19 — in the
spirit of Dragon's Lair/Space Ace). The look is now a SWAPPABLE layer: blocks live
in production/prompts/ (blocks.json = characters/sets, looks/*.json = styles:
cel80s ✦canonical, scannerdarkly rotoscope, fmv90s, heavymetal). Compile any shot
in any look with tools/promptc.py shots/<shot>.json [--look NAME | --all];
--flux hero --look NAME emits the matching ingredient-still prompt (each look
needs its OWN hero ingredient still — ingredients are style-baked). Style test
plan: 1 busy shot (t2_s3_sharkrun) × 4 looks ≈ 80 credits, judge, then commit.
Alt-look re-releases later = re-run the same shot files with a different --look.
HERO BLOCK v1 — "Dez" (placeholder design, John approves at concept review)
Dez, a lanky 20-something record store clerk with a tall messy black quiff, olive skin, thick eyebrows, wearing an open red flannel shirt over a faded black band t-shirt, rolled dark jeans, scuffed white hi-top sneakers, oversized silver headphones worn around the neck, expressive rubber-limbed animation acting.
Notes: silhouette-first design (quiff + flannel + neck headphones reads at any size/angle — that's what survives gen drift). Keep clothing colors primary and few.
VILLAIN candidates (pick one with John, then write VILLAIN BLOCK v1)
- The Dead Wax — an entity living in run-out grooves; black liquid vinyl that drips out of records and takes shapes. Great for varied deaths, easy consistency (it's a black glossy mass — gen drift can't hurt it). (recommended)
- Mildred — possessed store cat, eyes like spinning 45 adapters.
- The Audiophile — tyrannical ghost of the store's founder, cable-tentacles, tube-amp glow chest.
SET BLOCKS v1
SET-A store floor: > inside a cluttered independent record store at night, rows
of wooden crates packed with vinyl records, walls covered in gig posters and album sleeves, a buzzing neon sign glowing red and cyan, dusty air, single flickering fluorescent tube, checkerboard floor.
SET-B backroom: > the record store stockroom, floor-to-ceiling industrial
shelving stacked with record boxes, a single hanging bulb, a service hatch, cobwebs, teetering towers of 7-inch singles.
SET-C listening booth: > a vintage wood-paneled listening booth with a glowing
turntable console, padded walls, a porthole window, warm amber light.
(3 sets is enough for a full gauntlet — Dragon's Lair reused rooms shamelessly. Add SET-D "the groove" (surreal inside-the-record void, black glossy landscape, concentric ridges to the horizon) if we pick villain #1.)
PROMPT GRAMMAR
FLUX still: [STYLE] [HERO or VILLAIN] [SET] [pose/expression sentence] [framing line]
Flow clip: [STYLE] [HERO] [VILLAIN if present] [SET] [ACTION: one sentence, one verb chain, ≤25 words] [CAMERA: one line, e.g. "static wide shot" / "slow push-in"]
Rules:
- ONE action per clip. Veo garbles compound choreography. A scene needing two beats = two clips frame-chained.
- Name the character every time ("Dez ducks…" never "he ducks…").
- Camera: default static or slow push — wild moves amplify drift.
- Deaths end on a held comedic tableau (readable freeze for DEATH_HOLD).
- Negative/avoid line on every gen: "no text, no captions, no watermark, no extra people, no photorealism."
FLOW WORKFLOW (Phase 3+; John drives the browser/login, never Claude with credentials)
- Ingredients: upload approved FLUX
hero_face+hero_sheet(+ villain still). Every clip gen uses ingredients-to-video referencing them. - Veo Fast (~20 cr) for all takes; quality (~100 cr) reserved for intro/win/hero deaths.
- Within-scene continuity: Flow "extend" / last-frame→first-frame chaining. Between scenes: hard cuts (hide drift; it's the Dragon's Lair idiom anyway).
- 16:9, and trim in post — never re-gen to fix length (postprocess.sh trims free).
- Log EVERY gen in production/SHOTLOG.csv before the next gen:
date,scene_id,take,mode,credits,verdict(keep/reject),drift_notes.
CONCEPT-ART PROMPTS (Phase 2, MODELBEAST flux_local, free — iterate hard)
Compose per grammar above. Shot list + specific final sentences:
hero_sheet: "character model sheet, full body turnaround, front view and side view, neutral standing pose, plain warm gray background" (omit SET)hero_face: "close-up head and shoulders portrait, three-quarter view, confident smirk, plain warm gray background" (omit SET — this is the prime Flow ingredient)villain: per chosen candidate + "emerging menacingly, full figure, dramatic low angle"store_wide: STYLE + SET-A + "wide establishing shot, empty of people, moody" (omit HERO)store_backroom: STYLE + SET-B same treatmentstyle_frame: full grammar, SET-A, "Dez frozen mid-leap over a toppling crate of records as black vinyl tendrils snatch at his ankles, dramatic wide shot" — the money shotdeath_concept: SET-A, "Dez flattened under an avalanche of record crates, only sneakers and one hand visible giving a weak thumbs-up, comedic tableau"title_card: "vintage 1983 arcade cabinet marquee art with the title RECORD STORE GUY in chrome airbrushed lettering over a black vinyl record dripping like liquid" (text WILL come out mangled — it's concept only; real logo gets drawn/typeset later) Run seeds 1–4 per shot (-p seed=N), pick best, file asbible/concept/<shot>_v1_s<seed>.png. John reviews before anything touches Flow.