{ "_comment": "Planet visuals + home-planet rules + the solar system's layout. texture is a spritesheet of frameWidth×frameHeight frames (frame 0 = top-left); frames maps a planet kind to the sheet frames it may be drawn as — the generator picks one per planet (seed-deterministic). homePlanet is the player's world — always present at the origin of the system they start in. scale = world pixels per sheet pixel (1.0 = 1:1, so a Terran world is 1024 px across on screen). A planet is a solid disc: the ship may approach to shipClearance px (edge-to-edge) from its rim but can never cross it. spawnDistanceFromEdge = how far (edge-to-edge) the ship starts from the home world's rim. classScale = size multiplier per planet class (1.0 = 1024 px across); classTint = optional canvas tint per class (multiplicative — the terran art stands in for every kind until real art lands). solarSystem = the top-down layout: the system's other objects (planets + free-space stations) sit on one or two orbits (rings) around the origin — center-to-center at least minSpacing px from every other object (incl. the origin's home world), and, whenever the system holds more than one object, every object within maxNeighbor px of at least one other object. minSpacing/maxNeighbor are center-to-center px (the same unit as the 1024 px world disc).", "texture": "assets/images/planets.png", "frameWidth": 1024, "frameHeight": 1024, "scale": 1.0, "frames": { "terran": [0, 1, 2], "rocky": [0, 1, 2], "gas": [0, 1, 2], "ice": [0, 1, 2], "lava": [0, 1, 2] }, "classScale": { "rocky": 1.0, "gas": 1.45, "ice": 0.85, "lava": 0.95 }, "classTint": { "rocky": "#e8d9b8", "gas": "#ffb066", "ice": "#cfeaff", "lava": "#ff8a5c" }, "typeLabels": { "terran": "Home World", "rocky": "Rocky World", "gas": "Gas Giant", "ice": "Ice World", "lava": "Lava World" }, "homePlanet": "terran", "homeName": "Terra", "homeTypeLabel": "Home World", "shipClearance": 50, "spawnDistanceFromEdge": 150, "solarSystem": { "enabled": true, "minSpacing": 6144, "maxNeighbor": 10240 } }