A faster and open license asymmetric multi-team, multiplayer rating system comparable to TrueSkill.
In the multifaceted world of online gaming, an accurate multiplayer rating system plays a crucial role. A multiplayer rating system measures and compares players' skill levels in competitive games to ensure balanced match-making, boosting overall gaming experiences. Currently, TrueSkill by Microsoft Research is a notable rating system, but gaming communities are yearning for faster, more adaptable alternatives.
Here are some, but not all, of the reasons you should drop TrueSkill and bury Elo once and for all:
graph TD
subgraph OpenSkill["OpenSkill Features"]
subgraph Game["Game"]
GF1[Multiplayer]
GF2[Multifaction]
GF3[Asymmetric Faction Size]
GF4[Predict Win, Draw, Rank]
GF5[Per Player Weights]
end
subgraph Technical["Technical"]
TF1[100% Pure Python]
TF2[CPython and PyPy Support]
TF3[C-compiled Wheels]
TF4[100% Test Coverage]
TF5[5 Separate Models]
end
subgraph Performance["Performance"]
PF1[150% faster than TrueSkill]
PF2[Accuracy matches TrueSkill]
PF3[Open License]
PF4[Partial Play]
PF5[Fine-grained Parameter Control]
end
end
style GF1 fill:#f37231,color:#ffffff,stroke:#f37231
style GF2 fill:#f37231,color:#ffffff,stroke:#f37231
style GF3 fill:#f37231,color:#ffffff,stroke:#f37231
style GF4 fill:#f37231,color:#ffffff,stroke:#f37231
style GF5 fill:#f37231,color:#ffffff,stroke:#f37231
style TF1 fill:#f37231,color:#ffffff,stroke:#f37231
style TF2 fill:#f37231,color:#ffffff,stroke:#f37231
style TF3 fill:#f37231,color:#ffffff,stroke:#f37231
style TF4 fill:#f37231,color:#ffffff,stroke:#f37231
style TF5 fill:#f37231,color:#ffffff,stroke:#f37231
style PF1 fill:#f37231,color:#ffffff,stroke:#f37231
style PF2 fill:#f37231,color:#ffffff,stroke:#f37231
style PF3 fill:#f37231,color:#ffffff,stroke:#f37231
style PF4 fill:#f37231,color:#ffffff,stroke:#f37231
style PF5 fill:#f37231,color:#ffffff,stroke:#f37231
pip install openskill
The official documentation is hosted here. Please refer to it for details on how to use this library.
>>> from openskill.models import PlackettLuce
>>> model = PlackettLuce()
>>> model.rating()
PlackettLuceRating(mu=25.0, sigma=8.333333333333334)
>>> r = model.rating
>>> [[a, b], [x, y]] = [[r(), r()], [r(), r()]]
>>> [[a, b], [x, y]] = model.rate([[a, b], [x, y]])
>>> a
PlackettLuceRating(mu=26.964294621803063, sigma=8.177962604389991)
>>> x
PlackettLuceRating(mu=23.035705378196937, sigma=8.177962604389991)
>>> (a == b) and (x == y)
True
If you're struggling with any of the concepts, please search the discussions section to see if your question has already been answered. If you can't find an answer, please open a new discussion and we'll try to help you out. You can also get help from the official Discord Server. If you have a feature request, or want to report a bug please create a new issue if one already doesn't exist.
This project is originally based off the openskill.js package. All of the Weng-Lin models are based off the work in this wonderful paper or are the derivatives of algorithms found in it.
- Julia Ibstedt, Elsa Rådahl, Erik Turesson, and Magdalena vande Voorde. Application and further development of trueskill™ ranking in sports. 2019.
- Ruby C. Weng and Chih-Jen Lin. A bayesian approximation method for online ranking. Journal of Machine Learning Research, 12(9):267–300, 2011. URL: http://jmlr.org/papers/v12/weng11a.html.