Hi devs!
So i remember back from the letter from the chairman from last year, and this weekends server meshing demo that the servers can be set up to run an entity zone, how is that different from the object containers?
For the purposes of that demo there wasn’t really an difference. To explain I’ll need to revisit some old ground.
At its simplest, an object container is a designer created collection of entities that are always streamed together. The designer sets various properties on the entities and exports the object container from our editor tool. These properties include the type of an entity, how it connects to other entities in the OC, physical properties, collision mesh, and information about various asset types such as geometry, materials, animation, audio and so on. One of the properties an entity has is whether it “hosts” a zone or not. One final thing to know about OCs is that they each have a single root entity that contains all the other entities and assets in the OC. That entity is literally the OC entity.
A zone is a physical space in which other entities can be present and move around without being physically attached to the “zone host” entity. A well-known fact about our zone system is that zones can be nested inside other zones.
Recap done :slightly_smiling_face:
The missing bit of information is that when our designers need to add a zone they will often add the zone host property to the OC entity itself. Designers aren’t forced to build things this way but it’s such a common pattern that devs will often find themselves using the terms zone and OC almost interchangeably as a kind of shorthand. The problem with doing a presentation is that it’s hard not to slip into using a less precise shorthand that we otherwise use every day without thinking about it.
In that demo there were 3 OCs corresponding to the purple, green, and red areas in the map. The root entity for each of those OCs was also a zone host. So 3 OCs each with their own zone. We assigned authority over each OC to a different server. When an entity crossed from one zone to another it became a child of a different zone host from a different OC. Because the entity was now authoritative on a different server to the zone it was in that triggered an authority transition so it became authoritative on the same server. But it doesn’t have to work that way. We just chose to set it up that way for the demo to make things a little easier to visualize and explain.