---
title: Star system generation
summary: How Pax Abyssi builds the planets, moons, rings and belts of every star system except our own, from a star's catalogue row, published occurrence rates and planetary physics, the same way every time.
science_status: [sim]
categories: [Reference, Planetary systems, How the sim works]
aliases: [How the sim builds a star system, System generation, Procedural system generation, Planet generation pipeline, Solar system generation]
infobox:
  type: sim_process
  name: Star system generation
  status: BUILT
  stages:
    - "1. The star: catalogue row, derived stellar parameters, companion stars, snow lines"
    - "2. Planets or none: one probability, P(planets)"
    - "3. The template: one of 24 planetary system archetypes"
    - "4. The blueprint: orbital slots, temperature zones, planet types, disc chemistry, temperature guards"
    - "5. Physics: a per-type engine computes each planet and may reclassify it (up to 5 attempts)"
    - "6. Moons, rings and belts"
    - "7. Orbital elements and positions at the game date, written to a system file"
  inputs: [spectral type, luminosity, mass, effective temperature, metallicity, age, companion stars, Galactic population, known exoplanets]
  outputs: [planets with type, subtype, orbit, mass, radius, atmosphere and temperatures, moons, rings, asteroid belts, habitability scores]
  determinism: "The same catalogue star and seed give an identical system on every run; the committed system files regenerate byte for byte."
  game_date: "2538-01-01"
  output_counts: {systems_generated: 5160, systems_with_planets: 2188, planets: 8751, moons: 7495, as_of: "2026-09-25"}
  real_exoplanet_hosts: {systems: 653, planets: 928, source: "NASA Exoplanet Archive, June 2025 snapshot, matched to the catalogue"}
  equilibrium_temperature: "T_eq = 279 K (1 - A)^(1/4) (L / L_sun)^(1/4) (a / 1 AU)^(-1/2)"
  generator: "S/code:modules_colony/planet_physics_runner.py; S/code:utils/archetype_generators/; S/code:utils/planet_physics/dispatcher.py; S/code:utils/moon_physics/dispatcher.py"
  docs: ["S:SOLAR_SYSTEMS/NEW_GENERATION_FLOW.md", "S:SOLAR_SYSTEMS/README.md", "K:galaxy/GENERATED_SYSTEMS.md"]
sim:
  entity: pipeline.system_generation
refs:
  - id: pecaut2013
    type: article-journal
    author: [{family: Pecaut, given: Mark J.}, {family: Mamajek, given: Eric E.}]
    title: "Intrinsic Colors, Temperatures, and Bolometric Corrections of Pre-main-sequence Stars"
    container-title: The Astrophysical Journal Supplement Series
    volume: 208
    page: 9
    issued: 2013
    DOI: 10.1088/0067-0049/208/1/9
  - id: ballesteros2012
    type: article-journal
    author: [{family: Ballesteros, given: F. J.}]
    title: "New insights into black bodies"
    container-title: EPL (Europhysics Letters)
    volume: 97
    page: 34008
    issued: 2012
    DOI: 10.1209/0295-5075/97/34008
  - id: offner2023
    type: paper-conference
    author: [{family: Offner, given: Stella S. R.}, {family: Moe, given: Maxwell}, {family: Kratter, given: Kaitlin M.}, {family: Sadavoy, given: Sarah I.}, {family: Jensen, given: Eric L. N.}, {family: Tobin, given: John J.}]
    title: "The Origin and Evolution of Multiple Star Systems"
    container-title: "Protostars and Planets VII"
    issued: 2023
    URL: https://arxiv.org/abs/2203.10066
  - id: moe2017
    type: article-journal
    author: [{family: Moe, given: Maxwell}, {family: Di Stefano, given: Rosanne}]
    title: "Mind Your Ps and Qs: The Interrelation between Period (P) and Mass-ratio (Q) Distributions of Binary Stars"
    container-title: The Astrophysical Journal Supplement Series
    volume: 230
    page: 15
    issued: 2017
    DOI: 10.3847/1538-4365/aa6fb6
  - id: hayashi1981
    type: article-journal
    author: [{family: Hayashi, given: Chushiro}]
    title: "Structure of the Solar Nebula, Growth and Decay of Magnetic Fields and Effects of Magnetic and Turbulent Viscosities on the Nebula"
    container-title: Progress of Theoretical Physics Supplement
    volume: 70
    page: 35-53
    issued: 1981
    DOI: 10.1143/PTPS.70.35
  - id: holman1999
    type: article-journal
    author: [{family: Holman, given: Matthew J.}, {family: Wiegert, given: Paul A.}]
    title: "Long-Term Stability of Planets in Binary Systems"
    container-title: The Astronomical Journal
    volume: 117
    page: 621-628
    issued: 1999
    DOI: 10.1086/300695
  - id: chen2017
    type: article-journal
    author: [{family: Chen, given: Jingjing}, {family: Kipping, given: David}]
    title: "Probabilistic Forecasting of the Masses and Radii of Other Worlds"
    container-title: The Astrophysical Journal
    volume: 834
    page: 17
    issued: 2017
    DOI: 10.3847/1538-4357/834/1/17
  - id: nasa_archive
    type: webpage
    author: [{literal: NASA Exoplanet Archive}]
    title: "NASA Exoplanet Archive"
    container-title: NASA Exoplanet Science Institute, Caltech/IPAC
    URL: https://exoplanetarchive.ipac.caltech.edu/
    accessed: 2026-09-27
  - id: fischer2005
    type: article-journal
    author: [{family: Fischer, given: Debra A.}, {family: Valenti, given: Jeff}]
    title: "The Planet-Metallicity Correlation"
    container-title: The Astrophysical Journal
    volume: 622
    page: 1102-1117
    issued: 2005
    DOI: 10.1086/428383
  - id: oka2011
    type: article-journal
    author: [{family: Oka, given: Akinori}, {family: Nakamoto, given: Taishi}, {family: Ida, given: Shigeru}]
    title: "Evolution of Snow Line in Optically Thick Protoplanetary Disks: Effects of Water Ice Opacity and Dust Grain Size"
    container-title: The Astrophysical Journal
    volume: 738
    page: 141
    issued: 2011
    DOI: 10.1088/0004-637X/738/2/141
