Jump to content
  • Sign Up

Let's talk about matchfinder algo


Acandis.3250

Recommended Posts

The current iteration of match-finder (roughly) does the following:

look for other people within X rating of meevery T minutes, expand rating window by +/- Y

This creates bad matches. Why?Suppose 9 "low" rated people are in queue and have been queued up for long enough time that match-finder has been forced to expand the rating window at least once. In comes a "high" rating player (we'll call him Player A) and queues up. Because the other 9 have been in queue so long, Player A gets an insta-pop. Now, if Player A wins the game he'll get a low amount of rating. On the other hand, if he loses, he'll lose A LOT. But this doesn't make sense, he got an insta-pop, which should only happen if there were 9 other players close to his rating were queued up.

There's not much we can do about negative expected value (EV) games in long ( > T) queues. But short queues ( < T) should have EV ~ 0.

Easy fix:Make match-finder only expand rating window down ( -Y) instead of also expanding up. This way many more matches will have EV ~ 0, and hopefully also result in better quality matchmaking.


Edit to suggested fix:(See below for reasoning.)After every time interval T, expand down by Y and up by Z, where Y >> Z.

Link to comment
Share on other sites

Upon further though, it occurs to me my original suggestion is a bit narrow.

I more general solution would be to have match-finder expand in the following way:After every time interval T, expand down by Y and up by Z, where Y >> Z.

This way there would be much less queue time stagnation, but we should also have a lot less silly cases of un-winnable insta-pops.

Link to comment
Share on other sites

@volpenvieh.3201 said:Currently, nothing good happens after 5 min queue. Either it's an easy + boring win or it's an inevitable defeat. Probably would be best to just leave queue and queue up again.

As I've previously stated, there's not much we can do about 5+ minute queues being bad.

The point of slowing down the upwards expansion of the match-finder is to prevent short queue times from being just as bad as long queue times (and it happens quite often in high rating).

Link to comment
Share on other sites

There's actually a very large set of variables that the algorithm looks for when determining teammates.

This conversation really can't go anywhere until you know all the factors involved. Did you know that if you have dishonor, once your dishonor clears, you still have a "dishonor timer" hidden in your matchmaker, and it will tend to find OTHER PLAYERS that also have this dishonor timer to group you with the exponent on this timer is like.

Check this out

Dishonor stack-duration="4h" timeout-duration="30s" timeout-exponent="1.5" timeout-rounding="1m"Penalty reason="Abandon" stacks="10"/Penalty reason="QueueDodge" stacks="3"/Penalty reason="Banned" stacks="1000000"//Dishonor

You receive a stack of dishonor when you get a dishonor timeout. The time out is what you see when you for example click decline on a game. You receive 3 stacks when you do this (3x30s = 90 seconds, which rounds to 1.5 minutes, times the exponent (1.5x1.5 is 3 minutes).

The stacks themselves last 4 hours, and that matchmaker DOES look at your STACKS when finding games for you, although not an absolute, it does have an effect on your games, by just simply DECLINING one of the que dialogues.

Here's also something interesting

Arena name="Ranked Arena"QueueRosterSize min="1" max="2"/Iteration interval="30s" rosters="100" limit="250ms"/Potentials min="20" max="500" falloff="0.375" start="1m" end="3m"/Rating start="5m" end="10m" max="1200" min="25"/Power curve="1" percent="1"/Rank min="20"//QueueMatcher type="Team"Age seconds="2"/RosterSize max-diff="3" distance="-100" perfect-fit="0"/Rank distance="0"/Rating distance="-10"/Profession max="2" common="-100" unique="0" matching="100"/Dishonor distance="-100" stack="-50"/GuildTeam affinity="50"/Games ax="500" distance="-0.25"//Matcher>/Arena

The interesting thing to note here is the 2n'd half of the code, which is the scoring part of the system. It looks at the GUILD TEAMS that you have and takes that in to account, it looks at the length of time people have been waiting for matches, it looks at the AMOUNT of games that you've played thus far, and of course the dishonor stacks that you have and a bunch of other things. Note the values on each. The negative numbers mean for the most part that it lowers or increases the overall rating of certain teams in the match. So when you have -50 points from the dishonor, you are being scored lower (basically thinks your rank is less then your actual rank). When you have a guild team, you are being scored HIGHER by 50 points and being ranked as if you have more rating then you actually are.

anyway, you can read all this here on the wiki page. do some reasearch before filing a complaint thread. It helps in creating solutions and actually analyzing the problem. Albiet i'm not computer tech guy, so maybe the values aren't as significant as they may seem but ya...

So ya a link to the wiki article : https://wiki.guildwars2.com/wiki/PvP_Matchmaking_Algorithm

Link to comment
Share on other sites

@Acandis.3250 said:Upon further though, it occurs to me my original suggestion is a bit narrow.

I more general solution would be to have match-finder expand in the following way:After every time interval T, expand down by Y and up by Z, where Y >> Z.

This way there would be much less queue time stagnation, but we should also have a lot less silly cases of un-winnable insta-pops.

The problem with your idea is that you are assuming that players get placed against high-ranks because the low-ranks where expanding to the high-ranks level. This however is a completely false assumption.

The higher rating a player is the longer their queue time is due to the fact that higher skilled players are always more scarce than lower skilled players. Because of this high ranked players will generally be the ones with expanding matchmaker brackets. I can guarantee you that in just about every case of a high ranked player going against a low ranked player, it's because the high ranked player's matchmaker was expanded to the low ranked player's level. Not the other way around.

Link to comment
Share on other sites

@"JusticeRetroHunter.7684" said:There's actually a very large set of variables that the algorithm looks for when determining teammates.

This conversation really can't go anywhere until you know all the factors involved. Did you know that if you have dishonor, once your dishonor clears, you still have a "dishonor timer" hidden in your matchmaker, and it will tend to find OTHER PLAYERS that also have this dishonor timer to group you with the exponent on this timer is like.

Check this out

Dishonor stack-duration="4h" timeout-duration="30s" timeout-exponent="1.5" timeout-rounding="1m"Penalty reason="Abandon" stacks="10"/Penalty reason="QueueDodge" stacks="3"/Penalty reason="Banned" stacks="1000000"//Dishonor

You receive a stack of dishonor when you get a dishonor timeout. The time out is what you see when you for example click decline on a game. You receive 3 stacks when you do this (3x30s = 90 seconds, which rounds to 1.5 minutes, times the exponent (1.5x1.5 is 3 minutes).

The stacks themselves last 4 hours, and that matchmaker DOES look at your STACKS when finding games for you, although not an absolute, it does have an effect on your games, by just simply DECLINING one of the que dialogues.

Here's also something interesting

Arena name="Ranked Arena"QueueRosterSize min="1" max="2"/Iteration interval="30s" rosters="100" limit="250ms"/Potentials min="20" max="500" falloff="0.375" start="1m" end="3m"/Rating start="5m" end="10m" max="1200" min="25"/Power curve="1" percent="1"/Rank min="20"//QueueMatcher type="Team"Age seconds="2"/RosterSize max-diff="3" distance="-100" perfect-fit="0"/Rank distance="0"/Rating distance="-10"/Profession max="2" common="-100" unique="0" matching="100"/Dishonor distance="-100" stack="-50"/GuildTeam affinity="50"/Games ax="500" distance="-0.25"//Matcher>/Arena

The interesting thing to note here is the 2n'd half of the code, which is the scoring part of the system. It looks at the GUILD TEAMS that you have and takes that in to account, it looks at the length of time people have been waiting for matches, it looks at the AMOUNT of games that you've played thus far, and of course the dishonor stacks that you have and a bunch of other things. Note the values on each. The negative numbers mean for the most part that it lowers or increases the overall rating of certain teams in the match. So when you have -50 points from the dishonor, you are being scored lower (basically thinks your rank is less then your actual rank). When you have a guild team, you are being scored HIGHER by 50 points and being ranked as if you have more rating then you actually are.

anyway, you can read all this here on the wiki page. do some reasearch before filing a complaint thread. It helps in creating solutions and actually analyzing the problem. Albiet i'm not computer tech guy, so maybe the values aren't as significant as they may seem but ya...

So ya a link to the wiki article : https://wiki.guildwars2.com/wiki/PvP_Matchmaking_Algorithm

Its worth noting that the matchmaker has changed since the algo was posted on the forums. No anet dev has updated it since. For example, there was a new matchmaking algo that was implemented before the beginning of this new ranked season with no updates to the wiki page.

The last revision of the algo was:

04:04, 23 February 2017‎ Evan Lesh (talk | contribs)‎ . . (35,787 bytes) (-7)‎ . . (Small update to reflect live code changes.) (undo)

Link to comment
Share on other sites

@"Crinn.7864" said:

The problem with your idea is that you are assuming that players get placed against high-ranks because the low-ranks where expanding to the high-ranks level. This however is a completely false assumption.

The higher rating a player is the longer their queue time is due to the fact that higher skilled players are always more scarce than lower skilled players. Because of this high ranked players will generally be the ones with expanding matchmaker brackets. I can guarantee you that in just about every case of a high ranked player going against a low ranked player, it's because the high ranked player's matchmaker was expanded to the low ranked player's level. Not the other way around.

Sorry but your comment is incorrect. Though, as Ryan has pointed out the pseudo-code linked is possibly out of date, here is some analysis from it, nonetheless.

<Rating start="5m" end="10m" max="1200" min="25"/>

This is saying that no rating padding is even added until you've waited at least 5 minutes in queue.

Now, if--as you claim--the algo only expanded down, I'd expect to always have EV ~ 0 from queues shorter than 5 minutes. This is quite simply not the case. Many Plat+ players have gotten short queues ( < 5m) with EV << 0. To put this in other words, I have played games with short queue times that amounted a -20MMR loss, or a +7MMR win.

I admit it's a bit tricky to understand how this happens, but it indeed happens.

Again, if the algo only expanded down, then (assuming queue time always < 5m) then I would never lose more than I win, because I would always be paired up with people in much higher rating than me that have been waiting longer. This is just not the case.


For the record, I did analyze the wiki before posting the original thread. Now, you had two points you wanted to make.

  • Dishonor does indeed try to match you with other players who have dishonor, but the score attribute is not the same as rating. Once the algo finds players (within the rating range+padding) it sorts them into different teams and uses a number of criteria to give each team a score. It then jumbles up those players into different roster combinations until both teams have a similar enough score.
  • GuildTeam/Affinity - Score added when comparing two guild teams for a potential match. Though this is again referring to score, it is entirely obsolete in the current iteration of Ranked since queuing up as a Guild Team requires at least 3 people from that team to be present, and Ranked currently only allows for a max of duo queue.

Again, the main issue with having low-quality matches with short ( < 5m) queue times, is the fact that rating range padding is expanded up and down at the same rate.

I firmly believe slowing down the upward rate of expansion would make for higher-quality matches, though it would result in longer queue times for high rated players.

Link to comment
Share on other sites

@"Acandis.3250" said:Now, if--as you claim--the algo only expanded down, I'd expect to always have EV ~ 0 from queues shorter than 5 minutes. This is quite simply not the case. Many Plat+ players have gotten short queues ( < 5m) with EV << 0. To put this in other words, I have played games with short queue times that amounted a -20MMR loss, or a +7MMR win.I admit it's a bit tricky to understand how this happens, but it indeed happens.

I think the the premise of your argument hinges on a misunderstanding of the way the time works for the que.

If you take a look again at the code, "Iteration interval="30s" rosters="100" limit="250ms"/"The iteration interval is the time that the server pings the matchmaker to initiate a match pop. The match will pop when it finds enough players that fit a certain set of criteria (criteria necessary to start a match, which is the scoring system i believe), the number of which is reflected by the rosters value (100).

The que time is not based on any individuals time, but rather the servers. The reason that plat+ players get near insta-pops is because they qued at the right time where the server is being pinged, and that player is the last one to fit the criteria. This is also why you don't constantly wait 5+ minutes for every que, because it's not specific to the players time in which they clicked the Que for Ranked Arena Button, it's the server pinging the matchmaker and checking all possible rosters to initiate a match, to which as you que, your fit into the criteria.

So for example, 19 players qued up for ranked. let's say, 14 silver players, 4 gold players and 1 platinum player. The Matchmaker right now is combing through all the people that are in que, and creating all different possible rosters that could make a match to start. Without padding, the common occurrence would be that the 14 silver players would almost always get matches with each other, while the other players receive no games, simply because there are enough silver players in que to meet the match initiation criteria. However, because there are other players that need to play in games., the matchmaker continues compiling groups where there are say, a gold player on each team, 3 silvers on each team, and one platinum on each team. Once padding is introduced (which is time specific for the actual player in the que) the pool of available players becomes larger, which gives the matchmaker more roster combinations...so if there were any legendary or bronze players qued up, it will look at those combinations as well.

Now, continuing on, enter the last platinum player that hits the que button. between 0 - 30 seconds the que will pop and initiate the match. Like i mentioned earlier, right before this que pops, the scoring system will kick in and try to assort the scores to create the teams, which factors in profession, dishonor, games played, and time waiting in que, etc... This means that games like this can become lopsided, because these variables could penalize or reward someone when assigning them into a team... For example, the silver players could be duoquing, and/or have unique professions (thus increasing their score) , while the platinum players could be of the same profession, and/or have dishonor (lowering their score). So you end up getting teams where the SILVER players have a somewhat similar score to the gold/platinum players. This could be logical reasoning as to why even plat players that get insta-pops have imbalanced teams, which results in a stomp.

Now the above is just an example, rather extreme in that silvers vs plats is not very common. But you can extrapolate how these deviations can exist with much larger player pools. IMO i don't even think the padding contributes all that much to the disparity in these games, but rather the way the scoring allocates players when choosing teams. Personally, i've expierenced having the same 4 players on my team in multiple games...which supports the theory that if there are not enough players queuing up, the available set of rosters will pigeon hole you because instead of jumbling up the players to differentiate the teams every game, it will give you the SAME scoring, resulting in the same teams every game.

Link to comment
Share on other sites

@"JusticeRetroHunter.7684" said:--snip--

I think your analysis of scoring is correct, though that is not how players are selected at first.From the MM Algo wiki entry:

At the start of matchmaking, the system attempts to find a match customized for the first Filter/Iteration/@rosters rosters (party) in the queue. If no match can be created, these players will be put at the end of the queue to ensure other players have a chance at a match customized for them. While this may seem unfair at first, this has actually been shown to decrease wait times for all players.

The first phase, called filtering, gathers players based on their current MMR. The primary purpose of this phase is to both reduce the number of players being considered for a match, and to ensure that the match is appropriate given each player's skill level. Over time, padding is added to your player rating. While this may decrease match quality, it helps ensure that outliers still receive matches.

The second phase of the algorithm is the scoring phase. During this phase each player is scored against every other player being considered for matchmaking. The metrics used during this phase include: rating, rank, games played, party size, profession, and dishonor. With each metric the system is looking for players that are as close as possible to the average of those already selected. The system also attempts to keep the number of duplicate professions to a minimum.

So you see, what I'm talking about is strictly Phase 1 of the algorithm, whence players within appropriate rating(+padding) are selected.

Back to my original comment. If Phase 1 of the algo hadn't expanded up as rapidly as it expanded down, a "high rating" player wouldn't find himself in a match with 9 "low rating" players (well, almost never). This in fact is not only possible, but occurs often. Indeed, it happens because--as you said--the "high rating" player happened to queue up mere moments before another "low rating" (and a more appropriate fit in my scenario) player queued up. Because those players had already been queued up for > 5m, algo-P1 had already begun expanding it's range.

If, on the other hand, algo-P1 did not work as I am describing, then any short queue (< 5m) time a "high rating" player might experienced would never result in a far greater loss than it would gain.Why? because they would only ever get matched with players of very similar rating.Even if algo-P2 did wonky things and placed him on a team all people who AFK every game, every other player in that match would be of similar rating, so all the losers in that match would get ~ -12, and all the winners would get ~ +12.

Phase 2 (which is what you're talking about) is what makes the rosters once sufficient players within the rating range have been found.Again, I believe your analysis of how scoring works--and some of the issues it presents--to be correct, but it is not my concern in this thread.


All that being said, there may be elements of the algorithm that behave differently than what's described in the wiki--since the un-documented(?) update. Though I am certain padding is still responsible for some wonky matches (albeit mostly during off-hours) from experience.

Link to comment
Share on other sites

@"Acandis.3250" said:

So you see, what I'm talking about is strictly Phase 1 of the algorithm, whence players within appropriate rating(+padding) are selected.

Phase 1 and phase 2 happen nearly at the same time. Both happen before the Accept/Decline dialogue pops. The reason i'm saying this is because if the the scoring happened AFTER the que popped, then the profession balance would be absolutely terrible (because it needs to consider the profession of players going into the games before creating the match.) Remember, that both phase 1 and phase 2 have to give the "GOOD TO GO" before creating the match with the server, so when the matchmaker is compiling all the different sets of players for the matches it goes through phase 1, if it passes it goes phase 2. If phase 2 doesn't pass it will go back to phase 1, and continue the process, and as the time increases, the pool of available combinations increase for the algo UNTIL the algo can get past both phase 1 and phase 2, and then can finally give you the que pop Accept/Decline dialogue.

The two phases are intrinsically connected rather than being separate and distinctly isolated.

Back to my original comment. If Phase 1 of the algo hadn't expanded up as rapidly as it expanded down, a "high rating" player wouldn't find himself in a match with 9 "low rating" players (well, almost never). This in fact is not only possible, but occurs often. Indeed, it happens because--as you said--the "high rating" player happened to queue up mere moments before another "low rating" (and a more appropriate fit in my scenario) player queued up. Because those players had already been queued up for > 5m, algo-P1 had already begun expanding it's range.

Well, The 9 low rated players could have had padding in their que because the algo is searching for a final player that would fit a criteria (the criteria being the ability to pass both P1 and P2), thus holding those silver players in Escro.However To be really frank here, the only way for a plat or legend player to get qued with only silver player is with padding. There is no question or any other way for it to occur. The legend player HAS to play a game according with the algo. It will do this by creating combinations likeTeam 1 Legend/silver, silver, silver, silver,Team 2 Legend/silver, silver, silver, silver,

If there is no 2nd legend player, it WILL look for "the next best thing" which is a plat player that has a +score in the P2 scoring phase, or a bunch of silvers with -scores, and a bunch of silvers with +scores to get the scoring as close together as possible before initiating the que pop. This is how games occur that have 3 plats', 2 golds, verses 1 legend and a bunch of gold/silvers.In order for the Legend player to be considered in these games however, is with padding, but not necessarily padding from himself, but could potentially be padding from any other rival player that has waited long enough for a que ie, the platinum player we just mentioned.

Now if you ask me, I don't think its possible to have silver players in Legend games like this (and when it does happen, it's extremely rare), unless nobody other than these 10 players are online and are the only ones queuing for 10 minutes. So to say it happens often is a bit extreme. What usually happens in our current population are slight deviations, like a team of 3 plat2's and 2gold2's vs a team of 2 plat1's and 3 gold3's. Instead of making it more balanced though, the scoring screws it up giving one team 3 super exp players over the other which has roughly average skilled players. It could have totally given you 2plat2's 2gold3s and 1gold2 vs a team of 1plat2, 2plat1, 1gold3 and 1gold2's instead. But with scoring phase it can just mix those up any way it likes depending on those variables.

If, on the other hand, algo-P1 did not work as I am describing, then any short queue (< 5m) time a "high rating" player might experienced would never result in a far greater loss than it would gain.

Not sure how you drew that conclusion. You are saying that if you as a high player have a short que pop, you can't get a large deviation in loss/gain points when rewarded at the end of the match? The padding isn't unique to just high rated players. It happens for everybody. I mean you have seen people on the forums mention some people in silver waiting 10 minutes for games? It's because of the algo again like i mentioned before, searching for someone to fit the criteria. The algo can and will hold low rated silver players if it means getting a game that will pass the P1 and P2. In those 10 minutes those low rated players waited, their que in silver is being padded. In comes the plat player, and all of a sudden you have a plat player, with an insta-pop que time in a super stacked game.

If Phase 1 of the algo hadn't expanded up as rapidly as it expanded down, a "high rating" player wouldn't find himself in a match with 9 "low rating" players (well, almost never).

Let me return to this initial point here. Right now, we have to take into consideration, that the examples we are using, for the simplicity of the argument, are rarities, and extreme outliers. Legend and silvers in the same match almost never happen. When we discuss these things you HAVE to extrapolate them and apply the logic being used on much larger numbers, and think "bigger picture" so to speak. There aren't 10 people in the que, there are hundreds...maybe thousands. Nobody really knows.

So to address this particular quote. If you were to change it to the way you describe, i think it would improve matchmaking at the cost of que time. By how much is not really known.

The main purpose of the padding is to introduce more combinations for the Match-Maker. The longer the padding ramp time, the less combinations you offer to the matchmaker to give a GOOD to GO and find games that pass P1 and P2. So at this point you begin relying on other platinum players to hit the que button. For low rated players, their padding can eventually reach yours, except it will take longer based on the amount of time you've reduced it for higher level players. (If you reduced the ramp up time by 50%, you'd wait 25% longer than before, before getting low rated players in the game. This basically gives the algo 25% more time for other high rated players to long on and que. (Keep in mind that's a rough estimate that assumes all low tier players are of the same rating. If they have different ratings/scores which they always will, the time it takes before these players enter your "zone" will be different)

Would that make matchmaking better? Maybe. It really depends on how the algo creates these combinations, and what it will do to hold players in que before it deems players to be suitable for a match. I think there are too many variables to consider here.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...