142 lines
6.1 KiB
JSON
142 lines
6.1 KiB
JSON
{
|
||
"_comment": "System archetypes. Each type is themable (theme) and has attributes that steer the SystemGenerator: star classes, binary chance, planet class weights, moon/belt chances, habitability, hazard, and free-space settlement odds (settlements: deepSpaceStation / waypoint). objectCount is a GLOBAL rule, not per-type: the starting system is exempt (it always holds exactly two generated planets — gas giant + rocky — beside the home world, plus at most one free-space station). Every other system rolls its TOTAL object count — planets + free-space stations together — from this table: `barren` of systems hold ZERO objects (a gate-only dead-end LEAF of the jump network — the center is empty, the star is invisible flavor, and the only things there are the single gate and 1–2 asteroid clusters drifting inside its tether, data/asteroids.json → barren), the rest hold `objects` counts. The split is resolved by rolling the free-space stations first (per-type odds in attributes.settlements × the home→far density gradient, at most two — deepSpaceStation + waypoint), then planets = N − stations; if that roll would leave the system with NO planet (stations = N), one station is demoted to a planet — every non-barren system keeps ≥ 1 planet, the gate's tether anchor and the world the player can build out from. Every planet is settled by rule (data/settlements.json → allPlanetsSettled + settledKindByClass). distribution.weight sets how common the type is GLOBALLY; which types favor WHICH REGION of the galaxy (the home corner, the middle, the far/deep corner) is the per-zone mix in data/galaxy.json → distribution.zoneMix, keyed off each system's home→far diagonal zone (record.zone).",
|
||
"objectCount": {
|
||
"barren": 0.10,
|
||
"objects": { "2": 0.15, "3": 0.30, "4": 0.30, "5": 0.15 }
|
||
},
|
||
"types": {
|
||
"main": {
|
||
"label": "Main Sequence",
|
||
"description": "An ordinary star and its worlds — the galaxy's working majority.",
|
||
"theme": { "color": "#9fb4e8" },
|
||
"distribution": { "weight": 34 },
|
||
"attributes": {
|
||
"star": {
|
||
"classes": { "G": 30, "K": 40, "M": 30 },
|
||
"mass": { "G": [0.8, 1.4], "K": [0.5, 0.8], "M": [0.1, 0.5] }
|
||
},
|
||
"binaryChance": 0.05,
|
||
"planetClasses": { "rocky": 45, "gas": 25, "ice": 18, "lava": 12 },
|
||
"moonChance": 0.3,
|
||
"beltChance": 0.35,
|
||
"habitability": 0.1,
|
||
"hazard": 0.1,
|
||
"settlements": {
|
||
"deepSpaceStation": { "chance": 0.25 },
|
||
"waypoint": { "chance": 0.35 }
|
||
}
|
||
}
|
||
},
|
||
"redDwarf": {
|
||
"label": "Red Dwarf",
|
||
"description": "A small, long-lived M star with close-in, moon-rich worlds.",
|
||
"theme": { "color": "#e8927c" },
|
||
"distribution": { "weight": 26 },
|
||
"attributes": {
|
||
"star": {
|
||
"classes": { "M": 85, "K": 15 },
|
||
"mass": { "M": [0.08, 0.35], "K": [0.5, 0.8] }
|
||
},
|
||
"binaryChance": 0.12,
|
||
"planetClasses": { "rocky": 50, "gas": 15, "ice": 28, "lava": 7 },
|
||
"moonChance": 0.45,
|
||
"beltChance": 0.3,
|
||
"habitability": 0.22,
|
||
"hazard": 0.12,
|
||
"settlements": {
|
||
"deepSpaceStation": { "chance": 0.2 },
|
||
"waypoint": { "chance": 0.3 }
|
||
}
|
||
}
|
||
},
|
||
"binary": {
|
||
"label": "Binary",
|
||
"description": "Two stars, one system. Tangled orbits, wide spacings, rich debris.",
|
||
"theme": { "color": "#c9a7ff" },
|
||
"distribution": { "weight": 10 },
|
||
"attributes": {
|
||
"star": {
|
||
"classes": { "F": 25, "G": 40, "K": 35 },
|
||
"mass": { "F": [1.0, 1.6], "G": [0.8, 1.4], "K": [0.5, 0.8] }
|
||
},
|
||
"binaryChance": 1.0,
|
||
"planetClasses": { "rocky": 30, "gas": 40, "ice": 20, "lava": 10 },
|
||
"moonChance": 0.5,
|
||
"beltChance": 0.6,
|
||
"habitability": 0.06,
|
||
"hazard": 0.18,
|
||
"settlements": {
|
||
"deepSpaceStation": { "chance": 0.3 },
|
||
"waypoint": { "chance": 0.3 }
|
||
}
|
||
}
|
||
},
|
||
"habitable": {
|
||
"label": "Habitable",
|
||
"description": "Temperate, well-lit, and quietly crowded with life. Rare.",
|
||
"theme": { "color": "#7ce8a4" },
|
||
"distribution": { "weight": 10 },
|
||
"attributes": {
|
||
"star": {
|
||
"classes": { "G": 70, "K": 30 },
|
||
"mass": { "G": [0.85, 1.3], "K": [0.6, 0.85] }
|
||
},
|
||
"binaryChance": 0.03,
|
||
"planetClasses": { "rocky": 62, "gas": 18, "ice": 14, "lava": 6 },
|
||
"moonChance": 0.35,
|
||
"beltChance": 0.25,
|
||
"habitability": 0.5,
|
||
"hazard": 0.05,
|
||
"settlements": {
|
||
"deepSpaceStation": { "chance": 0.25 },
|
||
"waypoint": { "chance": 0.4 }
|
||
}
|
||
}
|
||
},
|
||
"nebula": {
|
||
"label": "Nebula",
|
||
"description": "Young, bright, and still messy — debris where planets should be.",
|
||
"theme": { "color": "#5fd4d0" },
|
||
"distribution": { "weight": 12 },
|
||
"attributes": {
|
||
"star": {
|
||
"classes": { "A": 20, "F": 30, "G": 50 },
|
||
"mass": { "A": [1.4, 2.1], "F": [1.0, 1.6], "G": [0.8, 1.4] }
|
||
},
|
||
"binaryChance": 0.1,
|
||
"planetClasses": { "rocky": 20, "gas": 25, "ice": 15, "lava": 40 },
|
||
"moonChance": 0.2,
|
||
"beltChance": 0.8,
|
||
"habitability": 0.02,
|
||
"hazard": 0.35,
|
||
"settlements": {
|
||
"deepSpaceStation": { "chance": 0.2 },
|
||
"waypoint": { "chance": 0.45 }
|
||
}
|
||
}
|
||
},
|
||
"void": {
|
||
"label": "Void",
|
||
"description": "Old, cold, and mostly empty. The rim's quiet dead ends.",
|
||
"theme": { "color": "#7d88a8" },
|
||
"distribution": { "weight": 8 },
|
||
"attributes": {
|
||
"star": {
|
||
"classes": { "M": 90, "K": 10 },
|
||
"mass": { "M": [0.08, 0.3], "K": [0.4, 0.6] }
|
||
},
|
||
"binaryChance": 0.08,
|
||
"planetClasses": { "rocky": 20, "gas": 10, "ice": 55, "lava": 15 },
|
||
"moonChance": 0.1,
|
||
"beltChance": 0.2,
|
||
"habitability": 0.02,
|
||
"hazard": 0.5,
|
||
"settlements": {
|
||
"deepSpaceStation": { "chance": 0.15 },
|
||
"waypoint": { "chance": 0.25 }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|