I’m looking for a detailed explanation of the QoS channels used by NetworkBehaviours. Information I can use to determine which channels to use for what purpose. The only resources I’ve been able to find so far are these terse, unhelpful descriptions in the scripting reference, and this blog post which is better, but not by much.
Right now it’s very difficult to get a sense for what each one actually does or how they should be used. Even irrespective of the way the individual channels work, I feel like I need a lot more information about the way the system works before I can make any intelligent decisions about how to use it.
For example, the sequenced types will preserve the order of messages, and state update “will force drop messages which are older than sending/receiving”, but is that relative to the entire channel, or to a specific NetworkBehaviour? Maybe to a NetworkIdentity? Individual SyncVars or commands? If I have two separate objects send their position on the same channel at the same time, would State Update only update one of them? I’m not even sure what the scope of the system is, really. Is it only for SyncVars, or does it also affect Commands and ClientRPCs? If I have two different channels with the same QoS setting, do they function separately?
I’m sure most of this stuff is obvious to an experienced network programmer, but isn’t the HLAPI supposed to be a viable solution for the rest of us? It’s especially frustrating as I can’t just test these out by myself to try to get a sense for how they work due to the way local connections and network simulation are broken right now.
Commands and RPCs have parameters that allow you to assign specific channels to them on a case-by-case basis.
…and that’s really the most I can answer from your questions. I’ve been using Unet for a couple months now, and man some of it is opaque. The QoS channels are basically the biggest offender here. StateUpdate seems to discard all but the latest messages, but on random occasions (about 1 in 100 or so) the receiver will buffer a couple of them and then process them in a single frame. That said, I’m not familiar with what you mean when you say the local connections/network sim are broken. I don’t use the network simulator anymore (since it WAS broken last time I used it), but I don’t see why it would be required if you want to do some really in-depth tests of the QoS channels.
Definitely will be following this to see if anything happens.
I just meant that if I had some way of simulating something approximating real word conditions then I could at least try out a bunch of different settings and get a feel for how they work. I’m not talking about doing an in-depth scientific test, because again, I’m not a network professional.