Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support multiple teams in TrueSkill algorithms #8

Closed
atomflunder opened this issue Jan 5, 2023 · 4 comments · Fixed by #11
Closed

Support multiple teams in TrueSkill algorithms #8

atomflunder opened this issue Jan 5, 2023 · 4 comments · Fixed by #11
Labels
enhancement New feature or request help wanted Extra attention is needed

Comments

@atomflunder
Copy link
Owner

atomflunder commented Jan 5, 2023

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:

  • trueskill_multi_team (Done)
  • draw_probability_multi_team (Done)
  • expected_score_multi_team (Done)

Resources:

@atomflunder atomflunder added enhancement New feature or request help wanted Extra attention is needed labels Jan 5, 2023
@atomflunder atomflunder linked a pull request Jan 5, 2023 that will close this issue
@asyncth
Copy link
Contributor

asyncth commented Jan 13, 2023

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
Copy link
Owner Author

atomflunder commented Jan 13, 2023

@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
Copy link
Contributor

asyncth commented Jan 13, 2023

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

@atomflunder
Copy link
Owner Author

atomflunder commented Jan 13, 2023

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request help wanted Extra attention is needed
Projects
None yet
2 participants