Struggling to get past the QueueIncomingUnreliableWarning disconnect

Options
donnysobonny
edited September 2016 in Photon Server
Hey guys,

So I'm pretty deep into a silly little project right now, and the finish line is in sight, however I've come across a stumbling block and I'm really struggling to get past it.

So a little backstory:
- i have a custom photon server sdk application back-end
- I'm using unity, and the unity sdks, with a custom client-side setup (designed to work with the custom server-side stuff)
- the server runs a headless build of the game, which connects to the server locally to act as the "master peer". The master peer functions as the authoritive layer
- I'm using a simple load-balancing setup, where the master server manages a set of sub-servers, and each sub-server hosts one single game that players can play on

The game itself is fairly fast-paced, so the minimum I've managed to get send frequencies down to is around about an update every 0.03 seconds. So this means, that for every player on the server, there's the potential that information will be sent over the network every 0.03 seconds, if they are actively doing something. Obviously I've taken care of delta compression and everything else that I can think of to lower the size of the messages being sent, however if I go any higher than updates every 0.03 seconds, the game is suddenly too latent to be playable.

So as you can imagine, my biggest problem so far has been keeping those messages small, and aiming for a fairly small number of players per server. I feel like I've managed to do this fairly well though. With 50-100 players (although right now the players are being controlled by the server for testing) I'm seeing around 20 kbps going outbound (the outbound messages are purposely low in this setup anyways) and incoming peaks at around 100 kbps. Am I wrong to think this is a reasonable amount so far?


Moving on to my main issue, although everything seems to be going well so far, I am constantly struggling with a QueueIncomingUnreliableWarning disconnect. Reading through related forum posts, and your api documentation (which was the only place I could find official info on this), it's fairly clear that this is caused due to there being too many messages incoming to the client. However, I'm really struggling to see how or why this is happening, or how to get past it. I am calling Service both in the Update AND LateUpdate loop (to send/receive both early and late in the frame), and I have tried increasing the PhotonPeer.WarningSize but so far I've had no luck.

So a few questions to hopefully get me on the right track:
- what exactly causes the QueueIncomingUnreliableWarning disconnect?
- what sort of an affect would increasing the WarningSize have, and should I avoid doing this?
- other than "sending less" and "dispatching more" (i'm not sure either is possible in this scenario), what other ways are there to solve this issue?
- how can I go about debugging issues surrounding this disconnect, to try and get to the route of the problem?

As always, your help would be greatly appreciated