# Help creating a ranking system

1. Feb 17, 2015

### narf0708

I've recently been wishing to create a ranking system for a game that several friends and I play, a ranking system that will keep track of our relative skill levels over the course of many games, sort of like a tournament, but with more freedom, more akin to an Elo type system. However, I've found that my mathematical skills are a bit too weak to create something satisfying by myself, so I would appreciate some help in the matter.

To describe the relevant parts of the game:
-Each game can have between 2 and 31 players. 10 players is the most common amount though.
-There are a total of 2,000 points in each game that are distributed to players based on how well they are doing. These points get reset and recalculated every day/iteration of the game until someone wins.
-When a player reaches 1,000 points, he/she wins and ends the game.
-The game can end before someone reaches 1,000 points if there are only three players left in the game and all three agree to end the game as it is, in which case the person with the most points wins.
-Most players have 0 points at the end of the game due to other players taking their points and eliminating them entirely.

Ideally, the system should have all(or at least most) of the following properties:
-It should be easier to increase one's ranting for wins than to decrease one's rating for losses. (due to how most of the players are eliminated and have a score of 0 at the end)
-Higher player ratings should increase more slowly, and decrease more readily.
-Lower player ratings should increase more readily, and decrease more slowly.
-Survival to the end(shown by non-zero point values at the end of the game) should be rewarded, even if the player didn't win.
-There should be a bonus for getting in 1st, 2nd, or 3rd, with the greatest bonus to the person in first and lowest to person in third.
-There should be little to no reward for playing a greater number of games.

Unless I'm missing something, the algorithm should have the following inputs, knowns, and outputs:
Inputs: Game number, name of each player along with their associated score at the end of the game.
Knowns: There will be a database built consisting of all the past games, players, and ratings which can be referenced.
Outputs: An ordered list consisting of each player's name and new rating.

I've tried a few simple things, but none of the simple things are able to encompass everything the ranking system needs to be able to do. When I try to do anything more advanced(namely trying to account for all of the players' scores, the number of competing players, the average, range, and/or deviation of all the players' ratings), I get stuck due to my own limitations of creativity and mathematical knowledge.

2. Feb 17, 2015

### Staff: Mentor

Have you tried something like class rank as used by many highschools in determining who will be valedictorian? It's usually based on grades and course difficulty.

3. Feb 17, 2015

### narf0708

Had thought that class rankings were determined by averages(with weighting for certain classes), which is both the first thing I tried and too simple for this. For one, someone who consistently wins without getting to the 1,000 points because of agreement with the other players could be ranked lower than someone who doesn't win as often, but wins by passing the 1,000 point mark.
While averaging works excellently for having the valedictorian be the person who has had the highest cumulative grade, it doesn't work for determining the current skill level.

Last edited: Feb 17, 2015