Very odd Photon Cloud behaviour

Options
schmeuk
edited February 2013 in Photon Server
Hi,

We are currently testing an online multiplayer board game using Photon Cloud. We are on the final stages of testing but we encountered a very strange behaviour on networks with high latency. First of all we don't mind having high latency clients on our game, since real time performance is not important for board games.

The problem we see is the following: When one client with a high latency connection (ping to gameserver > 300ms, this is usual for a 3G network connection) creates a room, the server returns no error and the client is able to join the newly created room. However, other clients that connect to the lobby can not see this room, and therefore can't join it. This is not a temporary situation, and it doesn't get fixed by waiting. This can be reproduced as many times as we want and even with the demo application that comes bundled with the Obj-C Photon distribution (please see steps below).

Steps to Reproduce: Install the Demo application on 2 devices. Condition the network on one of them to increase the latency to the server above 300ms (on an IPhone you can do this by going to Settings ->Developer -> Network Link Conditioner). Now open the demo application and on the conditioned device create a room. On the other device (good network) try to join a random room. Most of the time it will say that there is no room to join, but the conditioned device will report that the room was created and joined successfully.

All in all the problem is as follows: For the client with a high latency connection everything looks good, but the rooms he creates can not be joined by other clients. What's curious is that he can join rooms created by other players. This is a huge problem, since we can't even detect that the client is having issues, and seems like a bug on the server.

Comments

  • Extra information: The tests were made with version 3.044 of the client SDK and connecting to both us and eu servers.
  • Extra information 2: We've tried using TCP connections and nothing changed.
  • Kaiserludi
    Options
    Hi schmeuck.

    Thanks for the detailed description.

    We will try to reproduce this issue on Monday.
  • Great, looking forward to hearing from you. Just in case, if you can't reproduce with 300ms delay just increase it a little bit more and you will see it happening.
    Have a nice weekend.

    Cheers
  • Any updates on this?
    Thanks
  • Tobias
    Options
    Stefan (Kaiserludi) is sick and didn't come in yesterday. I hope he's well soon and then will get back to you.
  • Kaiserludi
    Options
    Hi schmeuck.

    We can reproduce it and are currently trying to track down the cause of this issue.
  • Great news, thanks :)
  • Kaiserludi
    Options
    We could reproduce it in the way that you have described with a setting of 400ms (didn't try les, so maybe also with 300ms like you have done).
    However, when we have tried to reproduce it by just calling service() less often, we neded 1.000-1.500ms to reproduce it. I have nio idea, what Apple is doing under the hood, so I can't really explain, why it already happens much quicker when using iOS Network Link Conditioner settings

    Furthermore we have found the cause of the issue:
    There is a timeout setting on the serverside and if the client can't create the room on the gameserver within this time limit, then the gameserver does not report that room to the master, even then, when it gets created later. As a quickfix we have tripled the time limit.
    We will give you an update when we have actually deployt that change on the Cloud.
  • Thanks for looking into this, we are eager to test the workaround. This is a very important issue for us so we need to start testing asap.

    Cheers
  • Kaiserludi
    Options
    A colleague is aiming to deploy it tomorrow morning CET.
  • Excellent, thanks.
  • The fix is now deployed to all Photon Cloud regions.
  • We've been testing this and so far its working perfectly. Thanks for the quick turnaround.

    Cheers