Match making and queue times

Many people on this forum believe that Overwatch matchmaking is purely based on one value, the match making rating (MMR). Ping is probably also used. I don’t understand why it takes such a long time when the task itself seems really simple. I normally wait 2-4 minutes and sometimes even longer. As a reference I wrote a simple match maker. It is a normal balancing match maker creating teams with equal skill level (just as Bliz has told theirs do). This is how it works:

  1. It creates a queue of 48000 players that all have their individual random MMR between 1-100000.
  2. It creates a game that consists of two teams
  3. It picks a player from the queue and places him into team1 of the game
  4. Always when adding a new player to a team the team average MMR is updated
  5. It gives the average MMR of team1 to team2 as a seed to find a player (when this happens the first time it is the MMR of the first player)
  6. It starts finding a player from the queue with a ±100 tolerance limit, if a player cannot be found the tolerance is increased by 100 until it exceeds 20000
  7. It places the found player to team2 of the game (and updates the team average MMR)
  8. It now gives team1 the team2 average MMR as seed to search for a new player
  9. The teams grow one by one and the system takes care of the balancing by keeping the average MMR of both teams as close as possible by finding players with MMR as close as possible to it by exchanging the seed between the teams
  10. Every time a player is added to a team he is removed from the queue
  11. When a game is full, it is put aside and a new game created so basically it’s a loop until 48000 players have been handled.

This is the kind of data it produces:

Created game! Average MMRs; team1: 97437.6 and team2: 97433.0
Team1
1 MMR: 97501.0
2 MMR: 97420.0
3 MMR: 97530.0
4 MMR: 97428.0
5 MMR: 97396.0
6 MMR: 97351.0

Team2
1 MMR: 97482.0
2 MMR: 97400.0
3 MMR: 97543.0
4 MMR: 97398.0
5 MMR: 97426.0
6 MMR: 97349.0

Created game! Average MMRs; team1: 38335.8 and team2: 38336.3
Team1
1 MMR: 38283.0
2 MMR: 38221.0
3 MMR: 38354.0
4 MMR: 38352.0
5 MMR: 38390.0
6 MMR: 38415.0

Team2
1 MMR: 38280.0
2 MMR: 38252.0
3 MMR: 38344.0
4 MMR: 38313.0
5 MMR: 38420.0
6 MMR: 38409.0

It works amazingly well! :slight_smile: It does not handle groups but that would not be a very hard addition as they could work with the average values of the group (average MMR and ping) and could prioritize them. This is a very straightforward approach without any optimization or threads (simultaneous computing) used but everything is executed linearly one after the other and no new players appear during the match making. At the end we have nearly 4000 games with 50-50 win probability.

This test is pretty theoretical but atm the algorithm has the features to handle at least solo q match making based on MMR. How long do you think this takes to run through on a laptop?

Answer

Queue size: 48000
Match making took: 375 milliseconds

1 Like

As you’ve shown, the actual computation is fast. Making it real-world would not slow down the computation much.

What slows it down is waiting for enough matchable people to queue.

We have to disagree on this. With popular online games there are always loads of people in queue. Check CS:GO for example.

you know whats better than matchmaking and times?

clan servers with amateur leagues and matches. they need to have a clan arcade for clans with enough signatures to have permanent servers

You are fully incorrect about how many people play this game at one time in one area. (yes its matched by ping as well) lets use cs:go your example. Steam publishes its current numbers overwatch doesnt. CS:GO is steams #3 game being played right now

  1. Counter-Strike: Global Offensive current 413,430.

then you head over to twitch and look at current viewers. It becomes clear by comparing viewers to current numbers among several games. overwatch likely has around 300,000 current players worldwide right now.

Divide that into areas for ping as well as rank you have considerably less than “loads” of players.

1 Like

If they think more than 2 avoided teammates from each person might mess with how long it takes to queue, there aren’t as many people playing as most people seem to believe.

Exactly which area matters too. I live in San Diego. I could drive to Blizzard HQ tomorrow after work.

I have 0 seconds of wait time during peak times. At most it’s 3 minutes, but that was when I was around 1000 SR. When I’m in a group with friends across the country though, 5-7 isn’t out of the ordinary.

Ping, MMR and finally SR is considered.
Yes SR is now considered in the MatchMaker in addition to MMR, this was a recent change introduced a month or so back to ensure the top vs the bottom players in the team were within the same restrictions as grouping rules. As off peak GM and Bronze games were terrible before, top500 with diamonds in team, this doesn’t happen now.

Your calculation is simple and assumes no restrictions, it assumes all 12 players are already sitting and waiting.
Many times I’ve hit the Competitive button and gone immediately into a match, so we already know for sure that the MM calculation they have is very fast.

The issue isn’t the servers or the calculation.
It’s the availability of people within the given rules.

Ping is the highest priority (so say Blizzard), as during Beta testing the amount of issues due to massive variances in ping were shocking.

I don’t see what you were trying to prove?
Obviously you already knew this type of calculation would be practically instantaneous ?

Poor Blizzard. Over 35 million copies sold in two years. CS:GO has about the same in six years. Still no players online in Overwatch, I wonder why…?

