not-tonight/public/props/manifest.json
m3ultra 7225eed349 Forty-eight sprites: every prop in every room is real art now
37 generated props -> 86. Every one of the 76 prop kinds placed across the four
venues has a sprite; nothing renders as a placeholder.

tools/gen/ is the pipeline: assets.py is the manifest (one entry per sprite —
prompt, ship size, rake, route), run_batch.py walks it, resumable, --workers N.
Cloudflare Workers AI first for its 10k free daily neurons, falling back to
MODELBEAST flux_local automatically. Today's allocation was already spent when
the run started — confirmed from Cloudflare's own error body rather than assumed
— so this batch is entirely farm-rendered.

The mesh tier is the part worth keeping: TRELLIS's defaults (1024_cascade + a
2048px metal PBR bake) cost 5-12 minutes each on a queue that runs one gpu job
at a time, which is four hours for a tileset. mb.FAST_MESH (512 + vertex baker)
lands in ~90s, and A/B'd at ship size the difference does not survive the
downscale to 32px.

Also adds the door's per-venue street plates, keyed on the venue id exactly —
'theRoyal', not a case fold, because props_import writes ':' as '_' and a
lowercased key looks for a plate nobody made.

Gate: lint clean, build clean, 821 tests passing.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 21:14:33 +10:00

91 lines
1.4 KiB
JSON

{
"props": [
"arcade",
"ashUrn",
"ashtray",
"bainMarie",
"balustrade",
"banquette",
"barFridge",
"barShelf",
"beerUmbrella",
"bistroTable",
"boothLamp",
"boothTable",
"brokenBasin",
"buttBin",
"cableSnake",
"canStack",
"carpet",
"cdj",
"champBucket",
"cloak",
"cocktailBar",
"crate",
"cubicleDoor",
"cueRack",
"dartboard",
"deck",
"discoball",
"dishwasher",
"djPlinth",
"glassRack",
"glassStack",
"graffiti",
"handDryer",
"highTable",
"iceWell",
"jukebox",
"keg",
"liftDoor",
"loungeChair",
"marbleSink",
"mirror",
"mixer",
"monitor",
"mopBucket",
"oldCouch",
"pallet",
"patioHeater",
"picnicTable",
"pillar",
"plant",
"planter",
"plywoodBar",
"pokie",
"poolTable",
"poster1",
"poster2",
"poster3",
"raffleDrum",
"rollerDoor",
"ropePost",
"ruleBoard",
"sinkRow",
"skylineCard",
"smokeMachine",
"speaker",
"stackF1",
"staffBartender",
"staffDj",
"staffGlassie",
"staffSecurity",
"stampPodium",
"street_backdrop",
"street_elevate",
"street_room",
"street_theRoyal",
"strobe",
"subBass",
"tabBoard",
"taps",
"till",
"trough",
"truss",
"tvSport",
"urinal",
"wetFloor",
"wheelieBin"
]
}