{ "_readme": [ "Drop-in artwork manifest for Super Kart. Entries with path:null render", "procedurally (tinted kart silhouettes, painted terrain) until art is", "supplied - set the path once the PNG exists and the game uses it with no", "code changes. Loaded lazily on game entry via src/data/assetManifest.js.", "", "racerSheets - one spritesheet per racer, 18 frames of 64x64 in a single row", " (1152x64 png). Frames 0..15 are the kart seen from 16 view angles:", " frame 0 = viewed square from BEHIND, rotating CLOCKWISE (seen from above)", " in 22.5-degree steps - frame 4 = kart's left side, frame 8 = head-on,", " frame 12 = right side. Frames 16/17 are optional player-view lean frames", " (16 = leaning left, 17 = leaning right); if the sheet is only 16 frames", " wide the game reuses frame 0 with a tilt instead.", " Transparent background, kart centered, wheels touching the frame bottom.", "", "themeSheets - one 8-frame sheet per location theme, 64x64 frames in a row", " (512x64 png): frame order matches the theme's decor list in", " data/superkart-rules.json (frame 0 = first decor sprite, etc.); trailing", " frames are spare. Drawn perspective-scaled beside the track.", "", "backdrops - one wide horizon strip per theme, 1024x300 png, tiles", " horizontally (left and right edges must match). Drawn above the horizon", " and parallax-scrolled as the camera rotates. The bottom edge color should", " blend toward the theme's fog color in superkart-rules.json.", "", "itemSheet - 48x48 frames in a single row, one frame per item in", " data/superkart-rules.json items order (bolt, seeker, oil, turbo,", " overdrive, emp, coins), then frame 7 = item box, frame 8 = coin." ], "racerSheets": { "mario": { "key": "superkart-kart-mario", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "kona": { "key": "superkart-kart-kona", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "fireball": { "key": "superkart-kart-fireball", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "smasher": { "key": "superkart-kart-smasher", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "croc": { "key": "superkart-kart-croc", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "gerome": { "key": "superkart-kart-gerome", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "blackwind": { "key": "superkart-kart-blackwind", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "dv-8-2303": { "key": "superkart-kart-dv-8-2303", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 }, "zanthor": { "key": "superkart-kart-zanthor", "path": null, "frameWidth": 64, "frameHeight": 64, "angles": 16 } }, "themeSheets": { "beach": { "key": "superkart-theme-beach", "path": null, "frameWidth": 64, "frameHeight": 64 }, "volcano": { "key": "superkart-theme-volcano", "path": null, "frameWidth": 64, "frameHeight": 64 }, "scrapyard": { "key": "superkart-theme-scrapyard", "path": null, "frameWidth": 64, "frameHeight": 64 }, "swamp": { "key": "superkart-theme-swamp", "path": null, "frameWidth": 64, "frameHeight": 64 }, "speedway": { "key": "superkart-theme-speedway", "path": null, "frameWidth": 64, "frameHeight": 64 }, "nightcity": { "key": "superkart-theme-nightcity", "path": null, "frameWidth": 64, "frameHeight": 64 } }, "backdrops": { "beach": { "key": "superkart-backdrop-beach", "path": null }, "volcano": { "key": "superkart-backdrop-volcano", "path": null }, "scrapyard": { "key": "superkart-backdrop-scrapyard", "path": null }, "swamp": { "key": "superkart-backdrop-swamp", "path": null }, "speedway": { "key": "superkart-backdrop-speedway", "path": null }, "nightcity": { "key": "superkart-backdrop-nightcity", "path": null } }, "itemSheet": { "key": "superkart-items", "path": null, "frameWidth": 48, "frameHeight": 48 } }