Galactic structure: entity hierarchy introduction

Published on
Last changed on

In the , we discussed the overall structure of a galaxy, and its highest level constituents, the cubes.

This post describes what cubes are made of; in order of depth/appearance:

  1. Systems
  2. Stars
  3. Satellites
  4. Sub-satellites

Where each entity type is the parent/container of the one below it; and the child/contained of the one above it.

A current plan is to flatten this slightly, and, when the time allows, end up with the following:

  • Systems are parents to stars and satellites
  • Satellites optionally have subsatellites

This entity hierarchy will not change the characteristics of the entities themselves, though.

Systems

A cube contains a many systems as its density characteristic. A system entity has one use and one use only, and that is to define coordinates:

  • Intra-cube coordinates x, y and z are expressed a floats (f64) between 0.0 and 1.0. Obviously, since they are the result of a seeded random generation.
  • Galactic coordinates x, y and z are derived from the parent cube coordinates + dimensions and the system's intra cube coordinates.

And that's it for systems, apart from their arguably most important element: the star. I do not at moment plan on supporting binary star systems (or even trinary… if I could solve a three-body system I wouldn't be writing this). Not to mention that systems sometimes end up generated quite close to one another, especially in dense cubes, which kind of simulates binary systems (without gravitional influence though).

Stars

Stars are the point where procedural generation actually begins. Up until them, we had only generated densities and coordinates, but nothing really tangible.

I spent a lot of time researching what the starting point to generate stars would be. Would it be age? Stellar class? A random pick in a premade list? Could it be a random pick (gamma? beta?) among such a tempting distribution?

Stellar classSolar massPopulation fraction
O>160.00003%
B2.0-160.12%
A1.4-2.10.61%
F1.04-1.43.0%
G0.8-1.047.6%
K0.45-0.812%
M0.08-0.4576%

In the end mass and age were picked, for the following reasons:

  • It is easy to play with a beta random distribution, from a minimum mass to maximum mass, and adjust for a desired peak at a specific mass. I chose a "most likely random mass" to be way above our own galaxy's average. The reason for this is simple: star variety is good for visual enjoyment, and also causes more divertisty in satellite populations.
  • mass/radius/luminosity relations are well documented and incredibly quick to compute.
  • age is expressed as a multiplier of the star's lifetime and has an easy to understand/compute effect on the star's characteristics.

O-type monsters remains exceedingly rare! :-)

Giants and stellar remnants

Those are relatively rare, but supported by the engine: they happen when the randomly picked age is… above 1.0. This means, well this means that the star has reached very old age and has died, or is in the process of dying.
The stellar remnants supported by the engine are:

  • White dwarves: massively more common than the other remnants, they are formed by small- and medium-mass stars after they finish going through their (red) giant phase. Tiny stars (M class) also end up as white dwarves but since their life span is measured in trillions of years, the presence of stellar remnants for those stars is very hypothetical.
  • Neutron stars: for massive stars only. Very rare.
  • Black holes: for monster stars only. Extremely rare.

I will come back to complications and problems that giants and stellar remnants have caused -and are still causing- in a later post.

Satellites

By satellite is meant anything that directly orbits a star:

  • A planet: either a rocky planet, a gas giant, an "ice giant" or a gas dwarf
  • An asteroid belt: either ice or rock
  • A comet. Sorry maybe later.
  • A brown dwarf: a failed star or super mega giant planet, who knows?
  • An accretion disk: either for extremely young stars or stellar remnants such as black holes.

The choices that were made for the planet types are debatable, especially when it comes to the gas dwarf/mega earth distinction, perhaps. But given our knowledge on that subject in the actual universe, I chose what felt more fun and -more importantly- open to potentially interesting possibilities in terms of future gameplay.

Many satellite characteristics in the data explorer are expressed in earth or jupiter units. The goal of such a formatting is to convey a sense of scale: am I looking at a giant planet, a tiny one or something that is weirdly similar to the Earth, for example. Of course, the engine internally makes use of SI units (kilograms, metres, seconds and so on).

Rocky planets

