Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

I know of the Truskill algorithm, it's quite complex but effective.

My question is there other algorithms/methods to determine a players skill for accurate measuring for multi-player competitive play?

share|improve this question
    
A bit subjective/broad I think, what genre of game are you specifically thinking of? (I don't see an fps and racing game sharing a simple ranking method). Perhaps this should be community wiki-ed and made into a list of algorithms/methods/middleware/whatever? –  Riley Adams Sep 14 '10 at 3:05
    
Most ranking systems use wins, lose and match ratios. Then make room for game specific conditions so most methods should work with minor tweaking. –  Wight Sep 14 '10 at 3:18
    
Are there any patent issues with TruSkill? Microsoft built it and they're not known to be community friendly. –  deft_code Sep 14 '10 at 15:06
2  
If you avoid algorithms that might be patented, you're not going to be able to do anything practical. If you know something is patented and use it anyway, you can end up owing more damages if you get sued. So let's assume no, it's not patented - it is trademarked, so don't call it "TrueSkill" unless you're on Xbox Live. –  user744 Sep 14 '10 at 17:03

4 Answers 4

up vote 8 down vote accepted

I think asking for "simplest most effective" is an unrealistic requirement, but there are certainly a few good approaches. Rather than go into detail, I'll link to an article:

http://www.lifewithalacrity.com/2006/01/ranking_systems.html

This covers:

  • ELO
  • an ELO variant by Days of Wonder
  • TrueSkill (and glicko, which it appears to be based on or at least similar to)
  • eGenesis Ranking (for Tales in the Desert)

On the whole you'll see that they're all pretty much variations on the same theme - you pick a starting or average value for a player, and then the values are used to predict the game outcome. The difference between the actual outcome and the predicted outcome is used to modify the scores for each player, and the process repeats with the adjusted scores. Since each modification to the scores makes the predicted result more accurate, the scores converge on their 'true' values. (This actually assumes that it's a game of skill rather than chance, that the skill in question is capable of being linearly ranked, etc.)

share|improve this answer
    
"simplest most effective" is just a cheat to prevent being forced to make this a community wiki. –  Hendrik Brummermann Sep 16 '10 at 6:16

Depends on the game. There are a few problems you can get into:

  • For games that have a luck component and a skill component (Bridge, Poker, Magic:the Gathering, etc.), most algorithms don't account for the fact that a weaker player can sometimes get lucky. If your game falls into this category, you'll need to do some work. Generally this means figuring out what percent is luck and what percent is skill (a difficult trick, but if you've been using a skill-based algorithm like Elo already, you could run some metrics on the results to figure out how often the algorithm predicts an upset versus how often it actually happens). Then you have to change the algorithm, and exactly what to change it to is probably beyond the scope of this question.

  • For games where matches can be manipulated (I can choose to play a ranked game against my friend), you have to put extra safeguards in place to prevent players from purposefully throwing matches.

  • For games where a player can get "out of practice" if they don't play regularly, the system could involve some sort of time-based degradation. The Glicko system is a mod of Elo that adds an "uncertainty" variable to each player's ranking, based on how many games they've played and how recently they played them; the more certain a player's ranking is, the less it changes from game to game.

  • Multiplayer games (whether free-for-all, team-based, or some other player structure) need special care, of course. Some team-based games make it easier to figure out each individual's contribution, compared to others.

  • Also ask what the purpose of your rating/ranking system is. In professional games and sports, the purpose is statistical: rating is used as a predictor of the outcome of any given match. The primary goal here is accuracy. However, this is rarely what players want; instead they want progression, a feeling they are getting better and climbing through the ranks (whether they are actually getting better or not). In short, there is a tradeoff between accuracy and fun that you need to consider.

share|improve this answer
    
Everything about design is always a balance =) –  Wight Sep 15 '10 at 1:29

What did you find complicated about TrueSkill? I thought it was a straightforward algorithm with just the right amount of knobs to tweak for different game modes, and it reduces to Elo when the game is head-to-head with high certainty.

If you're looking for the simplest way to to effectively rank and measure a player in a multiplayer environment - my recommendation is TrueSkill.

share|improve this answer
    
I was just looking for an alternative that can be tweaked more easily. Like what Starcraft 2 used. But TrueSkill is a good measure it's just harder to include play measures to the variance. –  Wight Sep 15 '10 at 1:26

What about a pairwise system like elo? It has been used for ages in "normal" sports with excellent results.

For free-for-all-matches you could interpret them as a bunch of pairwise matches and assign points based on the relative standings.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.