Exemple #1
0
    public void Calculate(ASEloPlayer winner, ASEloPlayer loser)
    {
        //Expected result:
        //Ea = 1 / (1 + (10 ^ ((Rb-Ra)/400)))
        //New rating:
        //R'a = Ra + K * (1-Ea)

        float Ea = 0; //expected winrate for a
        float Eb = 0; //expected winrate for b
        float Ra = winner.elo;
        float Rb = loser.elo;

        Ea = 1 / (1 + (Mathf.Pow(10, (Rb - Ra) / 400)));
        Eb = 1 / (1 + (Mathf.Pow(10, (Ra - Rb) / 400)));

        Ra += K * Eb;
        Rb -= K * Ea;

        winner.elo = Mathf.RoundToInt(Ra);
        loser.elo  = Mathf.RoundToInt(Rb);

        if (loser.elo < floorElo)
        {
            loser.elo = floorElo;
        }
    }
Exemple #2
0
 public void SetupNewEloPlayer(ASEloPlayer player)
 {
     player.system = this;
     player.ResetElo();
 }