OpenSkill - A skill-based rating system for matchmaking

OpenSkill

Luau implementation of Weng-Lin ranking: a better, license-free alternative to TrueSkill

Repository | Tutorial & Documentation | Roblox model


What is OpenSkill?


OpenSkill is a skill-based ranking system with the purpose of assessing and tracking the skills of players in order to be able to create fair matches.
It is a port of the amazing openskill.js package.

How does it work?


Skill is characterized by two numbers: the average skill of the player (mu) and the degree of uncertainty in the player’s skill (sigma). Maintaining an uncertainty allows the system to make big changes to the skill estimates early on but small changes after a series of consistent games has been played.
Ratings are updated after every match based on the game outcome.

Why OpenSkill?


Compared to TrueSkill, this module is up to 20x faster. The efficiency and usage have been further improved after porting it to Luau. It doesn’t have any patents or licenses.
Generally, OpenSkill gives you a lot of freedom and you can customize it for your own purposes. For example, you can choose between a model similar to Glicko and one similar to TrueSkill.


You can start by looking at the tutorial here.

Any contributions are greatly appreciated!

23 Likes

@steven4547466 matchmaking service :eyes:

1 Like

This is different from match-making service.

OpenSkill was created exactly for modules like MatchmakingService.

Yes. I agree. Its more like a filter for match-making service right? Or is it just an alternative?

Matchmaking service is a module made by steven that sorts out organising games, placing as well as managing skill ratings, currently using glicko 2, but someone had requested TrueSkill to be used so that’s why I brought this of his attention

I just released a new version!

Version 1.1.0

  • The WinProbability function was revised and now supports any number of teams and players
1 Like

That’s great! I’ll definitely take a look at it when I can.

New version!

Version 1.2.0

  • Added the DrawProbability function, which is very useful to determine good team compositions in matchmaking
2 Likes