FWIW, I'm a former Microsoft software engineer, and I've been thinking about algorithms for a living for more than ten years.
In the 11/17/2016 edition of "This Week at Bungie", DeeJ lets us in on the design priorities of Crucible matchmaking and how they are implemented. The matchmaking design goals, in order, are stated as:
A) Provide you with a clean connection to your fellow players
B) Keep the time you spend in orbit between matches to a minimum
C) Set a match between you and a worthy opponent
We are told that the algorithm that Bungie uses to attempt to realize these design priorities follows this sequence:
1) First, we identify a pool of available players with a good connection to you
2) Within that pool, we choose players closely matched to your personal skill rating
3) If we can’t find players within that pool, we widen the variance in skill
4) If THAT doesn’t work, we expand the search again with more variance in connection quality
5) Once enough players are selected, we break them out into equally skilled teams
The post then claims that "connection quality is always the highest priority factor in Destiny Matchmaking" because only good-enough connections are included in the initial player pool in step 1, and connection quality is never then compromised except as a last resort before final player selection in step 4. However, if I'm reading the algorithm correctly, step 3 only happens once, while the "search again" event in step 4 will be done as many times as necessary to find enough players to fill the lobby, with a larger connection quality variance allowed each time. If this is right, then the skill variance allowed in step 3 is an absolute maximum, and step 4 will potentially scour the entire world to find a lobby that will fit within that skill range, connection quality be damned. This means that design goal C actually takes precedence over design goal A, and it is also consistent with what many players are reporting in the forums (and with what I have myself experienced.) The multiple "search again" tries in step 4 also will take increasing amounts of time as the net is cast wider and wider, which means that the matchmaking algorithm is also putting goal C above goal B. Since people seem to be complaining more about connection quality than time in orbit, I'm going to also say that the matchmaking system is putting B before A. That is, [i]the algorithm which is supposed to achieve ABC is actually realizing CBA[/i].
Now, if the matchmaking algorithm actually works as I have described, the fix could be pretty simple: just swap steps 3 and 4, so that instead of placing an absolute limit on skill variance in step 3, you're placing an absolute limit on connection quality variance. This should also meaningfully reduce maximum time in orbit, since the "search again" event in the new step 4 just involves expanding the set of players you will consider within the original pool established in step 1; you don't have to search the whole world multiple times, allowing worse and worse connections. Note also that allowing arbitrarily large skill variance doesn't necessarily mean you will have an unbalanced lobby since you will still do your best to shuffle players into even teams in step 5 (provided the presence of a large fireteam does not prevent this).
I understand that weaker players are more likely to get stomped the larger the skill range in a lobby becomes. But everyone gets stomped sometimes when there's a large fireteam on the other side; that's a situation we tolerate because we understand that people want to party up with their friends. And weaker guardians in a high-skill-variance lobby of well-shuffled solo players should at least be able to take solace in the fact that there was someone on the other side who got stomped just as hard.
DeeJ, I hope I speak for everyone when I say that we really appreciate you sharing sharing some of the inner workings of Destiny with us, and I, for one, have confidence that you are faithfully communicating to us what you have heard from your devs. But there is a bug or a disconnect in there somewhere. Either the stated matchmaking design goals are out of order, or the algorithm is. Please let us know which it is.
Deadly Pixel out.
-
11 AntwortenHi, I'm a software engineer myself and, to be blunt, you really can't claim what you're saying or the opposite of it. It's just something to try to quiet the hordes down a bit. Technically its meaningless - it doesn't mention how each part of it is weighted, it mentions repetition but doesn't say which exact parts get repeated and what's the stop condition and so on. I could actually code two different functions that would abide by the "algorithm" as it is stated, and one would be completely SBMM and the other fully CBMM. So yeah, lots of words that say nothing about what they're doing.