Let's share what we know about the matchmaker
Hello,
Since there is a lot of discussion how the matchmaker should be improved with various ideas being thrown out, I think it is important that we have a basic idea of how the matchmaker works right now.
I wrote some programs that do approximate the SC matchmaker well, but those are all approximations, and I am unsure of how the actual system works.
I will write down what I think it does, and then whoever has any additional info can contribute and we can get to a decent idea about it. The idea behind is not to empower engineers or anything like that, simply to get a better understanding.
How I think the matchmaker is working now:
- You press the "search" button
- defensive and offensive weights are calculated for every member on the list
- recent win/loss points are calculated
- defensive and offensive weights of each player are being checked against each other to apply "lopsided penalty" (which is likely in the form of lower_weight = (lower_weight + higher_weight) / 2, or something similar)
- defensive and offensive weights are added up into a single weight value per player
- the weight values are sorted
- the base threshold value is added to the clan
- the clan is added to the que
- server matchmaker tick starts
- it checks all clans against all other clans in the pool
- it calculates the clan match error
- if the clan match error is below both clans current threshold values, it generates a war and removes the clans from the pool
- if no match was found for a clan, it's threshold is increased
- server waits for the next tick and then repeats the process
The match error is calculated by 3 variables:
1. absolute difference of clan totals (weighted with top player having 2x effect compared to bottom player)
2. absolute difference of per lane weights (weighted with top player having 2x effect compared to bottom player)
3. absolute difference of recent win/loss (i am assuming this has the least effect)
Those 3 variables are added up and if the result is below the threshold it is considered a match.
After a match is being found, the players are sorted by their defensive weights and then displayed on the war map in that order. Offensive weights are being used to find the recommended target for each player.
Please point out where/if I am wrong and I will update the OP.