Continuing a conversation about old new proc gen from a screenshot thread here:
Many ask, why don’t HG let the old planets stay old and regenerate only untouched planets? I’m no expert, so someone correct me if I’m wrong.
As I understood it, proc gen is like math formulae. When I calculate the area (a=h ×w) of a 3×4 square here, and you calculate it over there, we will arrive at the same result, as long as both of us put 3 and 4 into the same formula. All blazillion rectangle areas in the world can be calculated reliably by anyone with the same one tiny formula.
Similarly, there are also 3D formulae describing hilly shapes and pseudorandom distributions and gradients and much more. The formulae include some variables for which colour/size/shape to choose. E.g. the colour variable expects a number from 1-16, then 1,2 makes the tree red, 3,4 orange, 5,6 yellow, and so on. (Oversimplified.)
The game uses these formulae to draw everything, and as long as the game puts in the same numbers into the variables, the result (the hills and colours and number of birds and the tree distributions and …) will be the same, whether it’s being calculated for a player here or there. It doesn’t even matter if they are offline. “3 and 4 are always orange.”
The easiest consistent seed numbers to use as variables are presumably the coordinates of a planet (plus galaxy?). So e.g. to choose a planet’s tree colour, they take the 7th digit of the x coordinate. (Very oversimplified.)
(And there is likely even a formula that determines the seemingly random distribution of stars within a galaxy, so that is also the same for each player, which probably uses the galaxy numbers (1-255?) as proc gen seed variable. Just guessing.)
And everytime HG adds more shapes, the formulae stay, but some old colours/shapes get replaced by new options. Suddenly, only choice 3 is orange and 4 is a new shade of pink. So half the things that were orange are pink after an update - it’s still using the same formula, just the list which number chooses which part/colour has shifted.
So if we say, “just let the old planets stay old”, what does that mean?
HG would need a list of all old planets that have any customisations. Then in all formulae, they would need to introduce exceptions: if: planet is on list of old planets, then: use formula with old choice ranges, else: use formula with new choice ranges.
Technically possible, but probably very annoying to maintain, downloading a new list every minute? The main advantage of proc gen is that it represents blazillion planets in a very compact format that works offline. Adding exceptions to that defeats its purpose.
Am I understanding this system correctly?