elo-multiplayer

Rust crate for calculating multiplayer rating based on elo ranking system

Mentions

This multiplayer elo algorithm is implementation in rust of the equations mentioned in this article.

It works quite similar to the normal elo ranking. But the expected scores calculated by matching all the players against each other.

$$ EA = {\sum{i=1, i\neq A}^{N}{1\over 1+10^{(R{i}-R{A})/D}}\over {N(N-1)/2}} $$

where we have player $A$, number of players $N$ and the ranking of player $A$ is $R_A$.

And the score is a bit more complex then the usual two player elo rating. Currently only a linear method of getting the scores for the players has been implemented:

$$ SA^{linear} = {N-pA\over N(N-1)/2} $$

where $p_A$ is the postion of the player (1st, 2nd, etc...)

We can then calculated the new ranking of a player with:

$$ R'{A} = R{A} + K(N-1)(S{A}-E{A}) $$

Where $K$ is the usual K-factor.

Installation

If you are on Rust 1.62 or higher use cargo add to install the latest version:

sh cargo add elo-multiplayer

Alternatively, you can add the following to your Cargo.toml file manually:

toml [dependencies] elo-multiplayer = "0.2.2"

Example usage

```rust use elo_multiplayer::EloRank;

fn main() { let players: Vec = vec![1000.0, 1000.0, 1000., 1000.0]; let elo = EloRank { players, ..Default::default() }; let new_rankings: Vec = elo.calculate(); }

```