openskill.py
openskill.py copied to clipboard
Guidance on matchmaking
Is your feature request related to a problem? Please describe. This is a request to add a section to the documentation on how matches should be arranged.
Do the models make any assumptions on how matches should be arranged? For example should matches avoid playing the same players or teams back to back, or should matches avoid players arranging their own opponents? Should matches always try to balance teams based on the latest ratings?
In my use case I plan on using the rating algorithm for in person matches, where the player pool to make matches at any given time would be less than 20, with random teams.
It would be great if there was documentation on guidance on how to arrange matches to make rating convergence faster.
Do the models make any assumptions on how matches should be arranged? For example should matches avoid playing the same players or teams back to back, or should matches avoid players arranging their own opponents? Should matches always try to balance teams based on the latest ratings?
There are no such assumptions in the model. You are free to arrange matches however you like.
It would be great if there was documentation on guidance on how to arrange matches to make rating convergence faster.
There are many algorithms for matchmaking, but there is no obvious solution to make ratings converge faster since it depends on the ratings of the players. Some games match up the weakest players with the strongest in tournaments so that time isn't wasted spent having weak players play each other. For many games since it's more about finding equally strong players, they will usually have a pool of players waiting in a queue and then they are selected using brute force given some acceptable threshold of team rating imbalance.
Is there a known exploit against the algorithm such as by repeating the same matchups or by targeting new players to harvest default ratings? I assume as a default I should not be letting people choose their own matchups such as in custom games?
Can you be more specific? What do you mean by "harvest default ratings"? If time allows, perhaps an example would also help us understand your situation.
For example if I can choose my opponents can I game the model by only playing new players with default rating, or maybe even only playing players that I know are weaker, and thereby always winning my games?
For example if I can choose my opponents can I game the model by only playing new players with default rating, or maybe even only playing players that I know are weaker, and thereby always winning my games?
The point of this rating system is to prevent such scenarios. There will always be the issue of 'smurfing' in every ranking system. However, it's very difficult to do that with this system since you would have to create new accounts every 10 or 15 games the player wants to smurf. The best way to prevent this is restrict creation of new accounts for the express purpose of smurfing. Most games just ban such accounts since it can also be considered a form of griefing. In reality this is just a cheating issue and is left up to the developer of the game to prevent since there is no solution to it in any rating system. How would you feel if Magnus Carlsen enrolled in FIDE under a fake name and slowly, but craftily held back their skill just enough to avoid detection? Well it's just cheating, so the only solution is that when you find out they're doing it, ban them. IP logging or phone verification can prevent these issues in ranked games.
Sorry if I wasn't clear earlier. I don't mean how to prevent smurfing, but the scenario where someone who has 1 account chooses their opponents such that they only play other people who are lower rating and almost guaranteed wins.
I assume the default assumption of anyone using this library is that the players cannot choose their own matches, and should be matched with equal skill levels? I do feel like that's worth mentioning in the docs if it's something that should be done (don't let players choose their own matches).
In my case I'm operating an offline league, so the players would have to arrange their games in person.
Okay I get what you mean now. No, there are no such assumptions by the model. There are games in production that use OpenSkill that allow selecting your own competitors in lobbies. Of course, consistently beating lower ranked players than yourself will not result in you improving your leaderboard ranking. You are also free to balance matches yourself if that's something you want to do with a player queue. Selecting your own opponents mean that your skill level will take longer to converge (or may never converge) to a relatively accurate value. This also however means that players have no incentive to pick weaker players are competitors if they want to climb the leaderboard. If you still want to prevent players selecting weaker opponents, then just use a balancing algorithm to create matches.