I love this!! Especially the art style. Can you explain how you rendered the stars? Like the ones that dot the sky, not the ones you can visit
Thank you so much for your kind words! I'm glad you like the art style, it's kind of half the tech in the game :p
As for the dot-stars, technically you are visiting individual stars that dot the sky, but there's some trickery going on with separate scales for solar systems and the starfield as a whole. With a different interface, you would certainly be able to visit any one of those dots and get a unique and deterministic solar system :)
I render 8×8×8 "blocks" or octants each with 4096 stars;
An octant is given a seed based on its integer position in the galaxy (one octant unit = 256 unity units).
This octant seed is then used to hash out three coordinates for each of the 4096 stars, roughly like
pos = uint3(hash(i*3+0,seed), hash(i*3+1,seed), hash(i*3+2,seed))
The hash functions at the core of the game all support seeds for the hash as well, meaning each seed gives you another 4 billion hash values. It's not the highest quality hash, but certainly higher quality than causing any visible structure to the starfield generation~
Each dot-star's position is then used in a 3D hash function in the same fashion to generate each solar system as you travel to that star.
The 8×8×8 grid of octants each have positions and vertices ranging from (0,0,0) to (1,1,1), and I simply scale the entire starfield by 256 at the end to throw the stars faaar away.
Finally, the entire starfield is kinda parented to the player in such a way that when the player moves right, the starfield moves with them - avoiding the parallax that would give away their real distance of maybe a few dozen metres.
(Note: the 1D hash function's seed parameter is not exactly great, so if I don't vary the value as well, structure will emerge. The 3D hash function is great with any seed and any value, though :)