https://github.com/dcodeio/falseskill
A literal implementation of the Glicko-2 rating system in TypeScript.
https://github.com/dcodeio/falseskill
Last synced: 5 months ago
JSON representation
A literal implementation of the Glicko-2 rating system in TypeScript.
- Host: GitHub
- URL: https://github.com/dcodeio/falseskill
- Owner: dcodeIO
- License: apache-2.0
- Created: 2016-01-30T20:21:46.000Z (almost 10 years ago)
- Default Branch: master
- Last Pushed: 2016-01-31T15:01:59.000Z (almost 10 years ago)
- Last Synced: 2025-07-24T06:02:07.342Z (6 months ago)
- Language: JavaScript
- Homepage: http://dcode.io
- Size: 252 KB
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
FalseSkill
==========
A literal implementation of the [Glicko-2](http://www.glicko.net/glicko.html) rating system in TypeScript. Got it?
Usage
-----
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
API
---
##### Configuration:
```ts
// Defaults
falseskill.Tau = 0.75
falseskill.InitialRating = 1500
falseskill.InitialDeviation = 350
falseskill.InitialVolatility = 0.06
```
##### Create a rating for a new player:
```ts
falseskill.newRating() : PlayerRating
```
##### Calculate a player's new rating once a rating period has concluded:
```ts
falseskill.calculateRating(player : PlayerRating, opponents : OpponentRating[], outcomes : number[]) : PlayerRating
```
Or update in place:
```ts
falseskill.updateRating(player : PlayerRating, opponents : OpponentRating[], outcomes : number[]) : void
```
##### Calculate the rating of a player who has not competed in the rating period:
```ts
falseskill.calculateRatingDidNotCompete(player : PlayerRating) : PlayerRating
```
Or update in place:
```ts
falseskill.updateRatingDidNotCompete(player : PlayerRating) : void
```
##### Copy an already calculated rating to a player:
```ts
falseskill.copyRating(from : PlayerRating, to : PlayerRating) : PlayerRating
```
##### Derive a set of matches from a multiplayer (3+ players) game:
```ts
falseskill.deriveMatches(rankings : Ranking[], filterBy? : PlayerRating) : Match[]
```
##### Update ratings in place, for a set of matches played:
```ts
falseskill.updateRatings(matches : Match[]) : void
```
##### Calculate the presumed match quality in advance:
```ts
falseskill.calculateMatchQuality(player : PlayerRating, opponents : OpponentRating[]) : MatchQuality
```
Interfaces and constants
------------------------
```ts
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 { }
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](blob/master/falseskill.ts) for detailed documentation.
**License:** [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html)