Skill and experience for your games. Two numbers per player, per pool: a skill rating that moves up and down with each result and feeds matchmaking, and an experience total that only ever rises and drives rank.
@pithy-sh/rating
pithy add ratingA skill rating that moves up and down with each result and feeds matchmaking, and an experience total that only ever rises and drives rank. Keeping them separate is the point — one is a measurement, the other is a reward.
What it sits on
Two numbers per player, per pool. The algorithm is pluggable: Elo, Glicko-2 and TrueSkill ship built in, and you can register your own.
The honest bit
A leaderboard answers who is ahead. A rating is an input — to pairing, to placement, to what a player sees next. Conflating them gives you a scoreboard that cannot match anyone fairly, which is why these are two packages.
If you build it yourself
Elo is a formula you can write in an afternoon. A rating system is not.
A rating means nothing across different games or modes, so every number is per pool — and that shapes every table.
New players move fast and settle slowly, or their first match ruins someone's season.
Glicko-2 exists because a rating you have not tested in six months is not the same as one you have.
Two-player maths does not extend to eight players without a real model, which is what TrueSkill is.
One moves both ways and feeds matchmaking; the other only rises and drives rank. Conflating them ruins both.
pithy add ratingComposes with
In the dashboard
Rating distributions per pool, and how they move after a result.
The dashboard is the admin interface for your own application: whatever this capability writes, your team can look up, check and act on from a browser. Reading is free, forever, with no time limit. Connect the project when you deploy.
Everything else
Each one composes the same way. Nothing you skip costs you anything.
One command installs the package, wires its bindings into every environment your project declares, and runs its migrations.