How does the Backfill Ticket really work?

_approvedBackfillticket = await MatchmakerService.Instance.ApproveBackfillTicketAsync(_backfillTicketId);

I always thought this call is actually approving the backfill ticket that is around and every player ticket attached to it will be connected to the server. However this call just seems to keep the backfilling feature alive.

The actual approval is happening here:

await MatchmakerService.Instance.UpdateBackfillTicketAsync(_approvedBackfillticket.Id, _approvedBackfillticket);

This will let the backfill ticket waiting client/player actually connect. Am I getting this right?

Hi,
Approving a backfill ticket does two things;

  • Keeps the backfill ticket alive. It is required so a backfill ticket don’t reserve a matchmaking ticket for too long
  • Assign the server associated to the backfill ticket to the new ticket added by the matchmaker. Without approving, ticket will never get assigned.

Updating a backfill ticket is only required when player are being added or removed outside of matchmaker to inform of the change of players in the match,

The data about the Player count is that the same like Server Query Handler updates? Because I have some logic running OnPlayerConnect that increases the player count for the server query handler AND also for the backfill ticket (by updating it) - it seems that when 1 player connected I thought I update these two data endpoint separately but the actual player count was 2 - so it seems I can either call backfill update or server query handler update - both redirect to one data. Is this somewhat true?