{ "_readme": [ "Super Kart racer roster. Each id MUST match an opponent id in data/opponents.json", "(portraits/videos/speech come from the shared opponent assets).", "Stats are 0..1 and feed the physics formulas in SuperKartLogic.js:", " topSpeed - straight-line speed ceiling", " accel - how fast the kart reaches that ceiling", " handling - steering rate (higher turns tighter, especially at speed)", " weight - who shoves whom in kart-vs-kart bumps; heavy karts barely move", " offroad - how well the kart keeps speed off the road (1.0 = barely slows)", " drift - grip while powersliding; high drift holds tighter, longer slides", "aiSkill is the racer's base driving skill 0..1 when computer controlled", "(scaled by the engine class aiSkillMult in superkart-rules.json).", "Add, remove, or retune racers freely - the racer select grid and race grid", "color is the racer accent used for minimap dots, HUD rows, and the procedural fallback kart sprite tint.", "adapt to the list. 9 racers fill the classic 3x3 select screen." ], "racers": [ { "id": "mario", "archetype": "All-Rounder", "stats": { "topSpeed": 0.5, "accel": 0.5, "handling": 0.55, "weight": 0.5, "offroad": 0.5, "drift": 0.5 }, "aiSkill": 0.6, "blurb": "Balanced in every stat. The kart you learn the game with.", "color": "#e04838" }, { "id": "kona", "archetype": "Featherweight", "stats": { "topSpeed": 0.35, "accel": 0.7, "handling": 0.95, "weight": 0.15, "offroad": 0.5, "drift": 0.55 }, "aiSkill": 0.55, "blurb": "Tiny, nimble, and turns on a dime - but everyone can shove him around.", "color": "#c87838" }, { "id": "fireball", "archetype": "Rocket", "stats": { "topSpeed": 0.5, "accel": 0.95, "handling": 0.45, "weight": 0.35, "offroad": 0.45, "drift": 0.4 }, "aiSkill": 0.55, "blurb": "Off the line before the light turns. Recovery from every mistake is instant.", "color": "#ff6a00" }, { "id": "smasher", "archetype": "Heavyweight", "stats": { "topSpeed": 0.9, "accel": 0.2, "handling": 0.35, "weight": 0.95, "offroad": 0.35, "drift": 0.3 }, "aiSkill": 0.6, "blurb": "Slow to spool up, unstoppable at speed. Bumping The Smasher is a mistake.", "color": "#b03cc8" }, { "id": "croc", "archetype": "Bruiser", "stats": { "topSpeed": 0.75, "accel": 0.35, "handling": 0.25, "weight": 0.85, "offroad": 0.45, "drift": 0.35 }, "aiSkill": 0.5, "blurb": "Fast, heavy, and sloppy in the corners. Party foul on wheels.", "color": "#38b048" }, { "id": "gerome", "archetype": "Speed Demon", "stats": { "topSpeed": 1.0, "accel": 0.45, "handling": 0.4, "weight": 0.55, "offroad": 0.3, "drift": 0.45 }, "aiSkill": 0.65, "blurb": "The fastest thing on the track - as long as the track is straight.", "color": "#2888e0" }, { "id": "blackwind", "archetype": "Drift Pirate", "stats": { "topSpeed": 0.55, "accel": 0.55, "handling": 0.6, "weight": 0.5, "offroad": 0.4, "drift": 0.95 }, "aiSkill": 0.6, "blurb": "Lives sideways. Powerslides hold like the kart is on rails.", "color": "#206878" }, { "id": "dv-8-2303", "archetype": "Precision Machine", "stats": { "topSpeed": 0.6, "accel": 0.5, "handling": 0.9, "weight": 0.6, "offroad": 0.35, "drift": 0.6 }, "aiSkill": 0.7, "blurb": "Racing line calculated. Apex acquired. Human error not detected.", "color": "#9aa4b0" }, { "id": "zanthor", "archetype": "Mystic Wildcard", "stats": { "topSpeed": 0.45, "accel": 0.5, "handling": 0.5, "weight": 0.45, "offroad": 0.95, "drift": 0.5 }, "aiSkill": 0.55, "blurb": "The grass, the sand, the swamp - all roads are roads to Zanthor.", "color": "#e8d048" } ] }