Transmitting component updates unreliably (“quality of service”)
In order to prevent a worker becoming overloaded, you can choose to transmit some component updates unreliably. This means they may be dropped if the network is congested, giving more bandwidth to messages that can’t be dropped.
You can configure which component updates are transmitted reliably and unreliably in the bridge settings of a worker configuration.
When will an update be dropped?
A component update will be dropped (not sent to the worker) if the worker is not reading messages from the network quickly enough. This can happen if the worker is overloaded (it has too much work to do and is not able to keep up with processing all the updates it’s receiving) or if the network is overloaded.
Why would I want to enable this?
If all component updates are transmitted reliably, your clients or UnityWorkers may not be able to keep up with the rate of component updates being sent by SpatialOS. You might see this causing latency to increase in the system, leading to an unplayable game or (in extreme cases) memory leaks on a server which could cause the entire deployment to crash.
Which components should I enable unreliable transmission for?
You should enable unreliable transmission for components that are updated frequently, since these updates will be making up a good chunk of the network traffic and losing an update to one of these components should not cause the component to become very stale. You can find out which components are updated most often by looking at the Entities Grafana Dashboard.