I'm currently working on a gaming site where users will submit virtual players for different games, like Chess, Nash, Backgammon, Go, etc. The idea is that users don't compete themselves, but through their virtual players. There will be leagues, tournaments, and other competition formats.
The question is which would be a good rating system for users in this environment. Take into account that every user may have many different virtual players playing in many different games. As a general guideline I would like to guarantee the following properties:
- Users who have a lot of mediocre players should not score higher than users with a few very good players.
- A user with a high rating should not be penalized if he adds a new bad player, until he has had enough time to improve his player.
- Users who don't play often should not score higher than users who play every day.
Thanks in advance.
Answer
I would divide the ranking into 3 levels:
Bottom level is where players are rated. Use ELO or a similar system, where a strong player is penalized much more for loosing with a weak opponent, than he could be awarded. Also secure game system for users using many accounts, e.g. by random matchmaking. This will solve your 3rd point:
- Users who don't play often should not score higher than users who play every day.
Middle level is rating for every group of players owned by one user and playing one game, e.g. Alejandro's Chess players. You most probably don't want a chess player to play with a Go player, as they use different algorithms, and even the best player of one game will probably lose with one of the worst players in another. To calculate the rating of a group, take an average of ELO of the players in the group, not considering 20% of the worst players in this group. This will ensure the extraordinarily terrible players won't affect average rating. Keep in mind this is yet another reason to make matchmaking random. So this covers two remaining points of your requirements
- Users who have a lot of mediocre players should not score higher than users with a few very good players.
- A user with a high rating should not be penalized if he adds a new bad player, until he has had enough time to improve his player.
Top level is rating for a user. This is a very subjective part; you could for example:
- show best achievement of the user (#23 place in silver league)
- show average of scores of all game-groups
- show average of scores of all game-groups the user is active in
- show the highest of scores of game-groups
- calculate the main score in a complex way, e.g. find the highest possible score of a user, being an average of chosen groups plus 100 bonus points for every group taken into an average.
No comments:
Post a Comment