Procedural Star System Generation

From Thrive Developer Wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

This page or section contains outdated information. This often happens when plans are changed after something has been written.

This is the system used for randomly generating star systems (the stars, planets, and moons) for both player starting worlds and for populating the galaxy of Thrive. Variables are denoted by [brackets.] Variables that directly affect organisms are bolded.

Overview

This needs a description.

tjwhale has started a prototype to test with generating the starting planet here.

Process

System-Level

Phase 1: Star Generation It all starts with creating the star, namely generating it's [Stellar Mass], [Stellar Luminosity], and [Stellar Metalicity]. In order to conform to what we've observed of stars in our universe, [Stellar Mass] and [Stellar Luminosity] will be drawn from presets, including Main Sequence stars, Giants, Super-Giants, Dwarfs, and a few more exotic options. Also included in these presets is information to determine the color of any photosynthetic life on orbiting planets.

Phase 2: System Generation From here, we begin generating Planets and Belts. [Planet Number] is generated first, listing the total number of bodies orbiting the star. [Planetary Mass] is then generated for each body in the system, using [Stellar Metallicity] to determine a cap. Bodies that fall below a certain threshold are designated Belts, representing asteroid fields. Finally, we use [Stellar Metalicity] once more to generate [Planet Composition.]

Phase 3: Orbit Calculation [Planet Orbit Distance] for each body is generated, with no two Planets allowed to be less than 0.2 AU apart, whereas Belts have a minimum distance of 0.01 AU from both Planets and each other. Next, orbit mechanics are finalized by generating [Planet Orbit Eccentricity] and calculating [Planet Orbit Time] by using [Stellar Mass], [Planetary Mass], and [Planet Orbit Distance.] Belt generation ends here.

Planet-Level

Phase 4: Rotation Calculation The next step is to generate [Planet Rotation Time] and [Planet Rotation Angle] randomly, but with [Planet Rotation Angle] weighted towards lower values to prevent a universe full of Uranus-lookalikes.

Phase 5: Atmosphere Generation Then, we generate the planet's atmosphere. From [Stellar Metallicity,] we generate [Planet Atmosphere Composition]. Using [Planetary Mass], [Planet Orbit Distance,] and [Planet Atmosphere Composition,] we place a hard cap on [Planet Atmosphere Density]. Using these two in conjunction, we then calculate [Planet Atmosphere Albedo] and [Planet Atmosphere Greenhouse.]

Phase 6: Planet Conditions Calculation Finally, we generate surface conditions. [Stellar Luminosity], [Planet Orbit Distance,] and [Planet Atmospheric Albedo] are all used to both calculate [Planet Mean Temperature] and [Planet Radiation.] [Planet Atmosphere Greenhouse] is also used in calculating [Planet Mean Temperature.] The possibility of [Planet Liquid Water] is then determined by [Planet Atmosphere Density] and [Planet Mean Temperature] (as water boils at different temperatures at different atmospheric densities) as well as looking at [Planet Atmosphere Composition] and [Planet Composition] for the possibility of it even being there at all.

Phase 7: Biome Generation The last and most complex step is to generate the planet's [Planet Temperature Gradient] over the course of one day, then over the course of one year, utilizing input from [Planet Rotation Time] and [Planet Atmosphere Greenhouse] for the former and [Planet Rotation Angle], [Planet Orbit Eccentricity,] and [Planet Atmosphere Albedo] for the latter. Both use [Planet Mean Temperature] as a starting point, and utilize Latitude in their calculations. Essentially, we wind up with two three-dimensional graphs: Temperature per day over Time over Latitude and how (Temperature per day over Time) changes over Time over Latitude. The former is calculated during the equinox. The resulting graphs are then used to determine [Planet Biomes]

Phase 8: Satellite Generation Now comes generation for satellites. [Satellite Number] is generated first, listing the total number of bodies orbiting the Planet. [Satellite Mass] is then generated for each body, using [Stellar Metallicity] and [PlanetMass] to determine a cap. Bodies that fall below a certain threshold are designated Rings. Finally, we use [Planet Composition] to generate [Satellite Composition.]

Phase 9: Satellite Orbit Calculation [Satellite Orbit Distance] for each body is generated. Next, orbit mechanics are finalized by generating [Satellite Orbit Eccentricity] and calculating [Satellite Orbit Time] by using [Planetary Mass], [Satellite Mass] and [Satellite Orbit Distance.] Ring generation ends here.

Satellite-Level

Phase 10: Satellite Rotation Calculation The next step is to generate [Satellite Rotation Time] and [Satellite Rotation Angle] randomly.

