Hey everyone. Thanks for reading my question. I have been looking all over google and on here and I can’t seem to find anywhere that can tell me what the different “Observe options” mean in the PhotonView script. I think I get the basics, but what is really going on under the hood? The 4 options are Off, Reliable Delta Compressed, Unreliable, and Unreliable On Change.
That page has been removed but the Wayback Machine reports that it used to say:
Reliable Delta Compressed
Reliable Delta Compressed mode will
automatically compare the data that
was last received by the client to the
current state. If no data has changed
since the last update then no data
will be sent. However, the data will
be compared on a per property basis.
For example, if the Transform’s
position has changed but its rotation
has not then only the position will be
sent across the network. Bandwidth is
saved by transmitting only the changed
data.
Unity will also ensure that every UDP
packet arrives reliably by resending
it until receipt is determined. This
means that if a packet is dropped, any
packets sent later will not be applied
until the dropped packet is re-sent
and received. Until then, all later
packets will be kept waiting in a
buffer.
Unreliable
In Unreliable mode, Unity will send
packets without checking that they
have been received. This means that it
doesn’t know which information has
been received and so it is not safe to
send only the changed data - the whole
state will be sent with each update.
Deciding which method to use
The Network layer uses UDP, which is
an unreliable, unordered protocol but
it can used to send ordered packets
reliably, just like TCP does. To do
this, Unity internally uses ACKs and
NACKs to control packet transmission,
ensuring no packets are dropped. The
downside to using reliable ordered
packets is that if a packet is dropped
or delayed, everything stops until
that packet has arrived safely. This
can cause transmission delays where
there is significant network lag.
Unreliable transmission is useful when
you know that data will change every
frame anyway. For example, in a racing
game, you can practically rely that
the player’s car is always moving, so
the effects of a missed packet will
soon be fixed by the next one.
In general, you should use Unreliable
sending where quick, frequent updates
are more important than missed
packets. Conversely, when data doesn’t
change so frequently, you can use
reliable delta compression to save
bandwidth.