Skip to content

Streaming

Streaming limits replicated entities to players near the same world region. The server partitions space into square shards controlled by shard_size and recomputes visibility every streaming_tick_rate_ms.

streaming_visibility_radius is measured in shards, not GTA units. Increasing it expands the neighborhood around every player and can substantially increase network and client entity load.

Stream lifecycle

When an entity becomes visible, the client receives a state snapshot and emits the corresponding *StreamIn event. Live authoritative changes follow while it remains visible. On departure, *StreamOut is emitted and the local native representation may be destroyed.

Client wrappers distinguish two identifiers:

  • id is a client-local wrapper identifier and can be reused.
  • remoteId is the server/network entity identifier used by generic replicated metadata APIs.

Players have a single network identifier exposed as id. A remote player's handle is 0 while the player is known but not currently streamed.

Dimensions are an additional visibility boundary. Distance alone never streams entities across dimensions.

VIMP developer documentation