Celestial Bodies Configuration

Configuration file format for solar system bodies.

Authoritative Data Source

All celestial body property values (mass, radius, color) are defined in tick-processor.md.

This file documents the configuration file format only. Do not duplicate property values here.

Format

YAML configuration file: config/celestial-bodies.yaml

bodies:
  - name: Sun
    type: star
    mass: 1.989e30        # kg - see tick-processor.md for exact value
    radius: 6.960e8       # m
    color: "#FDB813"      # hex color for rendering
    parent: null          # center of system

  - name: Earth
    type: planet
    mass: 5.972e24
    radius: 6.371e6
    color: "#6B93D6"
    parent: Sun

  - name: Luna
    type: moon
    mass: 7.342e22
    radius: 1.737e6
    color: "#C0C0C0"
    parent: Earth

Body Properties

Property Type Required Description
name string Yes Unique identifier
type enum Yes star, planet, moon, asteroid
mass float Yes Mass in kg
radius float Yes Mean radius in meters
color string Yes Hex color for MVP rendering
parent string No Parent body for moons (null for Sun)

Initial Release Bodies

The initial release includes 31 bodies:

  • 1 star (Sun)
  • 8 planets (Mercury through Neptune)
  • 22 moons

See tick-processor.md Celestial Body Properties for the complete list with all property values.

Rotation Properties

Property Type Description
rotation_period float Sidereal rotation period in seconds (negative = retrograde)
axial_tilt float Obliquity in degrees (tilt of spin axis from orbital plane)

Rotation and axial tilt are rendered visually. See web-client.md Body Rotation for rendering details.

Spin Axes

Planet spin axis directions are defined as unit vectors in ecliptic (physics frame) coordinates, computed from IAU pole directions (right ascension, declination) converted through the equatorial→ecliptic rotation (obliquity ε = 23.4393°).

These are stored in the web client’s bodyConfig.js as BODY_SPIN_AXES and used for:

  • Visual axial tilt orientation (cockpit and map views)
  • Orbital inclination calculations (orbital.js)
Body Spin Axis (ecliptic) Notes
Sun [0.1224, -0.0310, 0.9920] 7.25° tilt
Mercury [0.0914, -0.0815, 0.9925] Nearly upright
Venus [0.0187, 0.0109, 0.9998] ~177° (retrograde, nearly inverted)
Earth [0.0000, 0.3978, 0.9175] 23.44° tilt
Mars [0.4461, -0.0555, 0.8933] 25.19° tilt
Jupiter [-0.0146, -0.0358, 0.9993] 3.13° tilt
Saturn [0.0855, 0.4624, 0.8825] 26.73° tilt
Uranus [-0.2120, -0.9680, 0.1344] 97.77° (sideways)
Neptune [0.3559, -0.3068, 0.8827] 28.32° tilt
Luna [0.0220, 0.0154, 0.9996] 1.54° from ecliptic pole

Moons inherit their parent planet’s spin axis for orbital plane alignment. Moon ephemeris positions and velocities are rotated so that their orbital angular momentum vectors align with the parent’s spin axis (or anti-align for retrograde orbits like Triton).

Exception: Luna. Luna’s orbit is inclined ~5.1° to the ecliptic plane rather than to Earth’s equatorial plane, so it does not inherit Earth’s spin axis. Luna has its own explicit spin axis entry in BODY_SPIN_AXES, nearly aligned with the ecliptic pole.

Ephemeris

Initial positions and velocities are loaded from JPL Horizons at server start based on configured start_date.

Python library: astroquery.jplhorizons or skyfield

See services.md Ephemeris Fallback for fallback behavior when JPL is unavailable.


Back to top

Galaxy — Kubernetes-based multiplayer space game

This site uses Just the Docs, a documentation theme for Jekyll.