At Skillz, we take player matching and fairness very seriously. Because of this, we structure our matching in a very specific way.
Skillz uses algorithms to match players based on ability level and game history to make sure that every tournament is fair. Currently, most matching is done asynchronously. In asynchronous games, both players play the same match with the same conditions, but they do not have to play at the same time. The moves that one player makes do not affect the other player’s game.
In asynchronous games, there is always a “Host” and a “Challenger.” Sometimes, we’re able to match a Host with a Challenger while the Host is still playing. Other times, a game can remain “pending” (unmatched) for some time after the Host has submitted their score. This is more common in newer games and in high stakes matches. If we’re unable to find a Challenger within 7 days, we will automatically cancel and refund the Host’s match.
We will never match two games that have already finished and have a score, since a player’s skill level is always assessed before a game is played. This means that if you do extra well on a particular game, you don’t have to worry that you’ll be matched with someone who would normally be above your skill band.
A few of our games are synchronous, meaning both players play simultaneously, and respond dynamically to each other’s moves. By definition, synchronous games require two players to play at once, so they can never be “pending.”
In an asynchronous game, Player 1 initiates a match. We search Player 1’s skill band to see if there are any Hosts with pending (unmatched) games, and we find one. Player 1 now becomes the Challenger to Player 2’s match.
Any variables from Player 2’s match are recreated for Player 1, who begins the match. At the end of their game, we compare their score with Player 2's score to determine the winner. The results are shown instantly.
In an asynchronous game, Player 1 initiates a match. We search Player 1’s skill band to see if there are any "Hosts" with pending games, but do not find any. We then have Player 1 start a game as a Host and the game waits for a Challenger..
If a suitable Challenger is found, Player 2 will play with the same conditions that Player 1 had. Once Player 2 completes the match, the winner will receive their prize. However, if we’re unable to find a Challenger within 7 days, we will automatically cancel the game and refund Player 1’s entry fee.
While we try to vary opponents as much as possible, the most important factor in matching players is their skill band. In games with a smaller player base, it's possible that you may start running into the same players repeatedly. If this happens to you, it’s because these players are consistently within your skill range, and playing for the same stakes that you are. We know that it can be frustrating to play the same opponent over and over, and we’re working on ways to improve variety while maintaining fairness.