Timeline
The Start

Azimuth started as a simple concept, to make a model of our solar system using the physics of in-game forces. Using forces in this way worked for a while but as time went on the errors built up. Until the point the system would fall apart.
A compromise had to be made, at first an attempt at using a course correction was used but later scraped, as it was decided that it was a messy method of fixing the issue. Instead the planetary orbits are calculated using the physical equations that govern real orbits. The positive of using this method is that it allows for real-time orbits, so even when the game is closed, the next time the game is opened up the orbits will have moved by the realistic amount from when the game closed.
Building a solar system
With the orbits of the planets and moons now in place and working, the next challenge would to be to create the realistic distances. The first attempt was to put the planets and moons at their realistic distances, but due to the size of the objects this placed most of them outside the computers range.
The second attempt instead shrunk the entire system within the limits of the computer. This then brought up the issue of numbers being too small, as the player would be tiny and the computer made approximations that caused massive issues in movement.
To solve these problems the player is set at the origin of the scene and all the solar system is moved around them, but once near an object that object becomes the origin allowing for more accurate calculations.
Having created our solar system, the next change would be to generate procedural solar systems. This was relatively easy to implement as it only required randomly generating some numbers and feeding them into the orbital equations.
Later some constraints would be added to create a realistic distribution of planet types and moons.

Travelling the stars

Having made procedural solar systems the next step would be a way to explore new systems within the game. The logical method being to implement a galactic map that can be used to warp between systems. Each star on the map corresponds to a unique location in the game, this location is then used as the seed for that stars solar system.
Having attempted to keep the solar system as physically accurate as possible, it was decided that the distribution of stars on the galactic map resemble the shape of a spiral galaxy. Using more equations stars can be spread in the map in the shape of a galaxy.
Next the star types would need to be distributed in a manor similar to a real galaxy with older yellow stars in the core leading to younger blue stars as you go outwards.
Enemies
For Azimuth to have game play, enemies are needed. The idea for the game is to command a fleet of fighters, while also being able to directly control any individual fighter, in the attempt to conquer the galaxy.
First step was to create an AI that can fly both the enemy and friendly starships. The AI is currently very basic but has the capability to follow and attack an enemy, they all have a home base which when they have no enemies in range they will always fly back to and never go too far away from.
This home location can be changed in game, this feature will later be used as a method to move the fighters into the players desired positions for attack.

Procedural planets

To make explorations of the solar systems more enjoyable and worth while, planets that are different from one another is needed. To achieve this, 3D perlin noise is used to create randomness which can be done in layers at different scales and frequencies to create realistic looking planets and moons.
A method of increasing resolution is needed as the player gets closer while also localising the loaded area, keeping the number of vertices low. This allows the computer to manage high levels of detail without overloading the computer with vertices.