Chris Roberts on Engineering Star Citizen & Zone Optimization - Gamers Nexus

That's a lot of data packed into a dense space, but the logic isn't hard to follow once read carefully. The zone system, as we've already discussed, allows containers of data to be shuffled at a very top-level, so the entirety of the data set doesn't have to be checked and moved as would be done in a more normal octree deployment. This reduces load on the system and, more critically for Star Citizen, the network and servers. Reducing the number of moving data to a smaller subset of pointers benefits the load potential (ultimately, player count) of each instance within the game.

An octree works well with more “normal” types of games, like an FPS, where the frame of reference is a large group of fixed objects (buildings, map elements, terrain features) with a very small list of movable objects (player characters, bullets). Octrees tell the renderer what needs to be drawn to the camera by culling-out data which is unseen to the player's point-of-view, working efficiently to minimize render calls and bandwidth consumption in the pipeline.

“So [the zone system] allows us to do things like planetary orbits, ships flying around with lots of stuff inside, and not worry about moving them around and fixing their spatial data structure. It's much more useful for our purposes, but it's not normally so useful in a 3D game. Usually, in a 3D game, the structure itself is fixed – walking around a map – the plants, the buildings, they aren't moving. That's fine, because the octree allows you to determine which plants and what part of the building you're able to see really quickly, and the only things moving through them are your character or a bullet or something like that.

“For a typical shooter, most engines use an octree for [the] render pipeline to determine what you see and what you won't see. For us, it's not that suitable – we'd be doing a bunch of work we'd rather not be doing. Even though octrees are fairly efficient at sorting data and moving data around, since you're generally just moving pointers around – when it's a big enough space and big enough data – it does actually take an appreciable time. You can always think of a big spaceship or a planet as a mini-FPS level [in what we do], so it allows for movement of these things without having to have the challenges of a fixed spatial data structure. We can sort of scale the data structure inside each one of the zones to be appropriate for the data we have inside of it.”

To learn more about this system – although it has advanced in development – we'd recommend watching our previous interview specifically on zoning. Find that below this block.

If you like this type of content, you can help us in our production either directly, via Patreon, or via interview suggestions. If there are any game developers you'd like us to speak to, tweet us your suggestions and we'll try to arrange a discussion!

/r/starcitizen Thread Parent Link - youtube.com