Matchmaking is the main component of most modern multiplayer games. Once a developer takes it seriously, it turns out that newcomers regularly encounter professionals in battle, and some players have to wait forever just to get into the match. In addition, it is difficult to test and analyze before launch, because you need to consider many factors. How are players distributed geographically? How long are they ready to wait in line? Which ping is optimal for a comfortable game? These and other factors affect the quality of matchmaking.
Under the cut, we will first discuss the general practice of selecting battles in multiplayer games, and then share our own experience in organizing matchmaking for War Robots.
Which criteria to choose?
So what determines good matchmaking? Of course, this depends on the platform and genre features of the game, but, as a rule, developers are guided by the following criteria:
- short waiting time;
- low ping;
- the minimum difference in the experience, skills and progress of the players: here the experience of the game can be taken into account both in general and for a specific class, if the game has a division into them;
- opposition to each other parties - pre-assembled groups of players aimed at coordinated work;
- simultaneous start of the match for all players.
Other requirements are possible, for example:
- pick up players who speak the same language;
- take into account the results of the last matches of the player, as well as the coefficient of compliance with the rating: if a player has lost the last few matches, he may just be out of shape now, and for some time he should give opponents easier;
- make matchmaking taking into account the composition of the teams: if one team lacks, for example, a tank or a healer, look for opponents a team with the same composition;
- bring together trolls, liveries and grippers so that they do not interfere with other players;
- to diversify the composition of players so that the same people do not meet in different matches too often;
- bring together players using voice chat.
It is far from always possible to simultaneously satisfy all these requirements. Moreover, a large number of requirements always go against the desire to achieve a short waiting time. Even if the game is very successful, and hundreds of people are waiting for the match every minute, there may still not be enough time to fulfill some requirements. For example, if you want to find another satisfying Australian team for one team of Australians as rivals, the waiting time can increase dramatically.
In this regard, from all the desired requirements, it is necessary to choose the most important for a particular project. Shortening this list will lead to better compliance with the remaining requirements and shorter waiting times.
Also, when developing multiplayer games, it is worth remembering that the addition of various game modes splits the player base into several queues and thereby leads to an increase in waiting time, which means a deterioration in the quality of matchmaking. Therefore, think again before adding this or that mode to the game, and whether it is worth giving the player the opportunity to choose between them.
Reducing the number of requirements for matchmaking is not the only way to reduce the waiting time. For example, you can implement multiplayer on the Drop-In-Drop-Out system, so that users can join the game at any time and exit it at any time. If this is not possible, with a short duration of matches, you can allow the player to play with bots in the waiting process. Of course, this will not solve the problem of expectation, but at least it will allow us to pass the time.
How to assess compliance with the selected criteria?
So, we have a certain number of players, which we must allocate to the matches. How to do it better? Which is preferable: the same level of skills or low ping? How can we balance these requirements so that the parties play against each other?
For comparison, we need a certain metric. Somehow, all these criteria must converge in one parameter, by the highest value of which the system can conduct a search. Next we will call it the score of the match.
In order to get the value of this assessment, you must first calculate the individual indicators. Consider a combination of factors:
- Teams with the same skill level. This is the most obvious criterion in matchmaking. For each game, the method of calculating this parameter is individual. One of the simplest: take the average level of experience per team and compare it with the same value for another team. The greater the difference, the worse the match is made and the lower the desired indicator.
- Players with the same skill level. Even if two teams are perfectly balanced, but consist, for example, of two professionals and one beginner, the average indicator for the skills of the teams will be the same, but a good match will still not work. Therefore, we introduce another parameter not for the team as a whole, but for each player individually, or the variance of the level of skills within the team.
- Party. Ideally, a group playing together for a long time should oppose another of the same group, and not against three separate players. It's easy to calculate: if a team has been playing with each other for a long time, we have an indicator equal to 100%. If a team of three plays against two friends and one random player, we get 60%. If none of the players have played with each other before, the value will be 0%.
- Ping opponents. For each user, we check ping with all three players of the opposing team. The higher the ping, the lower the score.
- Variability of opponents. In the pursuit of meeting higher priority requirements, the matchmaking system can often put the same teams against each other with the highest match rates. Therefore, so that players do not get bored constantly playing with familiar faces, it is worth keeping track of how many times they meet in matches.
An example of a match in which teams have a 100% indicator for a party, a good indicator for the average skill in the team, but a weak correlation in the skills of individual players: in the blue team they differ significantlyHow to take into account the ambiguity of the criteria?
So, for each of the criteria, we have a score from 0% (very bad coincidence) to 100% (best), but in the end we need to get only one number. For this we will use the weighted average value. Then we can set the priority of importance for each criterion.
When calculating the estimate, it is worth considering whether we want to obtain a linear dependence of the parameters. For example, is improving the ping from 210 ms to 200 ms as worthwhile as from 110 ms to 100 ms? Both options are improved by 10 ms, but the ping value itself is twice as different.
Interestingly, in the case of some criteria, it turns out to be easier to obtain a significant difference in performance than in the case of others. So, in order to gain 0% in terms of skill level, you need to collect three professional players and three beginners in a match, which is extremely rare. However, getting 0% by the criterion of party is much easier, because for this you need to have one long-assembled team against three single players. This aspect is also worth considering.
An example of how teams can be composed according to skill level. Green and yellow show ping between playersNow, according to the values โโof the indicators of each of the requirements, we can calculate the final score.
Since this number is the dominant criterion, the algorithm produces certain preferences. If the exchange of two players increases the evaluation parameter of one match by 5%, but reduces it by 10% in another match, the system will not do this, since in general the result will become worse. However, in some cases this can be neglected. So, it may be appropriate to improve one indicator from 50% (which is very bad) to 55% by reducing the other from 90% to 80% (which is still pretty good). This can be achieved, for example, by calculating the square root of all indicators of the assessment to the averaging stage. Thus, improving bad matches becomes relatively more important than good ones.
How does this happen in War Robots?
Since we are talking about a mobile game where everything should happen quickly, the main priority is the low waiting time before getting into battle. For this, the matchmaking system should be as simple as possible. At the moment, the War Robots matchmaker takes into account only the player selection rating (MMR) and tries to focus on parties, but since they are not widespread in the game, this criterion is secondary: if you cannot match parties of equal strength to each other, the system tries to combine with each other a few parties or does not focus on this criterion at all. And if one player leaves the battle, another player who meets the criteria will be taken in his place, but only at the very beginning of the match.
The rating of the selection of players depends on the number of wins / losses and place in the team, and depending on the outcome of the match, it can either increase or decrease. According to this rating, players are grouped into leagues and divisions. Inside the division, the matchmaker is looking for players with the closest rating score possible, gradually expanding the search range and covering the next divisions too. It is worth noting that the matchmaker tries to prevent players into the lower leagues who intentionally underestimate their rating by tracking them according to characteristic patterns of behavior: usually the number of defeats is greater than the average number of league battles per day.
Simplified War Robots Match Matching FlowchartThe system used to work wrong. The main criterion was the power of robots and weapons, and from the results of the matches only the last five were taken into account. The system was more vulnerable to manipulation. Experienced players could be in the same battle with the newcomers, if they just changed their weapons to weaker ones, or vice versa, a newcomer to the first-level robot could install the 12th weapon and end up in a battle with professionals, without having time to develop the skill of the game. In this regard, the rating system, based on the real experience of victories and defeats, turned out to be much more honest, although it was not possible to come to it right away: a complete reorganization of the matchmaking process is a radical step, therefore, at first attempts were made to simply set the system with additional conditions.
Work on optimizing and improving matchmaking in War Robots is ongoing. Perhaps in the future it will be possible to combine the old and new approach to finding matches, but do not forget that any improvement in the quality of matchmaking leads to an increase in waiting time. Therefore, the development of such a solution will be advisable only if it does not significantly affect the system performance.