images_wanted:
  - file: File:Star_system_generation_pipeline_diagram.svg
    subject: "Flow diagram of the seven stages, left to right: catalogue star (spectral type, luminosity, metallicity, age, companions) -> planets or none (one probability) -> template (24 archetypes, weighted by star type and modifiers) -> blueprint (orbital slots, six temperature zones scaled by the square root of luminosity, planet types, disc chemistry, temperature guards) -> physics engines (with a loop arrow labelled 'reclassify, up to 5 times') -> moons, rings, belts -> orbits at 1 January 2538, written to a system file. A side branch from the star box labelled 'known exoplanet host' joins at the blueprint box with 'real planets plus gap-fill'."
    source: other
    note: "shot list: to be drawn in the site's diagram style"
  - file: File:Gl_702_1_generated_system_orrery.png
    subject: "Top-down orrery view of the generated system of the G1 V star Gliese 702.1 (HYG 88419): six planets from 0.25 to 1.39 AU with their orbits, zone shading and the water snow line off the right edge, labelled as a generated system"
    source: sim
    source_ref: "K/Data:Systems/Gl_702_1.json, shown in the in-game orrery (O)"
    note: "shot list: capture from the orrery; prefix legend in content/wiki/_notes/writer-c.md"
---

Every star system in Pax Abyssi other than the Solar System is generated. A deterministic pipeline takes a real star's row from the [[Star catalogue|star catalogue]] and builds its planets, moons, rings and asteroid belts from published planet occurrence rates, templates of how real systems are arranged, and physics engines for each kind of world. Feed it the same star and it builds the same system, every time. This page follows one system through the seven stages and says, at each, what is observation, what is model and what is the sim's own simplification. The pipeline is BUILT: its output is what a pilot flies through.

::figure{src="File:Star_system_generation_pipeline_diagram.svg" size=wide alt="Flow diagram of seven stages from catalogue star to planets or none, template, blueprint, physics with a reclassification loop, moons rings and belts, and orbits written to a file" caption="Diagram: the seven stages of system generation. Known exoplanet hosts join at the blueprint with their real planets."}

## 1. The star

Everything starts from the star. Its catalogue row supplies a spectral type, brightness and distance; the sim derives the rest. Effective temperature comes from spectroscopy where a measurement exists, otherwise from the star's colour through a blackbody relation :cite[ballesteros2012] or from its spectral type through a standard table of dwarf stars :cite[pecaut2013]; mass, luminosity, metallicity and age follow from measured values where the catalogue has them and from standard relations where it does not. Double and multiple stars get companions whose separations and mass ratios are drawn from the measured statistics of binary stars :cite[offner2023] :cite[moe2017].

Two derived quantities shape everything downstream. The first is the star's temperature zones. A planet with no atmosphere, reflecting nothing and spreading its heat evenly, settles at the equilibrium temperature

