{ "_art": "texture/frameWidth/frameHeight/frame = the spritesheet (frame 0 = the starter ship, 256×256 frames; the ship is drawn centered in its frame and rotates about that center). artFacing = the direction the art points in its frame — the code applies a constant render offset so heading math stays identical. If the sheet is missing, the built-in procedural dart is drawn instead (it faces east). size = hull length in world px (also its collision 'diameter'); scale multiplies it (1 = as designed).", "texture": "assets/images/ships-player.png", "frameWidth": 256, "frameHeight": 256, "frame": 0, "artFacing": "north", "size": 46, "color": "#dfe7ff", "cockpitColor": "#41c7ff", "scale": 1, "thrust": 900, "maxSpeed": 480, "drag": 2.4, "rotSpeed": 10, "brakeDistance": 260, "arriveRadius": 8, "arriveSpeed": 50, "stats": { "_comment": "Base stats — the ship's starting condition, before any upgrades (builds/research layer deltas on top). hullIntegrity = the hull's max health (damage it can take); shields = damage absorbed in front of the hull; cargoHold = goods capacity; mineralStorage = minerals capacity (the hold's max load — the player's current minerals live in ship.minerals, loaded by the mining sequence); miningSpeed = multiplier on mining rate (1 = baseline). Exposed as ship.stats (js/entities/Ship.js); combat/trading/mining systems will read these as capacities.", "hullIntegrity": 100, "shields": 0, "cargoHold": 100, "mineralStorage": 250, "miningSpeed": 1 } }