atomflunder / skillratings

Rust library for popular skill rating algorithms like Elo, Glicko-2, TrueSkill and many more.
https://docs.rs/skillratings/
Apache License 2.0
41 stars 4 forks source link

Support multiple teams in TrueSkill algorithms #8

Closed atomflunder closed 3 months ago

atomflunder commented 1 year ago

TrueSkill has the capability of supporting multiple teams just like the WengLin algorithm, and we should implement this.

This means that these functions should be implemented for the TrueSkill algorithm:

Resources:

asyncth commented 1 year ago

I would love to help with this, but I've read the "Computing Your Skill" blog post, started reading "The Math Behind TrueSkill" paper and I still don't really understand anything at all.

atomflunder commented 1 year ago

@asyncth Thanks for your interest, I am pretty much in the same boat. It is incredibly complicated. I implemented the expected_score_multi_team and draw_probability_multi_team but the actual trueskill_multi_team is still missing.

I looked around at multiple different implementations, but all of the properly working ones are all using different forms of inheritance, none of which I am sure how to port to Rust. Also most are in languages I have zero experience in.
The implementations without inheritance are either all completely non-functional, or missing team support (Only FFA).

Here are the two working approaches I found:

All of the other implementations I found on GitHub were ports of these two to different languages, and lots of them are not even working properly.

I tried implementing it but everything so far failed miserably. Not giving up yet, but I am glad of all the help I can get.

asyncth commented 1 year ago

I'm not even sure what does one need to do to implement TrueSkill 1v1 though, am I missing something?

atomflunder commented 1 year ago

I'm not even sure what does one need to do to implement TrueSkill 1v1 though, am I missing something?

For the TrueSkill 1v1 and Team v Team functions I went off the implementations on the https://github.com/moserware/Skills/tree/master/Skills repository, where the author uses some shortcuts and not the whole factor graph to calculate the ratings, which made things considerably easier.