Received unknown status code: QueueIncomingUnreliableWarning

Options
Hello!

I get
Received unknown status code: QueueIncomingUnreliableWarning
UnityEngine.Debug:LogError(Object)
PhotonHandler:DebugReturn(DebugLevel, String) (at Assets/Plugins/PhotonHandler.cs:82)
NetworkingPeer:DebugReturn(DebugLevel, String) (at Assets/Plugins/NetworkingPeer.cs:669)
NetworkingPeer:OnStatusChanged(StatusCode) (at Assets/Plugins/NetworkingPeer.cs:963)
ExitGames.Client.Photon.EnetPeer:queueIncomingCommand(NCommand)
ExitGames.Client.Photon.EnetPeer:executeCommand(NCommand)
ExitGames.Client.Photon.<>c__DisplayClass13:<receiveIncomingCommands>b__11()
ExitGames.Client.Photon.EnetPeer:DispatchIncomingCommands()
ExitGames.Client.Photon.PhotonPeer:DispatchIncomingCommands()
PhotonHandler:Update() (at Assets/Plugins/PhotonHandler.cs:48)
from time to time.

What does this message mean?

thanks,
Ilja.

Comments

  • Boris
    Options
    Incoming messages are dispatched in order.
    If the client is waiting for a reliable message other messages are queued and you get a warning once a certain queue length is reached (property PhotonPeer.WarningSize).

    You might wonder why you get a warning for unreliable messages because of a missing reliable message.
    Example: After joining a room you receive unreliable position updates. The client could receive the position updates before the join response if the client lib did not wait for the previous reliable message (the response) to arrive. This could break your game logic.
    You can still achieve this behavior by sending your unreliable data in a different channel though (see PhotonPeer.ChannelCount and the channelId parameter of the OpCustom method). I stated above that "Incoming messages are dispatched in order" - correct is: "Incoming messages of the same channel are dispatched in order".

    To avoid such warnings you can try one or more of the following options:
    - send less operation/events (combining multiple events/operations into one or reduce send frequency)
    - send less messages by increasing DataSendingDelayMilliseconds, AckSendingDelayMilliseconds in the server config
    - lower the send rate by reducing PerPeerMaxReliableDataInTransit and/or PerPeerTransmitRateLimitKBSec
    - send unreliable messages in a different channel
    - increase the buffer for queued messages (PhotonPeer.WarningSize)
  • The previous error happened when I sent int instead of byte
    function OnPhotonSerializeView(stream : PhotonStream, info : PhotonMessageInfo)
    {
    if (stream.isWriting)
    {
    var b: byte = keyState;
    stream.SendNext(b);
    ///////////////////////////////
  • Boris
    Options
    This is just a warning, no error.
    Optimizing the size of the data you send is another good solution.
  • Leepo
    Options
    I experienced the same. Looks like we should look into this, I expected to be able to send more data before warnings like this would popup.
  • Sorry, this error happens again (it seems I didn't fix it the previous time).
  • When I receive the QueueIncomingUnreliableWarning, how can I flush out the queued incoming commands so that my application will still receive the most current commands. ?
  • Tobias
    Options
    The latest DotNet SDK allows you to keep only reliable commands and skip anything but the last X unreliable commands.
    This can be done to get up to date a bit faster.
    Use: PhotonPeer.LimitOfUnreliableCommands
  • Paradoks
    Options
    Hi,
    i am getting this ennoying warning too.
    I looked into PhotonPeer.LimitOfUnreliableCommands, but could not figure out how to use it effectively:

    - do you set up the limit to a lesser number at start?
    - or can you "flush" the queued messages ever x seconds by using PhotonNetwork.networkingPeer.DispatchIncomingCommands(true);?

    how do you use it ?
  • Tobias
    Options
    The LimitOfUnreliableCommands will discard unreliable messages when PUN calls DispatchIncomingCommands. It makes sure you don't execute thousands of commands of which most are outdated anyways. The newest unreliable commands usually replace the older ones, so it's faster to drop some.

    PUN will call DispatchIncomingCommands until the received commands are all executed and the queues are empty. PUN does not dispatch every single frame, so if you receive a lot of messages in a short time, you might run into a QueueIncomingUnreliableWarning. It's not an error but a warning. You might be sending some more than the receiving clients can execute.
    You should think about what you send and how often.