destroyulator/game/assets/store
Monster Robot Party 8e61640c38 LANE10: SITE 7 — the real shop, imported from its own database
The level the whole game started as, and the only one that isn't authored.

robotmonster.party/store/ is assembled procedurally from Postgres (the wowplatter
virtual_* schema, served by recordgod), and this game's sites are already data — so
tools/import_store.py reads the live shop and emits assets/store/shop_floor.json:
the actual 6.66 x 9.51 m floor, 35 racks across 21 archetypes, 278 bins carrying
their real genre labels (HARD TRANCE, $12-$15 EURO/ITALO HOUSE), 21,159 records
of stock. Levels.record_store() loads it; 'store' joins ORDER as the seventh site.

The shop's schema IS the cascade. virtual_crate.rack_id already records which rack
holds which bin, so bins arrive frozen and supported_by their rack and none of the
structure is authored. To carry that, smashables gained two optional generic keys —
'id' and 'supported_by' — so any level can express support as data. Every existing
level is unaffected.

Two reconciliations, because a storefront is a renderer:
- Mesh sizes are a lie: 21 archetypes share a few stand-in GLBs, so each piece
  carries 'fit' (the archetype's real dims from the shop's table) and _glb_piece
  scales the visual to it and builds the collider from it. Also fixed racks being
  flattened to the floor — pos_y is a piece's BOTTOM, which is what sit_on means,
  so the ceiling beams, aircon and wall shelves now stay up where they belong.
- Nothing collides in a renderer: racks that sat inside each other for years get
  separated (weighted, so racks barely move and aisles keep their shape — 3 m of
  correction across 35), rack footprints inset 1.5 cm a side for the few genuinely
  wedged units, and the importer AUDITS ITS OWN OUTPUT with the same test
  probe_overlap runs. Bins are deliberately not separated from their rack: cargo
  inside a container is what the shop means, they spawn frozen, and the audit skips
  frozen bodies because a frozen body cannot be depenetrated across the room.

dev/probe_store.gd: 22 racks hold bins, 255 labels survived, and smashing the rack
carrying 22 bins releases exactly those 22 while the other 256 stay frozen.
All gates green: smoke clean, 7/7 sites 0.00 m/s, overlap CLEAN, LANE9 probes pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-04 00:49:49 +10:00
..
bag-roll.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
bag-roll.glb.import LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
cabinet-carcass.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
cabinet-carcass.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
cabinet-drawer.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
cabinet-drawer.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
cardboard-box_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
cardboard-box_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
cardboard-box.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
cardboard-box.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
cardboard-box.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
cardboard-box.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crate.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crate.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crate.glb Restructure into monorepo: game/ is the Godot lane 2026-07-14 15:33:13 +10:00
crate.glb.import Restructure into monorepo: game/ is the Godot lane 2026-07-14 15:33:13 +10:00
crt-monitor_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crt-monitor_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crt-monitor.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crt-monitor.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crt-monitor.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
crt-monitor.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
desk-phone.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
desk-phone.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
entity2.glb LANE7: there are two of them, and the room changes one thing every loop 2026-07-31 20:07:44 +10:00
entity2.glb.import LANE7: there are two of them, and the room changes one thing every loop 2026-07-31 20:07:44 +10:00
entity.glb LANE7: there are two of them, and the room changes one thing every loop 2026-07-31 20:07:44 +10:00
entity.glb.import LANE7: LEVEL 0 gets an entity, a tape, and a loop 2026-07-31 19:25:28 +10:00
file-folder.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
file-folder.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
filing-cabinet_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
filing-cabinet_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
filing-cabinet.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
filing-cabinet.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
filing-cabinet.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
filing-cabinet.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
guillotine.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
guillotine.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
juice-bottle.glb LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
juice-bottle.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
microwave.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
microwave.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
office-chair.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
office-chair.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
office-desk_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-desk_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-desk.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-desk.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-desk.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-desk.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-plant.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
office-plant.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
office-printer_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-printer_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-printer.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-printer.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-printer.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
office-printer.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
produce-apple.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
produce-apple.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-banana.glb LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-banana.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-cabbage.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
produce-cabbage.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-crate.glb LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-crate.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-melon.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
produce-melon.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-orange.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
produce-orange.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
produce-tomato.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
produce-tomato.glb.import LANE8: the greengrocer — soft stock, stacks that collapse, and litres 2026-08-01 09:38:35 +10:00
rack.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
rack.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
rack.glb Restructure into monorepo: game/ is the Godot lane 2026-07-14 15:33:13 +10:00
rack.glb.import Restructure into monorepo: game/ is the Godot lane 2026-07-14 15:33:13 +10:00
record.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
record.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
record.glb Restructure into monorepo: game/ is the Godot lane 2026-07-14 15:33:13 +10:00
record.glb.import Restructure into monorepo: game/ is the Godot lane 2026-07-14 15:33:13 +10:00
scale-head.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
scale-head.glb.import LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
scale-pan.glb LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
scale-pan.glb.import LANE8: scales that swing, bags that don't open, and fruit you can throw 2026-08-01 11:22:47 +10:00
server-rack.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
server-rack.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
shop_floor.json LANE10: SITE 7 — the real shop, imported from its own database 2026-08-04 00:49:49 +10:00
shredder.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
shredder.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
sofa.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
sofa.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
stapler.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
stapler.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
store-aircon.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-aircon.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-bin-long.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-bin-long.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-column-white.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-column-white.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-crate-blue.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-crate-blue.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-door.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-door.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-rack-long.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-rack-long.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-rack-wide.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-rack-wide.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-station.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-station.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-trolley.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-trolley.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-tub-black.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-tub-black.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-tub-white.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-tub-white.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-window.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
store-window.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
totem.glb LANE7: LEVEL 0 gets an entity, a tape, and a loop 2026-07-31 19:25:28 +10:00
totem.glb.import LANE7: LEVEL 0 gets an entity, a tape, and a loop 2026-07-31 19:25:28 +10:00
turntable_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
turntable_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
turntable.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
turntable.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
turntable.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
turntable.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
vending-machine.glb LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
vending-machine.glb.import LANE6: LEVEL 01 is an office — Dunder Mifflin floor plan, and a spawn guard 2026-07-31 17:13:23 +10:00
wastebin.glb LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
wastebin.glb.import LANE7: four workplaces, built from data 2026-07-31 17:58:41 +10:00
water-cooler_Image_0.png LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
water-cooler_Image_0.png.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
water-cooler.fractured.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
water-cooler.fractured.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
water-cooler.glb LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00
water-cooler.glb.import LANE4 (Godot): real fractured-chunk destruction + printer boss 2026-07-14 22:27:50 +10:00