Vixen
caa30e12
csharp
public sealed class EloRatingModel

Elo: one number, and everybody knows how it works.

Read the guide page for this →

Remarks

Right for 1v1, and right for any game whose players will ask. Doc 28 names transparency as the reason it ships alongside a better model rather than being replaced by one — a rating a player can compute themselves is a rating they will argue with rather than about.

⚠ A team's rating is the mean of its players', not the sum. A sum makes a five-player team five times as strong as one player and matches it against nobody; the mean is what the expectation formula's four-hundred-point scale is calibrated for.

Fields and properties (3)

  • public double K

    How far one result may move a rating.

  • public string Name

    What it is called, in a queue definition and in a report.

  • public Rating Starting

    What somebody starts on.

Methods (5)

  • public EloRatingModel(double k = 32, double start = 1500)

    Makes one.

  • public static double Expected(double rating, double opponent)

    What one rating is expected to score against another, from zero to one.

  • public double AfterPeriod(double rating, IReadOnlyList<double> opponents, double score)

    What a rating becomes after a set of games treated as one period.

  • public IReadOnlyList<Rating[]> Update(IReadOnlyList<Rating[]> teams, IReadOnlyList<int> ranks)

    Updates every team's ratings after a result.

  • public double Quality(IReadOnlyList<Rating[]> teams)

    How even a match would be, from zero to one.

Used by (2)

  • DuelsVixen.Live.Matchmaking.Tests
  • EloTestsVixen.Live.Matchmaking.Tests