A literal implementation of the Glicko-2 rating system in TypeScript. Got it?
The make script generates an AMD module from the TypeScript sources. The npm package ( npm install falseskill
)
uses amdefine to expose it as a CommonJS module.
- falseskill.ts is the commented TypeScript source
- falseskill.d.ts is just the TypeScript definition
- falseskill.js is the transpiled AMD module
- falseskill.js.map is the source map for the former, referencing falseskill.ts
- falseskill.min.js is the compressed AMD module
- falseskill.min.js.map is the source map for the former, referencing falseskill.ts
// Defaults
falseskill.Tau = 0.75
falseskill.InitialRating = 1500
falseskill.InitialDeviation = 350
falseskill.InitialVolatility = 0.06
falseskill.newRating() : PlayerRating
falseskill.calculateRating(player : PlayerRating, opponents : OpponentRating[], outcomes : number[]) : PlayerRating
Or update in place:
falseskill.updateRating(player : PlayerRating, opponents : OpponentRating[], outcomes : number[]) : void
falseskill.calculateRatingDidNotCompete(player : PlayerRating) : PlayerRating
Or update in place:
falseskill.updateRatingDidNotCompete(player : PlayerRating) : void
falseskill.copyRating(from : PlayerRating, to : PlayerRating) : PlayerRating
falseskill.deriveMatches(rankings : Ranking[], filterBy? : PlayerRating) : Match[]
falseskill.updateRatings(matches : Match[]) : void
falseskill.calculateMatchQuality(player : PlayerRating, opponents : OpponentRating[]) : MatchQuality
falseskill.Loss = 0.0
falseskill.Draw = 0.5
falseskill.Win = 1.0
interface OpponentRating {
rating : number,
deviation : number
}
interface PlayerRating extends OpponentRating {
volatility : number
}
interface Ranking extends Array<PlayerRating> { }
interface Match {
player : PlayerRating,
opponents : OpponentRating[],
outcomes : number[]
}
interface MatchQuality {
qualities : number[],
min : number,
max : number,
avg : number,
med : number,
str : number
}
See falseskill.ts for detailed documentation.
License: Apache License, Version 2.0