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; } }
public void SetupNewEloPlayer(ASEloPlayer player) { player.system = this; player.ResetElo(); }