toastsim/scripts/gen-art-batch.sh
type-two 29f6b25c5b THE AIR FRYER: day 23 — air is the ingredient
John's spec from the atlas, honored verbatim: the basket is a small 2D
tray and ARRANGEMENT is the skill. Six wings arrive DUMPED in a pile;
every piece wants a clear gap to breathe (Clark–Evans inverted — the
same spacing statistics that reward an even topping spread here reward
margins). Smothered wings brown slow and keep a PALE face the judge can
see; steam is a LOCAL sin — a corner pile in an empty tray still steams
(the first cut used global fill fraction, which six wings could never
trip; the adversarial pass caught the dead mechanic and the smother
statistic replaced it). The drawer pauses the cook and bleeds the heat —
hovering costs. The SHAKE is the egg-crack grammar: hold F, release; a
sane charge turns the pale faces to the wind, a full-send puts five
wings on his floor and the corner eye goes horrified.

New station, full rails: sim/airfryer.ts (pure, seeded), the top-down
scene with the sliding basket (snap-out on reset — a stale docked tray
was eating the demo's opening drags), judgeAirfryer (THE CRISP golden
band / THE TURN pale faces / THE AIR steam / THE COUNT floor wings),
day 23 on the card with the cursed recipe card, a procedural endless
arm, fan-whir foley that dies when the drawer opens, ghost demo slot 23,
and the wing man's portrait (high-five not coming).

Verified: honest lattice play 9.5 twice back-to-back; the lazy pile
3.6 ('a steamer wearing a fryer badge', raw, never shaken); full-charge
shake loses 5 of 6 with the horrified eye.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-21 03:17:49 +10:00

59 lines
5.6 KiB
Bash
Executable File

#!/bin/bash
# gen-art-batch.sh — the full 2D art pass on the Cloudflare FLUX lane.
# Regulars' ticket portraits, THE MOTHER's jar states, dish heroes.
# Idempotent: skips anything already in public/assets/img.
set -uo pipefail
cd "$(dirname "$0")/.."
S="${SCRATCH:-/tmp/toastsim-art}"; mkdir -p "$S"
STYLE="claymation stop-motion figurine, plain light grey background, soft studio lighting, chunky stylized game asset, waist-up portrait"
JSTYLE="claymation stop-motion style, plain light grey background, soft studio lighting, chunky stylized game asset"
gen() { # gen <outname> <seed> <prompt>
local name="$1" seed="$2" prompt="$3"
[ -f "public/assets/img/$name.png" ] && { echo "= $name exists"; return; }
./scripts/cf-flux.py "$S/$name.raw" "$prompt" 8 "$seed" >/dev/null \
&& sips -s format png -Z 768 "$S/$name.raw" --out "public/assets/img/$name.png" >/dev/null 2>&1 \
&& echo "+ $name" || echo "! $name FAILED"
}
# The regulars — one fixed seed each so reruns keep the same person.
gen who_deidre 101 "$STYLE, elderly woman with lavender-grey perm, floral cardigan, large round glasses on a chain, clutching a small handbag, expectant pursed smile"
gen who_ray 102 "$STYLE, middle-aged working man in a flat cap and worn brown work jacket, stubble, mug of tea in hand, easy-going squint"
gen who_a_child 103 "$STYLE, small child on tiptoes at a counter, oversized striped jumper, gap-toothed grin, holding out a fistful of coins"
gen who_a_man_in_a_hurry 104 "$STYLE, businessman with loosened tie and rumpled suit, briefcase under one arm, checking his wristwatch, harried expression"
gen who_a_regular 105 "$STYLE, comfortable older man in a knitted vest with a folded newspaper under his arm, content half-smile, coffee mug"
gen who_someone_new 106 "$STYLE, young woman with a short bob and denim jacket, looking around uncertainly, holding a menu, hopeful nervous smile"
gen who_the_bloke_from_two_doors_down 107 "$STYLE, unshaven man in a tartan dressing gown over day clothes, slippers, holding his own mug from home, sheepish grin"
gen who_the_chef_on_her_day_off 108 "$STYLE, woman with hair in a tight bun, chef whites jacket open over a band t-shirt, arms crossed, appraising professional stare"
gen who_the_delivery_at_6am 109 "$STYLE, courier in a hi-vis vest and beanie mid-yawn, cardboard box under one arm, heavy eyelids"
gen who_the_lunch_rush 110 "$STYLE, three impatient office workers crowded shoulder to shoulder, all checking phones and watches, tight group"
gen who_the_man_at_table_nine 111 "$STYLE, mysterious lone man in a long grey overcoat, fedora resting on the table edge, steepled fingers, unreadable face"
gen who_the_pavlova_order 112 "$STYLE, grand formidable elderly woman in pearls and a silk scarf, chin high, gloved hands folded, expecting perfection"
gen who_the_benedict_table 113 "$STYLE, refined woman in a cream blazer with gold earrings, holding a menu closed, patient knowing smile"
# THE MOTHER — three states of one jar.
gen jar_bubbling 201 "$JSTYLE, single glass mason jar of sourdough starter, cloth cap tied with string, contents risen and bubbly, lively froth over the rim, warm and healthy"
gen jar_sulking 202 "$JSTYLE, single glass mason jar of sourdough starter, cloth cap tied with string, contents flat and sunken with a thin grey liquid layer on top, gloomy"
gen jar_dead 203 "$JSTYLE, single glass mason jar of long-dead sourdough starter, cloth cap askew, contents collapsed dark and crusted, a small wilted flag stuck in it, funereal"
# Dish heroes — the plate on the scorecard's order line.
gen hero_grill 301 "$JSTYLE, plate of chargrilled mushroom skewers with proper dark grill marks, single plate centered"
gen hero_pan 302 "$JSTYLE, cast iron pan with golden butter-basted mushrooms glistening, single pan centered"
gen hero_steak 303 "$JSTYLE, sliced rib eye steak on a wooden board, rosy pink centre, resting juices, single board centered"
gen hero_eggs 304 "$JSTYLE, glass bowl of whipped glossy egg whites beside three brown eggshells, single bowl centered"
gen hero_poach 305 "$JSTYLE, single perfect poached egg on a slotted spoon, white silky and intact, droplet falling"
gen hero_benedict 306 "$JSTYLE, eggs benedict on a toasted muffin, hollandaise dripping down, single plate centered"
# Station backdrops — blurred walls so every scene has a horizon, not fog.
BSTYLE="soft-focus heavily blurred background, muted warm dark tones, no sharp foreground objects, cozy game environment backdrop art, wide shot"
gen bg_grill 401 "$BSTYLE, backyard at dusk seen past a grill, wooden fence, string lights, drifting smoke"
gen bg_stove 402 "$BSTYLE, dark tiled kitchen splashback with hanging copper utensils and a warm lamp"
gen bg_pot 403 "$BSTYLE, steamy stove wall with a shelf of stockpots and rising steam wisps"
gen bg_butcher 404 "$BSTYLE, white tiled butcher shop wall with hanging tools and a wooden rail"
gen bg_pantry 405 "$BSTYLE, warm pantry shelves with egg cartons, flour sacks and preserving jars"
gen bg_coldroom 406 "$BSTYLE, stainless steel commercial kitchen cold room, soft blue-grey light"
echo done
gen hero_fryer 307 "$JSTYLE, air fryer basket full of golden crispy chicken wings with space between them, seen from above, single basket centered"
gen who_the_wing_man 114 "$STYLE, cheerful heavyset man in a sports jersey and backwards cap, licking sauce off one thumb, other hand raised for a high-five that is not coming"