Hey, I made a tool that simulates semi-randomized matchmaking that effects 50/50 outcomes using a knapsack or “best-fit” style algo.
docs.google.com/spreadsheets/d/1XtVVYyEx0__EwdrGJ0WGbZr_rUI3Up94Wacu-Fi2kRc
Toy around with it here, and let me know what I can add to make it more detailed.
The knapsack works by taking turns picking players for each team, with each counterpick being based on the average MMR of the opposite team.
So to imagine it, let’s say you are 2000 SR and 1st pick, it will then try to find a player as close to 2000 SR as possible as 2nd pick for the other team, which ends up being a player at 1800.
For 3rd pick, it will try to find a player as close to 1800 as possible, in order to bring the averages of the teams closer. In this case it finds another player at 1800, bringing the team average to 1900. 4th pick will then try to find a player as close to 1900 for the opposite team, and so forth.
average(2000, 1800) = (2000 + 1800) / 2 = 1900
The graph is a great visualization of this! (It’s much harder to explain in fewer words)
Currently, only relative MMR is used as the core of the matchmaker. SR does not matter for calculation purposes, and it is locked to player picks within +/- 500 SR of the Target SR.
Relative MMR is represented as values upwards or downwards from zero. You can consider it your base level, for example using your own SR.
Dean eM3res Died Haechi AmenPhoenix Wanted
Also, the reason the resulting match SR may be different from your input SR would be the equivalent of you being placed into a match where you outclass or underclass the average. The match overall will still have fair picks.
Hmm, I can also just force the first player pick to be the target SR (or your SR). Right now it’s simulating picking all players from a virtual player pool.
Let me know if you’d like this!