Also called "telluric" and "earth-like planets", rocky planets are very much what comes up to mind when one imagines an exoplanet: something similar to Earth, Mars, Titan or Pluto, i.e., a ball of rock surrounded by a thin envelope of gas called an atmosphere. Any similarity end here, though, as the population is extremely diverse:

  • Mass: ranging from about 0.001 to around 7.5 earth masses. Expressed in more recognisable terms, this goes from 1% of the mass of the Moon to about half the mass of our solar system ice giants Uranus and Neptune. I confess those limits are arbitrary; however, they are the consequence of extremely lengthy reads of various articles and papers on the subject.
  • Atmosphere: arguably the number one aspect of a planet that gives it its "look & feel". The atmosphere rules over basic habitability and visual appearance, which are both extremely important from a gameplay perspective (exploration, deep scanning, solutions for settling, etc).
  • Crust: another important factor for colonisation prospects, resource extraction, etc. A crust must strike a fine balance betwen realism and playability.

I will cover planetary cores, mantles, crusts and atmospheres in an upcoming post.

Whichever their masses, rocky planets are still considered at most small planets. Why? Because even the most massive ones are utterly tiny compared to their bigger cousins: the giants.

Giant satellites: gas giants, ice giants and gas dwarfs

Giants are the big ones, the gravitational bullies in most systems. Their masses range from the upper limit of rocky planet (so about 7.5 earth masses) to around 79 times the mass of jupiter (!!!).
They are generally defined as planets whose "solid surface" either does not really exist, or exists so deep down their intermediate layers that the transition between atmosphere and ground is extremely gradual and/or blurred. Their is no surface or ground per se on a planet like Saturn.

This is a broad category of planets that regroups three different subtypes, in ascending order of mass:

  • Gas dwarves: are actually a transition type between the rocky world and the gas world. These planets always have a rocky/metal core, which, due to its extremely high mass, aggregated an atmosphere far more massive than a smaller rocky would have done, resulting in a mix between a rocky planet and a gas planet. A gas dwarf is mostly selected by looking at its procedurally generated density and radius: if the density is below a certain threshold and the radius below another one, then the planet is a gas dwarf. The members of this sub category are sometimes called "subneptunes", and our solar system does not have any of these even though it seems they are fairly common throughout the real galaxy.
  • Ice giants: by "ice" is meant massive planets whose atmopheres and deeper layers are composed of volatile compounds such as Methane, Water or Ammonia. Our local ice giants are Neptune and Uranus. Although rarer than gas dwarves, ice giants remain more common than their larger and entirely different cousins, the gas giants.
    An ice giant has a maximum mass of about 80 earth masses.
  • Gas giants: extremely massive planets primarily composed of Hydrogen and Helium. Our local gas giants are Jupiter and Saturn.

Similar to rocky planets, a future post will cover planetary cores, mantles, crusts and atmospheres for those planet types - or lack thereof :-)

Asteroid belts

Are what it says on the tin: rocks and ices, scattered over huge volumes. There is nothing really special about them expect perhaps their playability potential: they are an easy target for resource extraction.
Regardless of their origin (either natural or planet disintegration due to gravitational influence), belts can be of two main types:

  • Rock belts: with a composition extremely similar to the crust of rocky planets
  • Ice belts: primarily composed of ices (similar to the ice giants)

Sub-satellites

By sub-satellite is meant anything that directly orbits a satellite. Their number is procedurally generated and range from 1 to 9. They can be of the following subtypes:

  • A planet: a rocky planet only.
  • A planetary ring: either ice or rock

I will not cover rocky planets characteristics again here; the only difference is that in this context, their masses range from 0.0001 to 9.5 moon mass. Which means that large subsatellites can actually be more massive than small planets. After all, the Moon is larger than pluto (even though Pluto was officially demoted from its planet status a while ago, the engine would still consider it a satellite as it orbits a star).
These mass limits have of course a direct impact of the kind of gravity, escape velocity one can expect from subsatellites: they are smaller and do tend to be more "barren" than full planets, although of course exceptions will occur! :-)

Planetary rings are to planets what asteroid belts are to stars: a cloud of debris and tiny to small chunks of matter. Their composition is, as of now, the same as the one for asteroid belts.

Future posts will cover each entity type in more details.

Please signin to add your comment.