Procedural Terrain Generation on a Map the Scale of the Milky Way

Hey Everyone

This question isn’t so much technical and writing code, but more about finding out if it is possible and if I should reign in my ambition or try and find a different engine.

To fully explain the sort of thing I need to happen in my game I will give you a more specific description of what I intend to do if I find it possible, and attempt anyway if found impossible with current technology.

Picture a planet in space, with procedurally generated terrain. the scale of which from anywhere between a tenth to the scale of earth, now picture the solar system around it. The individual asteroids on trajectories independant of eachother and changable bassed on events in the game. the planets in the system which are each also the scale of a tenth to the full scale of earth, the tree’s the flora, the fauna and the fully customisable structures to be built. Now picture that incredibly detailed solar system with the fps and RTS pespectives available at a moments notice, in a galaxy the size of the milky way. The gigantic space battles that will take place between rivalling powers, the believable characters with ever changing and evolving stories. the possible billions of charactwers you can become at a moments notice.

Now, I ask you, if done correctly with the map being generated in a supercomputer if needed and having players play on the same map, is this possible with Unity or any code out there even? or do I need to either scale back my vision or wait 20 years?

The terrain generation, which seems to be your main technical worry, is not too difficult.

As long as you start with a set seed for the random number generator, it is very possible to generate the same random world/universe for everyone (this is how Elite and Daggerfall worked; I’m sure others have used it too). That doesn’t mean the areas would be interesting though. Locations that are hand-crafted by skilled artists will be more interesting than any procedurally generated environments.

However, “believable characters”, which you seem to skip over, will be incredibly difficult/impossible to automate on any engine. AI is not a solved problem, unless you mean to replace them with people. However, since the most-played online games (with massive advertising budgets and/or that went viral) have populations in the 10s of millions, getting a player-base big enough to feasibly populate multiple planets of that size is… optimistic, to say the least!

Also note that having hundreds of players in the same area in an MMO is very difficult (on any engine). Not only do you have the memory constraints of having all different armours/clothes/ships/etc, you also have the very real problem of overloaded servers (EVE “slows down time” when a region of space becomes overpopulated (1k+ ships or so I think), and they have crazy servers with more memory than a lot of computers have storage.

Another technical problem you might have problems with is saving what the player has done to the environment. If I recall correctly, a lot of problems with Skyrim came from them saving too much of the players interations with the environment to the point that the save files became too big to actually load. If you are going to make a multiplayer environment, multiply this problem by the number of players.

If you are an RTS fan who just wants to blow planets up, you might want to look at Planetary Annihilation.

You could probably create a much more believable universe by doing a few locations in high detail than lots of dull locations. You might be able to make a cool game by mixing the two though. Vast wildernesses procedurally generated with towns and sometimes camps/dungeons you make yourself. I think a few games take this approach, but I can’t remember names. :confused:

I think you may need to think about what you really want to do. Unless you have a major budget, or plans to get one, it might be better to at least pick a genre to focus on. Its usually better to get the core game right (which requires knowing what the “core” is) than to do lots of things badly.

Generate the train out in separate saved databases. You have won database file for sector-00, sector-01, sector-10 sector-11, excetera excetera. For your Galaxy View which at Maxim out the game will only read star positions and Colour and any nebula information generating your view of the Galaxy. Then if you zoom in it will dump the sectors that you cannot see. Further zooming in we’ll start loading out of the database information about the individual star systems around those Stars. So at that point the most you would have loaded would be four sectors and any of the Stars within view of the camera. Possibly also loading information about stars within a camera view that is greater then the one you render basically pre-loading the Stars so if you move your camera you don’t have them taking time to load in. Then you would probably have a separate file 4 the planets that would have all of your train information for that planet. As you download the information for a planet you would be able to dump the Galaxy information. That way you’re not trying to search through a file for relevant information that is 20 gigs Stellar data. With the asteroids individual position and orbit that would just be XY coordinates at time frame zero with direction and speed. Then when you load the data divide current clock by time of orbital period then the remainder is where you place the object (asteroid/planet). Now if somebody altars and asteroids trajectory that would update the the database for that object. In my opinion this would give you the ability to have a very large system multiple people loading in and have the least impact on a system. I was hoping to be able to do something similar. If anybody reading this has any better ideas please let me know.