Networking and metadata
In single player your server half runs inside the game, against the same rules, so a resource behaves the same way in both modes.
Custom events
Section titled “Custom events”A client resource sends with EmitToServer (server handlers only), EmitToAll (every other client and the server)
or EmitTo(entity) (the client owning a player or vehicle, plus the server). A server resource broadcasts with
EmitToAll or targets one entity’s owner with EmitTo. Receive events with On(name, handler).
Events travel inside OMX’s own multiplayer protocol and its rate limits; a resource never defines a packet type. The
server checks event namespaces, who sent each event, and its target. Sending needs network.events.
Typed payloads
Section titled “Typed payloads”The typed helpers send one value, serialised into the closed NetworkValue
format:
// ClientNetwork.EmitToServer("register", new RegisterDriver("76"));Network.On<DutyAssignment>("assignment", assignment => Show(assignment));
// Server: the extra argument resolves the sending player.Network.On<RegisterDriver>("register", (player, request) => Register(player, request), Players.Get);A raw event carries at most 16 arguments. Strings and byte arrays are limited to 4096 characters or bytes each.
Metadata
Section titled “Metadata”Every player and vehicle has key/value metadata (entity.Meta) in three scopes:
| Scope | Who owns it | Who receives it |
|---|---|---|
Local |
This side | Nobody. Changes apply immediately. |
Synced |
The authority | Every client, reliably, including players who join later. |
StreamSynced |
The authority | The entity’s owner and clients whose vehicle is within the server’s metadataStreamingRange. |
var route = new MetadataKey<RouteDefinition>("route");vehicle.Meta.Set(route, assignment, MetadataScope.StreamSynced);A server resource writes replicated metadata on any entity. A client resource can only ask for changes on its own
player or vehicle; the change appears, and Meta.Changed fires, once the authority accepts it. A stream-synced key
appears and disappears for a client as it crosses the streaming range. Replicated writes need network.metadata.
Namespaces
Section titled “Namespaces”Keys and event names have the form resource-id:name. Your own names can be written short (route); OMX adds your
resource id. Any resource can read every key, but only writes within its own namespace. On a server,
AllowedResources lists which namespaces clients may use.
