Module

Rating

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

Built for Games
terminal
pithy add rating
Read the docs Source on GitHub

What it is for

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. Keeping them separate is the point — one is a measurement, the other is a reward.

What it sits on

Your D1.

Two numbers per player, per pool. The algorithm is pluggable: Elo, Glicko-2 and TrueSkill ship built in, and you can register your own.

  • D1

The honest bit

This is the system leaderboard deliberately left out.

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

The algorithm is published. The plumbing is not.

Elo is a formula you can write in an afternoon. A rating system is not.

Pools

A rating means nothing across different games or modes, so every number is per pool — and that shapes every table.

Provisional ratings

New players move fast and settle slowly, or their first match ruins someone's season.

Uncertainty and inactivity

Glicko-2 exists because a rating you have not tested in six months is not the same as one you have.

Teams and free-for-alls

Two-player maths does not extend to eight players without a real model, which is what TrueSkill is.

Rating and progression are different

One moves both ways and feeds matchmaking; the other only rises and drives rank. Conflating them ruins both.

terminal
pithy add rating

In the dashboard

Administer it from a browser, without building the screen.

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.

Add it, and get on with the feature.

One command installs the package, wires its bindings into every environment your project declares, and runs its migrations.