144 lines
6.4 KiB
JSON
144 lines
6.4 KiB
JSON
{
|
|
"_readme": [
|
|
"Super Kart tuning. Everything the sim reads lives here so the feel can be",
|
|
"adjusted without code changes. Distances are world units (tracks live in a",
|
|
"4096x4096 world), speeds are units/second, times are milliseconds.",
|
|
"After editing, run `node tools/verifySuperKart.js` to re-check invariants."
|
|
],
|
|
"engineClasses": [
|
|
{ "id": "cruiser", "label": "CRUISER CLASS", "desc": "Relaxed speeds, forgiving rivals.", "speedMult": 0.8, "aiSkillMult": 0.75, "rubberBandMult": 1.75 },
|
|
{ "id": "racer", "label": "RACER CLASS", "desc": "The intended Super Kart experience.", "speedMult": 1.0, "aiSkillMult": 1.0, "rubberBandMult": 1.0 },
|
|
{ "id": "turbo", "label": "TURBO CLASS", "desc": "Everything faster, rivals ruthless.", "speedMult": 1.15, "aiSkillMult": 1.25, "rubberBandMult": 0.25 }
|
|
],
|
|
"physics": {
|
|
"kartRadius": 14,
|
|
"baseTopSpeed": 560,
|
|
"topSpeedSpread": 160,
|
|
"baseAccel": 320,
|
|
"accelSpread": 480,
|
|
"brakeDecel": 760,
|
|
"coastDrag": 1.1,
|
|
"reverseTopSpeed": 170,
|
|
"turnRateBase": 2.3,
|
|
"turnRateSpread": 1.3,
|
|
"speedTurnPenalty": 0.55,
|
|
"driftTurnMult": 1.6,
|
|
"driftSlipRate": 240,
|
|
"driftGripSpread": 170,
|
|
"miniTurboMinMs": 500,
|
|
"miniTurboMaxMs": 1800,
|
|
"miniTurboBoostMs": 650,
|
|
"miniTurboBoostMultMin": 1.1,
|
|
"miniTurboBoostMultMax": 1.4,
|
|
"slipDecay": 3.2,
|
|
"hopMs": 260,
|
|
"hopCooldownMs": 160,
|
|
"offroadMultMin": 0.5,
|
|
"offroadMultMax": 0.92,
|
|
"deepMult": 0.25,
|
|
"boostPadMult": 1.4,
|
|
"boostPadMs": 900,
|
|
"spinMs": 1100,
|
|
"spinSpeedMult": 0.35,
|
|
"squashMs": 2600,
|
|
"squashSpeedMult": 0.5,
|
|
"invulnMs": 1600,
|
|
"coinTopSpeedBonus": 0.004,
|
|
"maxCoins": 10,
|
|
"coinsLostOnHit": 2,
|
|
"coinPickupRadius": 22,
|
|
"wallBumpSpeedLoss": 0.45,
|
|
"bumpImpulse": 190,
|
|
"respawnMs": 1600,
|
|
"offroadRescueMs": 6000,
|
|
"checkpointMissSkip": 2,
|
|
"checkpointMissMs": 2500,
|
|
"gridSpacing": 46,
|
|
"itemBoxRespawnMs": 2200,
|
|
"itemBoxRadius": 20,
|
|
"rouletteMs": 1500,
|
|
"rubberBandGain": 0.08,
|
|
"rubberBandRange": 1600,
|
|
"aiLookaheadMin": 4,
|
|
"aiLookaheadMax": 14,
|
|
"aiSteerGain": 3.4,
|
|
"aiBrakeCurvature": 1.1,
|
|
"aiStuckMs": 1500,
|
|
"aiReverseMs": 800
|
|
},
|
|
"items": [
|
|
{ "id": "bolt", "name": "Bolt", "type": "projectile", "desc": "Straight shot, bounces off walls three times.",
|
|
"params": { "speed": 900, "bounces": 3, "radius": 10, "lifeMs": 6000, "homing": false } },
|
|
{ "id": "seeker", "name": "Seeker", "type": "projectile", "desc": "Locks onto the next kart ahead and hunts it down.",
|
|
"params": { "speed": 800, "bounces": 0, "radius": 10, "lifeMs": 9000, "homing": true, "homingTurnRate": 3.2 } },
|
|
{ "id": "oil", "name": "Oil Slick", "type": "hazard", "desc": "Drop it behind you (or lob it ahead). Spins whoever touches it.",
|
|
"params": { "radius": 18, "throwSpeed": 700, "throwMs": 600 } },
|
|
{ "id": "turbo", "name": "Turbo Cell", "type": "boost", "desc": "A burst of raw speed. Works everywhere, even off-road.",
|
|
"params": { "ms": 1400, "mult": 1.5 } },
|
|
{ "id": "overdrive", "name": "Overdrive", "type": "status", "desc": "Invincible and faster for a few glorious seconds.",
|
|
"params": { "ms": 7000, "mult": 1.2 } },
|
|
{ "id": "emp", "name": "EMP", "type": "global", "desc": "Shrinks and slows every other racer. Heavies reboot last.",
|
|
"params": { "ms": 4200, "mult": 0.6, "weightExtraMs": 1600 } },
|
|
{ "id": "coins", "name": "Coin Pack", "type": "pickup", "desc": "Two coins, straight into the tank.",
|
|
"params": { "coins": 2 } }
|
|
],
|
|
"itemWeights": {
|
|
"_note": "One row per item id; 9 columns = race positions 1st..9th. Leaders get defensive scraps, back markers get the comeback tools.",
|
|
"byPosition": {
|
|
"bolt": [30, 25, 22, 18, 15, 12, 10, 8, 6],
|
|
"seeker": [ 0, 18, 20, 22, 22, 20, 16, 12, 8],
|
|
"oil": [30, 20, 15, 12, 8, 6, 4, 3, 2],
|
|
"turbo": [ 5, 15, 20, 22, 25, 26, 28, 28, 26],
|
|
"overdrive": [ 0, 0, 2, 4, 8, 12, 16, 20, 24],
|
|
"emp": [ 0, 0, 1, 2, 4, 8, 12, 16, 22],
|
|
"coins": [35, 22, 20, 20, 18, 16, 14, 13, 12]
|
|
}
|
|
},
|
|
"pointsTable": [10, 8, 6, 4, 3, 2, 1, 0, 0],
|
|
"themes": {
|
|
"_note": "Rasterizer palettes + backdrop fallbacks per location theme. Colors are hex strings. fog should match the backdrop's bottom edge so the draw-distance fade lands on it.",
|
|
"beach": {
|
|
"name": "Sunwash Shore",
|
|
"terrain": "#d9b878", "terrainSpeckle": "#c8a55e", "road": "#8a8378", "roadEdge": "#6e685e",
|
|
"offroad": "#e6cd90", "deep": "#1d6e9e", "water": "#2b86bd",
|
|
"skyTop": "#7ec8e8", "skyBottom": "#ffe9c2", "fog": "#ffe9c2",
|
|
"decor": ["palm", "umbrella", "rock"]
|
|
},
|
|
"volcano": {
|
|
"name": "Cinder Peaks",
|
|
"terrain": "#4a3230", "terrainSpeckle": "#5c3a32", "road": "#5e5450", "roadEdge": "#453d3a",
|
|
"offroad": "#6e4038", "deep": "#e05a1e", "water": "#ff7a28",
|
|
"skyTop": "#2a1418", "skyBottom": "#ff9a52", "fog": "#ff9a52",
|
|
"decor": ["boulder", "vent", "spire"]
|
|
},
|
|
"scrapyard": {
|
|
"name": "Smasher's Scrapyard",
|
|
"terrain": "#6b5f4c", "terrainSpeckle": "#7a6c55", "road": "#71716e", "roadEdge": "#54544f",
|
|
"offroad": "#8a7a5e", "deep": "#3a3a36", "water": "#4a5a52",
|
|
"skyTop": "#8a92a0", "skyBottom": "#d8c8a8", "fog": "#d8c8a8",
|
|
"decor": ["tirepile", "crane", "wreck"]
|
|
},
|
|
"swamp": {
|
|
"name": "Bayou Bend",
|
|
"terrain": "#3f5a35", "terrainSpeckle": "#4a6a3c", "road": "#6e6252", "roadEdge": "#524a3e",
|
|
"offroad": "#55703e", "deep": "#233a2e", "water": "#3a5f52",
|
|
"skyTop": "#5a7a68", "skyBottom": "#c2d0a8", "fog": "#c2d0a8",
|
|
"decor": ["cypress", "reeds", "log"]
|
|
},
|
|
"speedway": {
|
|
"name": "Gerome Speedway",
|
|
"terrain": "#4a7a42", "terrainSpeckle": "#548a48", "road": "#565b60", "roadEdge": "#3e4246",
|
|
"offroad": "#6a9a58", "deep": "#2e2e2e", "water": "#3a6a9a",
|
|
"skyTop": "#6ab0e8", "skyBottom": "#e8f0f8", "fog": "#e8f0f8",
|
|
"decor": ["grandstand", "billboard", "flagpole"]
|
|
},
|
|
"nightcity": {
|
|
"name": "Blackwind Boulevard",
|
|
"terrain": "#1e2230", "terrainSpeckle": "#2a3044", "road": "#3c4048", "roadEdge": "#2a2d33",
|
|
"offroad": "#2e3448", "deep": "#101420", "water": "#182a4a",
|
|
"skyTop": "#0a0c18", "skyBottom": "#4a3a6a", "fog": "#4a3a6a",
|
|
"decor": ["tower", "neon", "lamppost"]
|
|
}
|
|
}
|
|
}
|