Network Visibility: Per-Connection Object Culling with INetworkVisible
Network Visibility controls whether a networked object should be visible (receive ongoing network updates) for a specific player. By default, all networked objects always transmit to all connections.
Always Transmit
Every networked object has AlwaysTransmit = true by default. When true, the object never gets culled. Disable it for performance benefits in larger games.
INetworkVisible Interface
Implement Component.INetworkVisible on the root GameObject to control visibility per-connection:
public class MyVisibilityComponent : Component, INetworkVisible
{
public bool IsVisibleToConnection( Connection connection, in BBox worldBounds )
{
// Return true if visible to this connection, false to cull
return true;
}
}Only the owner of a networked object decides visibility for each connection. Disable AlwaysTransmit to enable this behaviour.
Hammer PVS Fallback
If no INetworkVisible component exists and the map is a Hammer map with VIS compiled, the engine automatically uses PVS (Potentially Visible Set) for visibility.
What Happens When Culled
When an object is not visible to a connection:
- Stops sending: Sync Var updates, Transform updates
- Still occurs: Object still spawns for the client, becomes Disabled locally while hidden, RPCs are still delivered