FlexMatch - OnUpdateGameSession never called

My server is never receiving the OnUpdateGameSession callback/event.

My server receives the OnStartGameSession event, and successfully creates a backfill ticket using StartMatchBackfill(). FlexMatch is then able to match an incoming player to the server, and the server verifies the new player using AcceptPlayerSession(). The problem is the server is never sent an updated GameSession through OnUpdateGameSession!

The server SDK does not include a DescribeMatchmaking function (unlike the client SDK) so I cannot even manually poll the status of my ticket. The server has no way of knowing the status of its backfill ticket!

Why is this happening, and can it be resolved?

Here are my server logs. “Player 1” is from the initial matchmaking and “Player 2” is matched using the backfill ticket.

> Received GameSession creation request.
> Activated game session.
> Starting match backfill.
> GameSessionArn: arn:aws:gamelift:us-east-1::gamesession/fleet-d9218d21-2e64-4cd3-bfda-43bd0aa78057/1d85b6fe-2f67-4ae4-aa36-b6f37c66c7e9
> MatchmakingConfigurationArn: arn:aws:gamelift:us-east-1:190426669038:matchmakingconfiguration/explosio
> ticketId: c1d7e4c9-a5c0-474d-bbec-1b6d4ff8c6f1
> GameLiftServerAPI.StartMatchBackfill() succeeded.
> Received JoinGameMessage from connectionId 1
> New Player. Nickname: Player 1
> Accepting connection!
> Received JoinGameMessage from connectionId 2
> New Player. Nickname: Player 2
> Accepting connection!

And here is my relevant source code. Debug.Log(“Received GameSession update”… really is the first thing in my handler and it is not executing. The other callbacks (start, health, etc) work fine.

    void Start()
{
var initSdkOutcome = GameLiftServerAPI.InitSDK();
if (!initSdkOutcome.Success) { /* ... */ }
ProcessParameters processParameters = new ProcessParameters(
(gameSession) =>
{
Debug.Log("Received GameSession creation request.");
var activateGameSessionOutcome = GameLiftServerAPI.ActivateGameSession();
if (!activateGameSessionOutcome.Success) { /* ... */ }
Debug.Log("Activated game session.");
/* ... */
},
(updateGameSession) =>
{
Debug.Log("Received GameSession update. Reason: " +
updateGameSession.UpdateReason.ToString());
/* ... */
},
() => { /* ... */ },
() => true,
port,
new LogParameters(new List<string> { "/local/game/log.txt" }));
var processReadyOutcome = GameLiftServerAPI.ProcessReady(processParameters);
if (!processReadyOutcome.Success) { /* ... */ }
Debug.Log("GameLiftServerAPI.ProcessReady() succeeded!");
}
void FixedUpdate()
{
/* ... */
if (shouldBackfill)
{
Debug.Log("Starting match backfill.");
Debug.Log("GameSessionArn: " + gameSessionArn);
Debug.Log("MatchmakingConfigurationArn: " + matchmakingConfigurationArn);
var ticketId = Guid.NewGuid().ToString();
Debug.Log("ticketId: " + ticketId);
var startMatchBackfillOutcome = GameLiftServerAPI.StartMatchBackfill(
new StartMatchBackfillRequest { /* ... */ });
if (startMatchBackfillOutcome.Success)
{
Debug.Log("GameLiftServerAPI.StartMatchBackfill() succeeded.");
_backfillTicketId = startMatchBackfillOutcome.Result.TicketId;
}
else { /* ... */ }
}
}

Hey @sky-coding

Can you supply us with some identifying information like a fleet Id/matchmaking ticket Id and a time range when you have tested this out and have seen the issue?

Thanks!

Hi @Matchmaker, I actually provided both a fleet id and a matchmaking ticket id in my original post. And as for a time range, it was a few minutes before my post.

Missed that, sorry! We will take a look and see what we can find out.

Hi @Matchmaker, just spoke with you at GDC about this issue and others. Thanks for taking the time to discuss, and looking forward to the future of GameLift and FlexMatch.

Hi @sky-coding,

I am looking into this. I will get back to you as soon I have more information.

Is there any news about this issue?

@jurjjc - Would you mind starting a new question here with what issues you have? I assume you are also seeing issues with OnUpdateGameSession?

I have an identical problem. After successful backfill, there is no callback.

Here’s what i am doing in more detail:

  1. four clients start a game search and successfully find
  2. another client starts a game search
  3. after one of the clients from the first step is disconnected, server starts match backfilling
  4. the client from the second step successfully joins the game, however i don’t get OnUpdateGameSession callback

Would you mind starting a new question thread on this?

Can you confirming you are seeing your backfill request changing state but no calls to OnUpdateGameSession? https://docs.aws.amazon.com/gamelift/latest/developerguide/match-backfill.html#match-backfill-server-data

Do you get any calls to your onUpdateGameSession function? If not, please check that you are passing the right function in your ProcessParameters.

If you want GameLift to investigate, the team will need:

  • Any queue-ids, fleet-ids, gamesession-id or ticket-ids that may be relevant
  • SDK version / language you are using