160 lines
8.7 KiB
JSON
160 lines
8.7 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).",
|
||
"_effect": "Per-type VISUAL EFFECT (js/visuals/SystemEffects.js): the star's character. Each sub-effect is an OPTIONAL block — a type wears exactly what it lists (an empty {} = no effect, renders untouched). CAMERA FILTERS (WebGL; the HUD is excluded by the UI-camera split) — 'ripple' { center: screen|star, strength (wave cycles), amplitude (displacement, fraction of screen), speed (rad/s), padding (framebuffer slack, keep >= amplitude*width*(1+flare.rippleBoost)*centers), centers: 1|2, orbit {radius, period} (two centers circling each other) }; 'grade' { tint (hex hue), amount (0..1), saturation (1=none), brightness, or split {a, b hex, mix 0..1, axis deg} (a two-color directional wash) }. 'flare' { interval, duration (seconds), rippleBoost x, flash 0..1, flashColor } is a SHARED seeded rhythm that surges the ripple's amplitude AND flashes the grade warm — the star flaring (a ripple with no flare just shimmers at its base amplitude). CONTENT (world-space sprites, Canvas-safe, depth 3, behind the art) — 'particles' (ember dust) and 'wanderer' (companion star). LIVE TODAY: nebula = a steady ripple; redDwarf = a SUPER-subtle ripple that SURGES on each flare + a warm grade + ember dust; binary = a two-color split grade + a wandering companion star (NO ripple — two stars, one light). Per-system variation (flare phase, split axis, wanderer path) is seeded from the system id in SystemGenerator (content.fx), so each system is stable but distinct. Tuning is a JSON edit.",
|
||
"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 },
|
||
"effect": {},
|
||
"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 },
|
||
"effect": {
|
||
"ripple": { "center": "star", "strength": 18, "amplitude": 0.001, "speed": 0.8, "padding": 18, "centers": 1 },
|
||
"flare": { "interval": 18, "duration": 2.6, "rippleBoost": 12, "flash": 0.35, "flashColor": "#ffd9a8" },
|
||
"grade": { "tint": "#ff9a5c", "amount": 0.30, "saturation": 0.90, "brightness": 0.96, "lift": { "amount": 0.20, "color": "#c0392b" }, "grain": { "amount": 0.16, "parallax": 0.08 } },
|
||
"haze": { "base": "#160b09", "tint": "#c0392b", "alpha": 0.9, "grain": 12, "blobs": 9, "scale": [0.18, 0.42] },
|
||
"particles": { "count": 30, "size": [2, 5], "alpha": [0.4, 0.85], "parallax": [0.25, 0.5], "speed": [8, 25], "color": "#ff8a4a", "blend": "add" }
|
||
},
|
||
"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 },
|
||
"effect": {
|
||
"grade": { "split": { "a": "#f2b05c", "b": "#5b9bf2", "mix": 0.15, "axis": 28 } },
|
||
"wanderer": { "color": "#9fd0ff", "coreSize": [40, 70], "haloSize": [120, 200], "parallax": 0.08, "speed": [3, 8] }
|
||
},
|
||
"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 },
|
||
"effect": {},
|
||
"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 },
|
||
"effect": {
|
||
"ripple": { "center": "screen", "strength": 20, "amplitude": 0.0042, "speed": 1.0, "padding": 20 }
|
||
},
|
||
"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 },
|
||
"effect": {},
|
||
"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 }
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|