menu_bookDocumentation

Network Visibility: Per-Connection Object Culling with INetworkVisible

calendar_today May 20, 2026 schedule ~1 min read person PatrickJr verified 50

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:

CSHARP
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

Was this helpful?