This thread was created just as food for thought while in another thread the complexity of matchmaking was discussed. Until I see some real data I don’t believe that at the middle of their bell curve ladder there would not be 12 players in queue that are close enough in ping and skill to form a game quite fast. Is ping really an issue these days? Every player is connected to whatever cloud provider datacenters Bliz is using and from a geographical pov they pretty much all have the same ping. Unless you connect to servers over continents.

Their matchmaker is so complicated that because of it I spend 1/3 of my gaming time queuing :). But we already know that. Jeff did make it quite obvious in his post.

This has literally never happened to me in all the hours played and accounts I’ve had on different tiers in the ladder. But good to know that it works better for some people.

As pointed out there is no way in this world that the actual matching algorithm is what takes time. Even for people without a background in algorithms and complexity the fact that queue times are quicker during popular times when there are more people queueing should be enough “proof” that it’s got nothing to do with the complexity of the calculations (which would then mean that the more people queuing the longer it would take to “solve” the matching problem).

That out of the way let’s proceed to look at some actual number and make some wild guesses.

Lets guess that 300,000 people are logged in.
Lets then guess that 25% of those people are playing or queuing up for competitive (and not in QP, arcade or just like me have OW minimized while I’m working).
Out of those 75,000 people we know roughly 32% are in gold (the most populated bracket).
For the sake of match making lets then say that a fifth of those 24,0000 would be close enough in MMR to be matched with a random player in gold.
Lets continue by guessing that maybe 10% of those 4,800 players are close enough to this random player when it comes to ping.

This leaves us with 480 people but those are not even 480 people waiting in queue. If we allow for 1 minute queue time and let’s say the average game is 9 minutes this means that at any given point in time only 48 people would be available for matching with this random gold guy.

Many wild guesses above I know bit likewise it’s a bit silly saying that just because x hundred thousand players play the game queue times should be zero or close to zero. I mean if queue times would indeed be zero that means that when you finish a game the queue would be empty and the only people that you can be matched with is the people you just played with.

Also I’m in gold and I can safely say that I pretty much never have to wait a minute of more for a match to start.

EDIT: On a positive note I do think it’s great that you use some of your real world skills to make illustrations like this and put some things in perspective. This is coming from someone who had a bit of spare time a moth or so ago and wrote a simulation to show what a disaster it would be to not balance matches for a 50% predicted win percentage but instead let random numbers do the balancing (posted in the infamous Cuthbert thread).

My matching is also very fast. Typically seconds, sometimes minutes. Very rare that it is more than three minutes. But then, I’m in gold, the most populous rank, and live in the San Francisco Bay Area, probably one of the largest local populations of Overwatch players, and I play during prime times (early evening and weekend afternoons). Queue times were longer (by several minutes) when I was in low bronze.

Where do you live? What times do you play? What ranks are you playing in? Diamond is the top 10-14%, so the player base is getting smaller.

We keep talking about numbers of players in a region, because yes, it does matter. It takes 13 ms for light to get from New York to Los Angeles (ping doubles this, at minimum), so physical laws by themselves add a non-negligible amount of ping. On top of that, every time a packet goes through a router or switch, it loses milliseconds. It adds up and becomes a challenging problem to get everyone good ping and good matches.

1 Like

Addendum.

I found a server list at https://eu.battle.net/support/en/article/7870 and tested my pings to each (with the command line tool). There are fewer servers than I expected (Australia, wherefore art thou?) I’m not sure why I’m timing out to further locations. Perhaps the servers are refusing pings from distant locations?

Region IP Address Ping (ms)
The Americas 24.105.30.129 (US West)
24.105.62.129 (US Central)
18
65
Brazil (Americas) 54.207.107.12 timeout
Europe 185.60.114.159
185.60.112.157
155
155
Korea 211.234.110.1 timeout
Taiwan 203.66.81.98 timeout

Ok. That list on the support forums is not complete:

https://us.battle.net/forums/en/overwatch/topic/20745085507?page=26#post-502

Maybe that list is just for big picture routing and authentication. It looks like there are many more servers.

The reason that this matters is that every extra server improves ping, but divides the population (which can increase queue times).

When I group with friends on the other coast my ping gets up to 150 or so. Enough that it’s noticeably harder to play.

I’m guessing that a radius of good matches is somewhere around 500-750 miles. That’s assuming that a major metropolitan area does NOT have better infrastructure than other areas. This assumption is likely not correct, meaning that for less populated areas that results would be smaller.

The whole Europe is covered by two servers it seems. I don’t think those miles are enough. I would guess basically everyone in Europe has their ping inside the acceptable level varying from 10-80.

I don’t know how many accounts there are in each of the regions but let’s assume out of 35 million 20% are in Europe. That’s 7 million accounts. Divided to two servers so 3,5 million potentially per server. Out of those only 10% are active players resulting in 350000 per server. At prime time 30% of those are playing so, 105000 players per server. 80% of them are in game and 20% in queue, so, 21000 players in queue. 10% of those players are in diamond so 2100 players in queue for a diamond game…?