Here is a link of Sean Murray talking about the game No Man's Sky:
https://www.youtube.com/watch?v=h-kifCYToAU
Starting at around 4:00 in the video, he is talking about how the environment is procedurally generated.
At first, I thought it meant that they ran some incredibly complex algorithms to generate the entire universe and then stored it.
But as he explains, the world doesn't really exist as stored 3d data and what have you, but it really is just the output of a very complex function that takes your position (3d coordinates, and I guess time as well) as input and always generates the exact same environment around you based on that, no matter where you are in this gigantic universe.
This is incredibly smart and interesting but there are a few things that I don't understand:
How can you interact with the environment and have any effect on it if it is the result of a deterministic function? You would have to "update" that function every time you interact, don't you?
How can multiple players interact with the environment and see the same changes?
How can only a single player blow out a piece of rock and then expect it to stay blown apart? Does it change the "world-generating function" ?
Answer
How can you interact with the environment and have any effect on it if it is the result of a deterministic function? You would have to "update" that function every time you interact, don't you?
It's a simple enough concept to create any unmodified point in space / event in time / combination of these using a fixed function. The downside is that when any player modifies the procedurally-generated world at a given place / point in time, you have to store (the results of) this change -- potentially across clients if a multi-client environment. Because of custom modifications, the function alone is now no longer sufficient to produce that given point in space / time... instead you must first generate it from that function, and then apply any deltas that players have created at that point in time/space.
I suspect that anyone who was able to change this simple but apparently logically-immutable fact could make a lot of money indeed and the knock-on effects of this would run quite outside of just developing virtual worlds, as this idea runs deep into the heart of both compression and cryptography.
How can multiple players interact with the environment and see the same changes?
The deltas must be sent. The function alone cannot produce player-made changes on another player's machine, so the only way to get that information across is to send it.
How can only a single player blow out a piece of rock and then expect it to stay blown apart? Does it change the "world-generating function"?
No (as noted above).
deterministic or not?
Procedural generation should, by default, be considered to be an inherently deterministic concept as without being so, you can see how the whole approach falls apart.
No comments:
Post a Comment