Doug Binks - 14 Jan 2014
The post follows on from the earlier post on Octree Streaming. You should be able to read them out of order, but you get cake if you read part 1 first.
Our latest tech update video shows off players moving through the world shortly after joining the game - the video starts only a few seconds after where the last one ends, so about 30 seconds after loading. At this point large sections of the world are still being streamed to clients, but the prioritization of nearby regions ensures detail is present close to the player.
You should be able to see that when moving quickly (the debug movement code has a hyperspeed toggle) the streaming appears to accelerate to keep pace. This is actually a neat simple side effect of the distance prioritization scheme combined with the LOD rendering / request scheme. When the player is moving slowly or is stationary, the streaming system begins to expand the streamed volume, but as the request distance from the player grows, the level of detail requested gets lower. This helps to ensure distant scenery gradually becomes sharper, and in later parts of the video it's clear how having a large view distance helps spatial awareness. When the player accelerates forwards, the streaming system prioritizes the newly nearby regions which require a high level of detail.
Avoyd's in game system (as opposed to its current debug/edit mode) will have a combination of movement modes. I'll be bringing back - with improvements - the smooth wall movement from the first, and adding jump and probably two flight modes. More on these later, but for this tech update the important factor is that some of these modes are close to inertialess, so the player can turn around and change direction rapidly. Additionally, all modes will allow the player to rotate rapidly. This means the streaming and LOD scheme is designed to only take into account player position, and not view direction or velocity.
At 0:26 you'll see a side effect of the current LOD and streaming method: at top-mid screen one of the other client's avatar disappears from view as they enter a volume which does not have sufficient detail on the current client. This isn't too bad a trade off, especially as it happens at a reasonable distance, and it's probably better than having distance entities visible when they should be hidden.