orbit/data/planets.json

59 lines
3.8 KiB
JSON
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"_comment": "Planet visuals + home-planet rules + the invisible star's flavor (class colors — non-home systems have no central body) + 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 — present ONLY at the origin of the system they start in (the starting system's central body); every OTHER system's center is empty — the star is invisible flavor (`star` below: name/class feed the dossier and gate names, never rendered). 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). compassColor = the compass-arrow accent for planets (the home world + the system's worlds — data/stations.json's stations and data/asteroids.json's clusters carry their own; the scan signal compass reads it too). solarSystem = the top-down LAYOUT BAND (js/galaxy/SystemGenerator.js → layoutSystem): every PAIR of layout objects — planets, free-space stations, and the central body (the home world — at the local origin of the starting system only; every other center is empty) — sits at least minSpacing and at most the maximum apart, center to center. Normal systems: [minSpacing, maxSpacing] = 6400..15360 px. The home system: [minSpacing, homeMaxSpacing] = 6400..10240 px, and it is capped at 3 objects — 5 points (home world + 4) cannot sit 6400..10240 px apart: the tightest 5-point spacing needs a max/min ratio ≥ φ ≈ 1.618 > 1.6. Normal systems lay out as a regular N-gon ring; the home system as a regular (N+1)-polygon with the home world as one vertex. The rotation biases toward the jump-gate directions (data/gates.json). minSpacing/maxSpacing/homeMaxSpacing 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": [6, 7, 8],
"gas": [3, 4, 5],
"ice": [9, 10, 11],
"lava": [12, 13, 14]
},
"classScale": {
"rocky": 1.0,
"gas": 1.45,
"ice": 0.85,
"lava": 0.95
},
"classTint": {
"rocky": "#e8d9b8",
"gas": "#ffb066",
"ice": "#cfeaff",
"lava": "#ff8a5c"
},
"compassColor": "#3dff88",
"typeLabels": {
"terran": "Home World",
"rocky": "Rocky World",
"gas": "Gas Giant",
"ice": "Ice World",
"lava": "Lava World"
},
"homePlanet": "terran",
"homeName": "Terra",
"homeTypeLabel": "Home World",
"star": {
"_comment": "The system's INVISIBLE star — flavor, not a body. Every non-home system's center is empty (the star is never rendered; js/entities/Star.js is gone); this section feeds the dossier's identity (content.star) and the class colors used by the diagnostics and the map plate tag. classColor = the class's hue (G/K/M/… → hex).",
"classColor": { "O": "#9db4ff", "B": "#9db4ff", "A": "#cfd8ff", "F": "#fff4e0", "G": "#ffe9b0", "K": "#ffc07a", "M": "#ff8a64" }
},
"starTypeLabels": {
"O": "O-type Star",
"B": "B-type Star",
"A": "A-type Star",
"F": "F-type Star",
"G": "G-type Star",
"K": "K-type Star",
"M": "M-type Star"
},
"shipClearance": 50,
"spawnDistanceFromEdge": 150,
"solarSystem": {
"enabled": true,
"minSpacing": 6400,
"maxSpacing": 15360,
"homeMaxSpacing": 10240
}
}