$$
T_\mathrm{eq} = 278\ \mathrm{K}\,(1 - A)^{1/4}\left(\frac{L}{L_\odot}\right)^{1/4}\left(\frac{a}{1\ \mathrm{AU}}\right)^{-1/2},
$$

where $A$ is the planet's albedo, $L$ the star's luminosity and $a$ the orbital distance; the sim rounds the constant to 279 K. Setting $T_\mathrm{eq}$ fixed and solving for $a$ shows that any temperature boundary moves outward as $\sqrt{L}$. A star 100 times brighter than the Sun has its zones 10 times farther out. The second is the set of snow lines, the distances beyond which ices condense: the sim puts water's at $2.7\sqrt{L}$ AU, following the classic value of 2.7 AU for the young Sun :cite[hayashi1981], and places snow lines for carbon dioxide, ammonia, methane, carbon monoxide and nitrogen farther out on the same scaling.

The sim's six zones, in AU, are

| Zone | Inner edge | Outer edge |
|---|---|---|
| Torch | star | $0.7\sqrt{L}$ |
| Warm | $0.7\sqrt{L}$ | $1.0\sqrt{L}$ |
| Temperate | $1.0\sqrt{L}$ | $1.8\sqrt{L}$ |
| Cool | $1.8\sqrt{L}$ | $3.0\sqrt{L}$ |
| Frigid | $3.0\sqrt{L}$ | $5.0\sqrt{L}$ |
| Deep freeze | $5.0\sqrt{L}$ | beyond |

These are generation labels. The science of where liquid water is possible is on [[Habitable zone]].

## 2. Planets or none

Next the sim decides whether the star has planets at all, with a single probability built from the measured occurrence rates: a base value read off the star's spectral subtype (0.89 for a Sun-like G2 dwarf, 0.96 for M dwarfs, falling steeply for hot stars), multiplied by factors for a close companion star, low metallicity, an old population, an evolved star and extreme youth. The derivation and the survey results behind it are on [[Planet occurrence]]. A star with catalogued exoplanets always has planets.

## 3. The template

A star with planets draws one of 24 [[Planetary system archetypes|planetary system archetypes]], templates such as a compact chain of rocky planets, a Sol-like system split at the snow line, or a hot Jupiter with distant companions. The draw is weighted by spectral class, so red dwarfs mostly get compact systems and hot stars mostly get wide or debris-rich ones, then adjusted for the star's metallicity, age, companions, Galactic population and activity. A companion star removes templates whose orbits it would not allow, using the stability limits of Holman and Wiegert :cite[holman1999].

## 4. The blueprint

The template lays out a list of orbital slots, each an orbital distance, by its own spacing rule: resonant period ratios for chains, a near-constant distance ratio for geometric systems, and so on. Each slot is labelled with its zone and filled by drawing a planet type from that template's table for that zone, so a cool-zone slot in a Sol-like template is likely to hold a giant and a torch-zone slot a barren rock or a lava world.

Two further steps adjust the draw. **Disc chemistry**: the star's composition stands in for the composition of the disc its planets formed from. Where carbon outnumbers oxygen (C/O above 1) carbon planets become five times likelier and silicate worlds less so; an iron-rich disc favours iron planets. **Temperature guards**: every slot's equilibrium temperature is checked against the type drawn for it. An ice world or subsurface-ocean world above 400 K becomes barren rock, or a lava world above 1,800 K; a volcanic world above 1,200 K and a barren one above 2,000 K become lava worlds.

## 5. Physics

Each planet then goes to the physics engine for its type, which computes the full property set: mass and radius, surface gravity, atmosphere and pressure, albedo, day and night temperatures, rotation, magnetic field and the rest. An engine can find that the planet it was handed cannot exist as labelled, and send it back with a new type. A greenhouse world that turns out cool enough for water to rain becomes a temperate world; a rocky world whose surface melts becomes a lava world; an ocean that freezes over becomes a [[Subsurface ocean world|subsurface ocean world]]. Up to five such passes are allowed. Throughout, the engines keep the orbital distance the template gave, so a resonant chain stays resonant. A final pass rerolls look-alikes so that two planets in one system do not wear the same surface.

## 6. Moons, rings and belts

Moons are added per planet type. Hot giants close to their stars get none, cold gas giants typically get three to eight, and rocky planets zero to three; they are spaced outward from just beyond the planet's Roche limit and kept within a third of its Hill radius (see [[Natural satellite]] and [[Orbit]]). Giant planets may get rings, placed inside the Roche limit for icy grains, where a moon could not hold together.