Phase 11: Satellite Atmosphere Generation Then, we generate the moon's atmosphere. From [Stellar Metallicity,] we generate [Satellite Atmosphere Composition]. Using [Satellite Mass], [Planet Orbit Distance,] and [Satellite Atmosphere Composition,] we place a hard cap on [Satellite Atmosphere Density]. Using these two in conjunction, we then calculate [Satellite Atmosphere Albedo] and [Satellite Atmosphere Greenhouse.]

Phase 12: Planet-Satellite Relations For the purposes of giving Moons a way to circumvent the minimum mass check for habitability, the effects of [Satellite Tidal Flexing] are calculated from [Satellite Orbit Eccentricity] and [Planet-Satellite Mass Ratio.] This in turn is calculated from [Satellite Mass] and [Planet Mass.]

Phase 13: Satellite Conditions Calculation Finally, we generate surface conditions. [Stellar Luminosity], [Planet Orbit Distance,] and [Satellite Atmospheric Albedo] are all used to both calculate [Satellite Mean Temperature] and [Satellite Radiation.] [Satellite Atmosphere Greenhouse] and [Satellite Tidal Flexing] are also used in calculating [Satellite Mean Temperature.] The possibility of [Satellite Liquid Water] is then determined by [Satellite Atmosphere Density] and [Satellite Mean Temperature] (as water boils at different temperatures at different atmospheric densities) as well as looking at [Satellite Atmosphere Composition] and [Satellite Composition] for the possibility of it even being there at all.

Phase 14: Satellite Biome Generation The last and most complex step is to generate the moon's [Satellite Temperature Gradient] over the course of one day, then over the course of one year, utilizing input from [Satellite Rotation Time] and [Satellite Atmosphere Greenhouse] for the former and [Satellite Rotation Angle], [Planet Orbit Eccentricity,] and [Satellite Atmosphere Albedo] for the latter. Both use [Satellite Mean Temperature] as a starting point, and utilize Latitude in their calculations. Essentially, we wind up with two three-dimensional graphs: Temperature per day over Time over Latitude and how (Temperature per day over Time) changes over Time over Latitude. The former is calculated during the equinox. The resulting graphs are then used to determine [Satellite Biomes.]

Habitability Checks

Habitability Checks are checks performed during system generation to see if an individual body is suitable as a starting world.

For Planets

Check 1: During system generation, against [Planetary Mass.] Any body that is too small will be unable to continue geologic processes for very long, which are responsible for recycling various compounds and helping sustain/build the atmosphere.

Check 2: During system generation, against [Planet Composition.] Since all life in Thrive is carbon-based, the presence of Carbon in some form on the planet is necessary.

Check 3: During orbit calculation, against [Planet Orbit Eccentricity.] This limits the Eccentricity of orbits, as a more oval-shaped orbit will not only cause wild temperature variations, but is more likely to be involved in a planetary collision with any orbits it nears.

Check 4: During rotation calculation, against [Planet Rotation Time] and [Planet Orbit Time.] If these two values are equal or within a close range of each other, the Planet is effectively tidally locked, and one side is almost constantly facing the star. The habitability of such a world is debatable, as temperatures on the sunlit side would skyrocket, whilst those on the dark side would plummet, leaving only a small, temperate band between the two. The possibility of liquid water is remote on such a world.

Check 5: During atmosphere generation, against [Planet Atmosphere Density.] An atmospheric pressure of at least 0.006 atmospheres at sea-level is needed to keep water in it's liquid form, as well as give enough for organisms to breathe.

Check 6: During planet conditions calculation, against [Planet Liquid Water.] If there is no liquid water, the planet can not possibly host native life.

For Satellites

Check 1: During satellite generation, against [Satellite Tidal Flexing] and [Satellite Mass.] Any body that is too small will be unable to continue geologic processes for very long, which are responsible for recycling various compounds and helping sustain/build the atmosphere. This can be circumvented by gravitational flexing in the case of moons, churning the inside of the moon to keep geological processes going longer than indicated by mass alone.

Check 2: During satellite generation, against [Satellite Composition.] Since all life in Thrive is carbon-based, the presence of Carbon in some form on the planet is necessary.

Check 3: During orbit calculation, against [Planet Orbit Eccentricity.] This limits the Eccentricity of orbits, as a more oval-shaped orbit will not only cause wild temperature variations, but is more likely to be involved in a planetary collision with any orbits it nears.

Check 4: During satellite rotation calculation, against [Satellite Rotation Time,] [Satellite Orbit Time,] and [Planet Orbit Time.] If these three values are equal or within a close range of each other, the Moon is effectively tidally locked to the star, and one side is almost constantly facing the star. The habitability of such a world is debatable, as temperatures on the sunlit side would skyrocket, whilst those on the dark side would plummet, leaving only a small, temperate band between the two. The possibility of liquid water is remote on such a world.

