# Moons

This OXP (part of Strangers World), creates dynamically moving moons for the solar systems in your Ooniverse.

There are 19 natural satellites in our Solar System massive enough to have achieved hydrostatic equilibrium (having the shape of a globe, not an irregular shape like a potato!). The one large moon of Earth, four Galilean moons of Jupiter, seven moons of Saturn, five moons of Uranus, one moon of Neptune and Pluto.

How many moons we have in the generic Ooniverse system?

Exactly zero.

Well, the obsolete System Redux pseudo-randomly generates a maximum of two moons of each system's main planet in a static configuration. Additional Planets SR pseudo-randomly generates a maximum of three moons for additional planets - also in a static configuration. Having created a pseudo-dynamic solar system for the Planetary Systems, the simulation of pseudo-dynamic moons is a logical next step.

Two moon sets are implemented in Moons OXP: 2 main planet moons (Terran moons) and 2 moons of gas giant (Jovian moons). The positions of the Terran moons are calculated to simulate circular orbits (Kepler's Third law is used, but the constant of gravity is not matched exactly with the real value to simplify coding). The positions of the Jovian moons are vectors with pseudo-random magnitudes and random orientations (Oolite is not planetarium software and I have no ambitions to simulate orbital mechanics in precise detail!).

Why only two moons of Jupiter analog, not all four? Lazy coding :-) You always has the centers of three objects (here, the planet and two moons) in one plane. There is some trick in seeding of Jovian moons. Planetary Systems needs some time to place planets on calculated orbits, so to place Jovian moons correctly you need some time lag. But if you are using Planetary Compass OXP (author Thargoid), too long a time offset will prevent generated moons from being displayed on the Advanced Space Compass (ASC). It seems that the Planetary Compass completes its system scan and the generation of its navigation database before the seeding of Jovian moons, so these moons remain invisible to the ASC. This issue was fixed by reducing time lag from initial 1 s to 0.2 s.

## Conflicts and dependencies

• Due to the size of the large moons you will need the Planetary Systems OXP to use Moons.
• Distance between main planet and large moon is in the range 16...24 main planet radii, comparable with the distance to the sun in the vanilla Ooniverse. So Sun Gear OXP is obligatory too. In any case you need Sun Gear for the correct functionality of Planetary Systems.

Planetary Systems also provides an additional option - it displays a Moon Data Sheet if you are docked at a Moon Surface spaceport. See the Planetary Systems readme file for more details. Using Moons with Additional Planets SR OXP can generate logical collisions as a result of their conflicting mechanisms for moon seeding.

## Moons OXP structure

To allow easy updating all the moon textures have been repacked as a separate texture pack. Moons.oxp - core package: Latest OXZ - Version 1.1.1 - Updated 09 February 2019 Moons Texture Pack.oxp - Textures: Latest OXZ - Version 1.2.0 - Updated 28 November 2020

## Credits

• A piece of code from Additional Planets SR base 0.6 (authors: spara, Redspear, phkb) and Orbits (authors: Ebi, Kaks) is used to calculate orbits of main planet moons.
• See more detailed moon texture credits in Texture Pack Readme document.

## Installation

• Download OXZ's through the In-Game Expansions Manager
• Download OXP and unzip core package Moons and texture pack Moons Texture Pack.
Place all unzipped packages inside the Oolite/AddOns folder.
• Read notifications on my personal page to update packages individually.

## Licensing

• This OXP is released under the Creative Commons Attribution - Non-Commercial - Share Alike 3.0 license.
• You are free to use and distribute this OXP on non-commercial basis.
• Rebundling of this OXP within another distribution is permitted as long as it is unchanged.
• Any mods/derivatives of this OXP must be distributed under another names.
• The license information (either as this file or merged into a larger one) must be included in the OXP.

## Version History

• 09,02,2019 - Version 1.1.1 Converted to OXZ.
• 31.12.2018 - Version 1.1 Calculation of main planet density added.
manifest.plist added to main package and texture pack.
• 17.06.2018 - Version 1.0 Fixed error with declaration of random component of moon orbit radii.
Terran moons orbital periods redefined to more real values.
Code refactoring to provide more easy reading and to get crucial info for Moon Data Sheet page in Planetary Systems OXP.
• 09.05.2018 - Version 0.9 Code edited to satisfy OXP Standards recommendations.
• 25.10.2017 - Version 0.8 Code improvement - kill delay timer after jovian moons seeding.
• 24.05.2017 - Version 0.7 Refined problem with Jovian moons display on ASC (resetting seeding timer delay to 0.2 s).
• 17.07.2016 - Version 0.6 Every moon class divided onto 10 subclasses to provide better variability (40 variants of moons now).
All texture files repacked as separate texture pack.
• 17.01.2016 - Version 0.5 Pseudorandom orbit radii for Jovian moons implemented.
Jovian moons attributed to largest gas giant in planet database, not to largest gas giant in system!
• 12.01.2016 - Version 0.4 Pseudorandom orbit radii for Terran moons implemented.
• 28.06.2014 - Version 0.3 Moon seeding generator uses different seed. As a result moon configurations in systems changed.
• 16.05.2014 - Version 0.2 Jovian moons textures selection improved to 4 variants.
• 04.30.2014 - Version 0.1 Initial release.