Asteroid belts follow the giants. A belt between the star and its innermost giant is placed where that giant's resonances clear and stir the orbits, between its 4:1 and 2:1 mean-motion resonances. Kepler's third law puts those at

$$
\frac{a_{4:1}}{a_\mathrm{giant}} = \left(\tfrac{1}{4}\right)^{2/3} = 0.397, \qquad \frac{a_{2:1}}{a_\mathrm{giant}} = \left(\tfrac{1}{2}\right)^{2/3} = 0.630,
$$

which for Jupiter at 5.20 AU gives about 2.06 to 3.28 AU, the edges of the real main belt. Outer belts like the Kuiper belt, and Trojan swarms at a planet's leading and trailing Lagrange points, are added with set probabilities (see [[Asteroid belt]]).

## 7. Orbits and time

Each body receives six Keplerian orbital elements, and its position is solved for the game's reference date, 1 January 2538. The whole system is written to a file that the game reads; from then on the game moves every body along its orbit on every simulation tick (see [[Orbit]]). No N-body integration is done, so orbits do not perturb one another or evolve over time.

:::callout{type=note title="A worked example: Gliese 702.1"}
Gliese 702.1 (HYG 88419) is a real G1 V star a little hotter and brighter than the Sun; the sim's star data give it 5,928 K, 1.04 solar masses and 1.13 solar luminosities. Its planets are the sim's invention: the star drew the geometric-spacing template. For a star of 1.04 solar masses the spacing rule gives a ratio of $1.4 + 0.3\log_{10}(1.14) = 1.42$, varied by up to 10 per cent, and the six planets landed at 0.25, 0.34, 0.48, 0.71, 1.08 and 1.39 AU, with orbital periods of 45, 72, 118, 214, 402 and 587 days. From the inside out they are a hot, clouded arid world, two thin-aired arid worlds, a barren rock, a dry temperate world and a temperate super-Earth. With $\sqrt{L} = 1.06$, the fifth planet at 1.08 AU sits just inside the temperate zone's inner edge and has a zero-albedo equilibrium temperature of 277 K.
:::

## Known exoplanet systems

For the 653 catalogue stars with confirmed exoplanets, 928 planets in all in the sim's cross-match with the NASA Exoplanet Archive :cite[nasa_archive], the pipeline keeps the real planets at their measured orbits. Where a planet's radius is unmeasured it is estimated from its mass with the empirical mass-radius relation of Chen and Kipping :cite[chen2017], and its type follows from its mass and temperature. The template is chosen to match the known planets, and the sim adds generated planets only in the gaps the surveys could not have seen. A star card in the game keeps the two apart: known planets and generated planets are reported separately.

## Where the sim simplifies

- **Templates, not formation.** Planets are placed by templates distilled from survey statistics. The sim does not simulate a disc, planet growth or migration; migration is represented only by which templates exist and how often they are drawn.
- **Snow lines from today's star.** Real snow lines were set by the temperature of the gas disc, which is heated by the disc's own accretion as well as by starlight, and they moved as the disc evolved :cite[oka2011]. The sim scales them from the star's present luminosity. For evolved stars, whose luminosity may have risen a hundredfold since their planets formed, the zones are those of the star as it is now.
- **Composition from the star.** A disc's local chemistry can differ from its star's, and the star's metallicity and element ratios stand in for it.
- **Fixed orbits.** Orbits are two-body Keplerian ellipses; no secular evolution, no scattering after generation.
- **Weights under revision.** The template weights are editorial choices informed by the literature, and some are known to need recalibration, for example the strength of the link between a star's metallicity and its chance of hosting giants :cite[fischer2005].

:::callout{type=sim title="In Pax Abyssi"}
The generator is the one the original simulation used, run from the game's tools before play, never while you fly: Python writes a system file per star, the game reads the files. As of 25 September 2026, 5,160 stars have system files, most of them the naked-eye stars of the in-game sky; 2,188 of those systems have planets, 8,751 planets and 7,495 moons in all, and 971 contain at least one planet scored as potentially habitable. A check regenerates every file and confirms it matches byte for byte, so a system you visit is the same on every machine and every run. Sol is the exception: its planets and 28 moons are built from measured orbits, not generated.
:::

## See also

- [[Planet occurrence]]
- [[Planetary system archetypes]]
- [[Star catalogue]]
- [[Orbit]]
- [[Natural satellite]]
- [[Asteroid belt]]
- [[Habitable zone]]
- [[Planet classification]]
- [[Science in Pax Abyssi]]
- [[Sol]]