Check 5: During satellite atmosphere generation, against [Satellite Atmosphere Density.] An atmospheric pressure of at least 0.006 atmospheres at sea-level is needed to keep water in it's liquid form, as well as give enough for organisms to breathe.

Check 6: During satellite conditions calculation, against [Satellite Liquid Water.] If there is no liquid water, the planet can not possibly host native life.

Variables

Below is a list of all variables used in the above calculations, with definitions and uses.

Stellar

[Stellar Metalicity] is roughly a measure of the percentage of heavy metals present when the system was forming. This is used to select [Planet Number] and [Satellite Number,] as well as puts a cap on the maximum [Planetary Mass.] and [Satellite Mass.] It will also influence [Planet Composition], [Planet Atmosphere Composition,] and [Satellite Atmosphere Composition,] with higher [Stellar Metalicity] leading to more options when generating compositions.

[Stellar Luminosity] determines how much energy the star is putting out. This, along with [Planet Orbit Distance] is a major factor in deciding both [Planet Radiation] and [Planet Mean Temperature], along with [Satellite Radiation] and [Satellite Mean Temperature]

[Stellar Mass] is the mass of the star. It is used with [Planetary Mass] and [Planet Orbit Distance] to calculate [Planet Orbit Time].

[Planet Number] is the number of bodies directly orbiting the star.

Planetary

[Planetary Mass], along with [Planet Orbit Distance] is used to place a hard cap on [Planet Atmosphere Density] and [Satellite Atmosphere Density.] It is a factor in orbit calculations. It is also used to determine [Gravity] and the size of the planet in gameplay terms. Finally, it helps determine [Satellite Number]

[Planet Composition] gives rough percentages of elements in the planet's crust, for use in generating important minerals, [Planet Resources,] later in the game. It also plays a role in determining [Planet Liquid Water.] The process for this involves a weighted list of potential elements/compounds, which is then randomly selected from to build the makeup.

[Planet Orbit Distance] is the distance between the orbit of the Planet/Belt and the Star. It is used in calculating [Planet Orbit Time] as well as determining [Planet Radiation] and [Planet Mean Temperature.] In addition, it puts a cap on [Planet Atmosphere Density] and [Satellite Atmosphere Density] due to the effects of solar wind.

[Planet Orbit Eccentricity] is a measure of how round or oval-shaped a planet's orbit is. It is used in calculating both [Planet Temperature Gradient] and [Satellite Temperature Gradient] over the course of the year due to changing distance from the star.

[Planet Orbit Time] is a measure of the planet's year.

[Planet Rotation Time] is a measure of day length and is used in calculating [Planet Temperature Gradient] over the course of a day.

[Planet Rotation Angle] is a measure of axis tilt and is used in calculating [Planet Temperature Gradient] over the course of a year due to seasonal changes, along with Latitude.

[Planet Atmosphere Composition] gives percentages of various gasses that make up the atmosphere. It is generated similarly to [Planet Composition,] and is used in calculating [Planet Atmospheric Albedo] and [Planet Atmosphere Greenhouse,] as well as helping determine [Planet Liquid Water.] Finally, it helps put a cap on [Planet Atmosphere Density]

[Planet Atmosphere Density] is the atmospheric pressure at whatever our zero-point is as far as elevation goes. It is used in calculating [Planet Atmospheric Albedo] and [Planet Atmosphere Greenhouse,] as well as helping determine [Liquid Water.]

[Planet Atmospheric Albedo] gives a rough percentage of how much stellar radiation is reflected back on average by the Planet. It is used in calculating [Planet Mean Temperature] and reducing the effects of [Planet Orbit Eccentricity] and [Planet Rotation Angle] on [Planet Temperature Gradient.] It is also involved in calculating [Planet Radiation]

[Planet Atmosphere Greenhouse] measures the amount of greenhouse gasses present in the atmosphere. This has an effect on [Planet Mean Temperature] and limits the degree of change in [Planet Temperature Gradient] over a day-night cycle.

[Planet Mean Temperature] is the measure of the baseline surface temperature of the planet. It is used as a starting point for calculating [Planet Temperature Gradient] and [Planet Liquid Water.]

[Planet Radiation] is the measure of how much ionizing radiation reaches the planet's surface.

[Planet Temperature Gradient] is composed of two graphs: change in temperature from the baseline over latitude over the course of a solar day, and change in daily temperature change over latitude over the course of a solar year. It is used to determine [Planet Biomes]

[Planet Biomes] are the biomes present at any given point on the planet, as determined by [Planet Temperature Gradient.]

[Planet Liquid Water,] the big one, measures what percentage of the moon's surface is covered by ocean.

[Satellite Number] is the number of bodies directly orbiting the planet.

Satellite

