- assets/art/sleeves_{a,b}.jpg: two 3x3 sheets of ORIGINAL fictional album
covers (18 total — dub, techno, metal, jazz, punk, synthwave, hip-hop,
psych, ambient, northern soul, krautrock, disco, white-label, bossa,
UKG, country, noise) generated with Gemini gemini-3-pro-image. No real
artists/albums — copyright-clean destructible content.
- assets/art/keyart.jpg: DESTROYULATOR title key art ("CLOCK OUT. SMASH
EVERYTHING.") for a future title screen.
- Main.gd _skin_record(): records duplicate their M_Sleeve_Front/Back
materials and window one random atlas tile via uv1_scale/uv1_offset —
one texture in VRAM serves nine covers, every record looks different.
- Verified headless: boots clean, "[art] records skinned: 15" (all of
them). The two dummy-renderer "material is null" prints are headless-
only (override materials have no RID in the dummy backend). Eyeball a
sleeve in the editor — if the art renders rotated, flip uv1 here.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- game/assets/store/{rack,crate,record}.glb from the 3D-STORE library
- _glb_piece(): instances a GLB as a Smashable's visual, auto-fits a box
collider to the mesh AABB, and drops it flush to the floor (no hardcoded dims)
- _build_rack now assembles two smashable racks + crates of records on the floor
- cascade preserved: smashing a crate spills the records stacked on it
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>