Why do some people fail to get a dedicated server IP?

Hello

GameLift is really excellent. We already implemented GameLift matchmaking in our game and we are currently testing it.

However, sometime a client doesn’t get an IP address of a dedicated server from FlexMatch even though we are matched. After the ticket status is “PLACING”, the ticket status is changed to “FAILED”. Our game is currently in development but after the game is launched, we will probably have more issues about that.

  • I copied some of logs for TicketStatus that was received from Lambda and API Gateway in a client.
    [2020.01.25-00.26.02:194][343]GameLiftManager: Verbose: TicketStatus : [PLACING], IPAddress : [NotYet], Port : [0]
    [2020.01.25-00.26.04:208][444]GameLiftManager: Verbose: TicketStatus : [FAILED], IPAddress : [NotYet], Port : [0]

Game session: arn:aws:gamelift:us-west-2::gamesession/fleet-bd3000a6-a310-42a9-b2a8-ac6f5b8687d1/2654ec9e-61b5-453e-b575-f5099ac8142c
PlayerId : psess-0b346b77-72f9-4cc3-a1df-2af7957b7bb4
PlayerId : psess-240951fd-2a4b-4e79-ac25-4f819dfbc723

  • The same person owned these two PlayerIds but I have no idea when it happened.

Could you investigate why it happened?

Can you clarify what you mean by “we are matched” as you mention you see your tickets go from Placing to Failed which would indicate you aren’t matched.

If you are seeing game and player sessions being created and then the ticket move to FAILED then I would check your server stability:

  • Are you seeing crashes or unexpected exits?
  • Are your fleet metrics healthy?

Matchmaking failed can be caused state:

  • No available capacity on your fleet
  • Problems talking to your servers or queues
  • Occasionally internal GameLift errors

If your fleet appears to be healthy and has capacity for game sessions, I can ask the GameLift service team to investigate on your behalf.

“We are matched” mean that after I submitted my matchmaking to FlexMatch, I got my ticket status as “PLACING”. So I thought that there was a proper game for me to join because the FlexMatch has matched me and is in the process of placing a new game session for the match.

I already removed the fleet. So I can’t check the fleet metrics but a dedicated server in which I played my game didn’t crash. If I have the same issue, I’ll check what you mentioned.

I have a question about “PLACING” in ticket status.

PLACING * – The FlexMatch engine has matched players and is in the process of
placing a new game session for the match.*

According to the definition above, The FlexMatch matched me but could you tell me why my ticket status was changed to “FAILED” from “PLACING”?

Thank you

I have asked the GameLift service team to look at this. Hopefully they will some more information for you soon.

Hello,

For the reservation provided in the ticket, I did an investigation and found that the status went from PLACING to COMLETED. None of the tickets associated with the match went into a FAILED state, moreover every ticket had port and ip associated with it when the match was COMPLETED.

Following are the tickets in the match,
5e279c2b7723d46f34557cae5e2b8ab4b9890
5e14d35756161368ad1908f45e2b8ab956c41
5ddc75b1bafc8d0c1167a1875e2b8abdf2904
5ddc4adb92675c340d270f1e5e2b8ad0beabe
5de19939be36e06f437c24d25e2b8ad41691f

All 4 tickets went from COMPLETED to PLACING state at 00:24:53.

For the 2 concerned player sessions, I am seeing the final status as TIMEDOUT but they both do have the ip and port information.

I believe in this case Gamelift is working as expected. To better understand your issue, Can you provide me with some more information, when you say “I copied some of logs for TicketStatus that was received from Lambda and API Gateway in a client.” Can you specifically mention which gamelift apis are being called to get the status and can you share the status you got for them along with timestamps?

A client got the ticket status through API Gateway and the API Gateway calls a function in Lambda service. The function in the Lambda service calls describe_matchmaking() to get a ticket status in { “TicketList” : [ { “Status” : [The Value] } ] }. The client finally write the information to a file.

These are the logs in the file. ( The time in this log is not UTC)
[2020.01.25-00.26.02:194][343]GameLiftManager: Verbose: TicketStatus : [PLACING], IPAddress : [NotYet], Port : [0]
[2020.01.25-00.26.04:208][444]GameLiftManager: Verbose: TicketStatus : [FAILED], IPAddress : [NotYet], Port : [0]

2 seconds after a client got “PLACING” as its ticket status, the ticket status was changed to “FAILED” but as you mentioned, the 2 player sessions had timed out because they didn’t get an ip address of a dedicated server from FlexMatch even though status of their ticket was “PLACING”. After 2 seconds, their ticket status was suddenly changed to “FAILED”. So they couldn’t join the dedicated server within 1 min. So the ticket status was finally “TIMED OUT”.

Unfortunately, I deleted the log file. If I have the same situation, I’ll keep the log file.

Thank you very much for investigating my problem.