I’ve read several opinions about MatchMaker, most of which are complaints. While I’m nearly certain that creating a matchmaker that satisfies everyone’s needs is impossible, it’s still interesting to consider how it could (or should) be designed and optimized purely from a mathematical standpoint. (We can safely assume there’s a vast amount of input data to work with so we can use statistics.)

The current implementation is discussed in (more or less) details under this forum post.

The exact statistical method is not know though. (Do you have more information, maybe?)

Generally if we want to solve some parameter optimization problem, first we need some target function, ie.: for what to optimize. According to the above post, we actually want to achieve two different goals using estimates BR values:

- balance sides in battles
- somehow “balance” personal efficiency (based on research points and silver lions amounts)

There is an inherent problem. Single parameter might not be adequate to describe two different goals (it can, but accuracy and certainty will suffer considerably).

The first goal is clear, we want to approach to 50% win rate for each side. However there is a problem here, unless BR is weighted by player skill (ELO system or alike) this goal is hard to achieve. Skill definitely modify the result and even may have stronger effect on the outcome than BR. Therefore if we factor out BR from the results it will be inaccurate because our input is loaded with unnecessary noise (randomness in skill level). I think incorporating skill would result in much better BR-s (for this goal).

The target function of the second goal is pretty much fuzzy and ill defined in the post:

it will provide maximum equal personal efficiency (based on research points and silver lions amounts) in battles (in average)

This doesn’t seem to be a good target, because it allows some strange (unfair) solutions where one guy gets extreme high income while all the others get nothing (the resulting average is still high enough). The average is *not* a good fairness validator function (eg. median would be much better). I’m not sure what was the intent in the original post (please share if you do know. It’s probably to achieve some kind of “efficiency fairness”) so let’s see what are the alternatives.

**Target:** BR reflects capability of the vehicle, ie.: how well *can* it be played (and not necessarily is played).

**Effect**: this method favors skill. If you know your vehicle well you earn a lot, if you don’t know how to use it properly you will suffer. BR reflects the maximum potential, not the average usage.

**Solution**: Best way to filter data. Exclude casual users results entirely and use advanced player’s performance only. It can be done using “clan matches” only (downside: very small subset of data) or evaluate top n players’ result and discard the rest of the scoreboard. If we have enough data, it is even possible to factor out effects of different aspects of the vehicles (eg. effect of a specific gun, or speed) with multivariate statistical analysis. This could help estimate BR of new vehicles.

Your alternative solution?

**Target:** BR reflects the vehicle usage efficiency, ie.: how effectively it *is* played by the community. (probably the current implementation).

**Effect**: Battle rating represents the capabilities of the vehicle in the hand of an “average player”. This method will introduce some skewness in favor of popular vehicles and might not be stable (it’s hard to make it stable). It’s easy to see why: we can safely suppose usage (and popularity) depends on BR, so if we calculate BR from usage we get a dynamic (recursive) system what is notoriously unstable and sensitive to initial conditions (the system may have an attractor or even a fixed point attractor, but also might behave completely chaotic). It seems the current implementation falls into this category.

**Solution**: I’d suggest unknown function estimation with regression. The preferred Silver Lion (SL) income ratio (preferred by Gaijin at least) is already implemented as income multipliers per vehicle, therefore we can safely suppose we should optimize for equal silver lion income per Vehicle. First, we should calculate the average SL income: compute average SL income for each vehicle, then average the averages. This is our target value. Supposedly if we increase the BR of some vehicle we’ll overshoot, if we decrease it, undershoot. Unfortunately we do not know the exact mapping function(s) Mv(BR)->SL which maps battle ratings of vehicle v to silver lions (income), so we must estimate it. But how can it be done? Fortunately we have plenty of data! The matchmaker constantly insert vehicles uptier and downtier (Higher or Lower BR than the vehicle BR) so we simply consider the effective BR of the vehicle as the tier of the match. We estimate the function Mv with linear (or polynomial) regression: eg. using the simple income model Mv(b)=β0 + β1 * b + ϵ, where b is the battle rating and ϵ is the error term. Now we can use our Mv models for each v to identify the correct BR to get the average SL income. (It’s worth to note that, the method would work much better if the uptier/downtier spread would be larger (currently we have 7 data points) and using polynomial functions probably worthless).

**Target**: Balanced battles, BR reflect true capabilities.

**Effect**: Handicapped games, veterans will have harder time. This can be compensated by Silver Lion multiplier for being veteran or high bonuses for “rank doesn’t matter” events.

**Solution**: Use the first method to calculate BR (it’s stable) and modify the matchmaker to consider skill. Do not force equal number of players. Even a simple multiplication might do the trick: weighting BR between eg. 0.3 (absolute noob) and 1 (veteran). BR still can be capped. This way weaker players will be handicapped by BR or number. Eg. matchmaker can run 10 unskilled players against 5 skilled players everyone having the same BR.

What is your preferred target / solution?

[your preferred target and solution here…]

Please don’t post “personal experiences”. Personal experience inevitably contains huge amount of subjective bias. We should trust statistical data analysis and math and only that. At least in this topic.

Disclaimer: sorry for possibly inaccurate mathematical formulations, I’m computer scientist / researcher but not a mathematician. :) Comments are welcome.