Multiple Matchmaking Tickets

We are considering using Nakama to replace our self-written matchmaker. One of the requirements is we would like to loosen the matchking criteria over time. We would like to loosen that pretty frequently, ie: every 10 seconds, the range expands.

We are looking at the source code and documentation for Nakama’s matchmaker and I have a question regarding multiple tickets. Nakama recommends we submit multiple tickets to loosen the matching criteria, but I am concerned about the effect of having 2 tickets ‘match’ at the same time. The client will reject one of the two matches, but what is going to happen to that match? If it was a 1v1 game, for instance, is one player simply going to find themselves alone in an empty game server? It seems as though we need to be able to ‘atomically’ mutate a single matchmaker ticket, rather than submitting multiple? If we continually cancel and resubmit our single matchmaking ticket, is that going to negatively affect the latency of finding a match?

Hey @00jknight
I have been in same pickle :smiley: But i have choosen to go with single ticket way.
From my experiance:

  • I am doing in game/client after xy amount of time i change criteria for queue
  • If let say z amount of queue passes and no players for it is found i run match with bots

Now there are many “cases” where for instance in 1st min there are no people with highly wanted criteria, but after 3min some of the appear, but you are like already on lowest criteria for the match?
In that cases we cut our loses, and hope that better matches will be made next time player queues.
Did latency change? Not much , but wait time per player can be depending on match making setup increased for minutes * retries. In our case most matches took between 15-30s which could be a bit much, but low ppl count so still good.

When you say ‘change the criteria’ do you mean you cancel the current ticket and add a new ticket?

Indeed :slight_smile: We cancel client side, and request new one on server to adjust params etc…
Since in order to have criteria or well query be changeable on the fly without client updates, we do query construction of the server.
So for instance, it goes like this:
Ticket 1) I try to find a match with at least 1 more player whios ELO is between 70 and 100
If match is not found within 20s
Ticket 2) Try to find match with at least 1 more player whose ELO is between 50 and 120
if match is not found…

Yeah thats basically exactly what I’m thinking…