# Player ranking using Elo with more than two players

I would like to use Elo to track player rankings between matches of a certain game, however the game can be played with up to four players in a match. I have seen games like Carcassonne use Elo with more than two players playing, but I am not familiar with Elo beyond a 1-1 matchup.

From the wikipedia article the two-player equations I would like to extend are:

Ea = 1/(1 + 10(Rb - Ra) / 400)

Eb = 1/(1 + 10(Ra - Rb) / 400)

Rxnew = Rxold + 32 * (W – Ex), where W=1 if X wins and W=0 if X loses.

How would the computation for Ex and W change given more than two players?

• I would be cautious about using an Elo-style system for games with more than two players, as many factors can conspire to make them less than pure games of skill - players ganging up on perceived strongest players, etc. If you mix scores from matches with different numbers of players I'd strongly suggest dropping the weightings (I.e. the '32' in the update formula for R) for games with more players. – Steven Stadnicki May 14 '13 at 0:43
• @StevenStadnicki thanks for the recommendation. I am unclear however on how dropping the weight constant addresses the issues you mention. Can you elaborate? – fbrereto May 14 '13 at 5:44
• By dropping the weight for multiplayer matches you're inherently saying that they're not as important to a player's rating as two-player matches are; essentially, you're saying that they're less representative of how good the player actually is. Magic does something similar to this with their tournament structure, where different levels of tournament have different K-values to represent how much weight they should be given in determining a player's rating. – Steven Stadnicki May 14 '13 at 6:53

As suggested by the top link in my Google search (link rot removed, site still available on the WayBackMachine at http://web.archive.org/web/20130308190719/http://elo.divergentinformatics.com/), you could calculate the individual changes in a players Elo rating (your R values), and then sum them up to provide the total change to apply to each player's rating.

i.e. If you have 4 players (A,B,C,D), calculate the change to A's rating (R-sub-a-sub-new) from their scores against B, C, and D, and then adjust A's rating by the total of the R-values calculated.

• I went this route and it seems to be working well so far, thanks. – fbrereto May 14 '13 at 5:45
• Unfortunately the link seems to be no longer valid. – Petr Pudlák Nov 15 '15 at 11:00
• Looks like here are the formulas for this idea: sradack.blogspot.ru/2008/06/… – dbf Dec 6 '15 at 19:47

I found a paper with PHP source code of a method similar to fnord's answer here: http://elo-norsak.rhcloud.com/3.php I created a more general purpose php implementation here: https://github.com/FigBug/Multiplayer-ELO I am using it with my board game group, and so far it seems to be working well.

The calculation of Ex and W would stay the same. Instead of using a K of 32, use a K of 32 / (#players - 1). Then, look at each permutation of 2 players and calculate (32 / (#players - 1) * (W - Ex)). Then RxNew is equal to RxOld + Sum of all the values you just calculated.

• It's generally good practice to include a summary of your method/recommendation in the body of an answer, rather than relying entirely on external links. Links have a habit of breaking over time, which can leave your answer missing crucial details when someone tries to look it up years from now. – DMGregory Dec 7 '15 at 13:43
• Thanks for your practic code, it's helpful! Just one suggestion to your realisation - may be it's better not to round intermediate results eloChange += round($K * ($S - \$EA)); but do rounding only after all of calculations when setting eloPost – FlameStorm Jan 8 at 11:05