[Satellite Mass], along with [Satellite Orbit Distance] is used to place a hard cap on [Satellite Atmosphere Density] and [Satellite Atmosphere Density.] It is a factor in orbit calculations. It is also used to determine '[Gravity] and the size of the moon in gameplay terms. Finally, it helps determine [Satellite Number]

[Satellite Composition] gives rough percentages of elements in the moon's crust, for use in generating important minerals, [Satellite Resources,] later in the game. It also plays a role in determining [Satellite Liquid Water.] The process for this involves a weighted list of potential elements/compounds, which is then randomly selected from to build the makeup.

[Satellite Orbit Distance] is the distance between the orbit of the Satellite/Belt and the Star. It is used in calculating [Satellite Orbit Time] as well as determining [Satellite Radiation] and [Satellite Mean Temperature.] In addition, it puts a cap on [Satellite Atmosphere Density] and [Satellite Atmosphere Density] due to the effects of solar wind.

[Satellite Orbit Eccentricity] is a measure of how round or oval-shaped a moon's orbit is. It is used in calculating both [Satellite Temperature Gradient] and [Satellite Temperature Gradient] over the course of the year due to changing distance from the star.

[Satellite Orbit Time] is a measure of the moon's year.

[Satellite Rotation Time] is a measure of day length and is used in calculating [Satellite Temperature Gradient] over the course of a day.

[Satellite Rotation Angle] is a measure of axis tilt and is used in calculating [Satellite Temperature Gradient] over the course of a year due to seasonal changes, along with Latitude.

[Satellite Atmosphere Composition] gives percentages of various gasses that make up the atmosphere. It is generated similarly to [Satellite Composition,] and is used in calculating [Satellite Atmospheric Albedo] and [Satellite Atmosphere Greenhouse,] as well as helping determine [Satellite Liquid Water.] Finally, it helps put a cap on [Satellite Atmosphere Density]

[Satellite Atmosphere Density] is the atmospheric pressure at whatever our zero-point is as far as elevation goes. It is used in calculating [Satellite Atmospheric Albedo] and [Satellite Atmosphere Greenhouse,] as well as helping determine [Liquid Water.]

[Satellite Atmospheric Albedo] gives a rough percentage of how much stellar radiation is reflected back on average by the Moon. It is used in calculating [Satellite Mean Temperature] and reducing the effects of [Satellite Orbit Eccentricity] and [Satellite Rotation Angle] on [Satellite Temperature Gradient.] It is also involved in calculating [Satellite Radiation.]

[Satellite Atmosphere Greenhouse] measures the amount of greenhouse gasses present in the atmosphere. This has an effect on [Satellite Mean Temperature] and limits the degree of change in [Satellite Temperature Gradient] over a day-night cycle.

[Planet-Satellite Mass Ratio] is the ratio between the mass of the satellite and the mass of the planet. It is used in calculating [Satellite Tidal Flexing.]

[Satellite Tidal Flexing] is the amount of geothermal heat generated by varying gravitational pull as the satellite orbits its planet. It is used in determining [Satellite Mean Temperature.]

[Satellite Mean Temperature] is the measure of the baseline surface temperature of the moon. It is used as a starting point for calculating [Satellite Temperature Gradient] and in determining [Satellite Liquid Water.]

[Satellite Temperature Gradient] is composed of two graphs: change in temperature from the baseline over latitude over the course of a solar day, and change in daily temperature change over latitude over the course of a solar year. It is used to determine [Satellite Biomes]

[Satellite Biomes] are the biomes present at any given point on the moon, as determined by [Satellite Temperature Gradient.]

[Satellite Radiation] is the measure of how much ionizing radiation reaches the moon's surface.

[Satellite Liquid Water,] the big one, measures what percentage of the moon's surface is covered by ocean.

Relation to the Planet Editor

Not all of the above variables will be able to be influenced by the player, either by customization of the starting world or by advanced space-age tools. Below are a list of the variables able to be “tweaked” by the player, thanks to their inclusion of randomness into their calculation. Any modification is done to this random variable.

  • [Stellar Metallicity]
  • [Stellar Mass] / [Stellar Luminosity] (As selected from presets)
  • [Planet Number]
  • [Planet Mass]
  • [Planet Orbit Distance]
  • [Planet Orbit Eccentricity]
  • [Planet Rotation Time]
  • [Planet Rotation Angle]
  • [Planet Composition]
  • [Planet Liquid Water]
  • [Planet Atmosphere Density]
  • [Planet Atmosphere Composition]
  • [Satellite Number]
  • [Satellite Number]
  • [Satellite Mass]
  • [Satellite Orbit Distance]
  • [Satellite Orbit Eccentricity]
  • [Satellite Rotation Time]
  • [Satellite Rotation Angle]
  • [Satellite Composition]
  • [Satellite Liquid Water]
  • [Satellite Atmosphere Density]
  • [Satellite Atmosphere Composition]