@yamashi - I’m sorry you are having problems with FlexMatch.
It seems like you did you get regular matchmaking working how you liked. The only difference between regular and backfill, is that in backfill you are providing some pre-filled teams; the same rules are still applied.
Theres a lot that could be going on, so its worth checking if:
- Your matchmaking rules could be too restrictive meaning that no players can be backfilled into the game session. I would look at your rules and expansions and ensure players trying to backfill could be placed in an active game session.
- Your incoming ticket rate is too low for your expansions/relaxations or timeout values. Incoming player rate is important to bear in mind, you may need much more generous values when debugging/developing.
UpdateGameSession I believe you are talking about the
onUpdateGameSession callback rather than the actual
This is a callback from GameLift to let you know that the game sessions is being modified. Its recommend that you should log the update reason here to aid troubleshooting, but theres no callback to make to say you handled it as its just providing information.
The expectation is that the server owns the matchmaking data, so you should be mapping it some internal state so your server can handle player disconnects etc. Typically servers keep their own internal map of players to connected states etc.
void Server::OnUpdateGameSession(Aws::GameLift::Server::Model::UpdateGameSession updateGameSession)
Aws::GameLift::Server::Model::GameSession gameSession = updateGameSession.GetGameSession();
Aws::GameLift::Server::Model::UpdateReason updateReason = updateGameSession.GetUpdateReason();
log("OnUpdateGameSession with GameSession : %s, UpdateReason : %s, and backfillTicketId : %s",
gameSession.GetGameSessionId(), Aws::GameLift::Server::Model::UpdateReasonMapper::GetNameForUpdateReason(updateReason), updateGameSession.GetBackfillTicketId());
if (updateReason == Aws::GameLift::Server::Model::UpdateReason::MATCHMAKING_DATA_UPDATED)
// pull out new player data into internal representations
if (updateReason == Aws::GameLift::Server::Model::UpdateReason::BACKFILL_CANCELLED ||
updateReason == Aws::GameLift::Server::Model::UpdateReason::BACKFILL_FAILED ||
updateReason == Aws::GameLift::Server::Model::UpdateReason::BACKFILL_TIMED_OUT)
// as automatic backfill failed, may want to take manual action etc.
But as you report this is specifically with large matchmaking, it may be worth providing your matchmaking config id, rule set id etc and a time range where you made requests that didn’t work as you expected, and I can get the GameLift service team to take a look.
If you have it, it would also be useful to provide your server SDK version and language used.