diff --git a/CHANGELOG.md b/CHANGELOG.md index 3edd29f..b50c59a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,11 @@ This is a broad overview of the changes that have been made over the lifespan of this library. +## v0.27.0 - 2024-06-08 + +- Add full support for rating more than 2 teams with TrueSkill + - Includes match quality, expected outcomes, and the rating function + ## v0.26.0 - 2023-10-08 - Add expected_score_rating_period functions for all rating systems diff --git a/Cargo.toml b/Cargo.toml index 035789b..b0bb7ab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "skillratings" -version = "0.26.0" +version = "0.27.0" edition = "2021" description = "Calculate a player's skill rating using algorithms like Elo, Glicko, Glicko-2, TrueSkill and many more." readme = "README.md" diff --git a/README.md b/README.md index b9f0572..db1ecca 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [![](https://img.shields.io/crates/d/skillratings)](https://crates.io/crates/skillratings) Skillratings provides a collection of well-known (and lesser known) skill rating algorithms, that allow you to assess a player's skill level instantly. -You can easily calculate skill ratings instantly in 1vs1 matches, Team vs Team matches, or in tournaments / rating periods. +You can easily calculate skill ratings instantly in 1 vs 1 matches, Team vs Team Matches, Free-For-Alls, Multiple-Team Matches, or in Tournaments / Rating Periods. This library is incredibly lightweight (no dependencies by default), user-friendly, and of course, *blazingly fast*. Currently supported algorithms: @@ -24,7 +24,7 @@ Currently supported algorithms: - [DWZ (Deutsche Wertungszahl)](https://docs.rs/skillratings/latest/skillratings/dwz/) - [Ingo](https://docs.rs/skillratings/latest/skillratings/ingo/) -Most of these are known from their usage in chess and various other games. +Most of these are known from their usage in online multiplayer games. Click on the documentation for the modules linked above for more information about the specific rating algorithms, and their advantages and disadvantages. ## Table of Contents @@ -54,7 +54,7 @@ Alternatively, you can add the following to your `Cargo.toml` file manually: ```toml [dependencies] -skillratings = "0.26" +skillratings = "0.27" ``` ### Serde support @@ -71,7 +71,7 @@ By editing `Cargo.toml` manually: ```toml [dependencies] -skillratings = {version = "0.26", features = ["serde"]} +skillratings = {version = "0.27", features = ["serde"]} ``` ## Usage and Examples @@ -168,7 +168,7 @@ assert_eq!(new_team_one[0].rating.round(), 32.0); ### Free-For-Alls and Multiple Teams -The *Weng-Lin* algorithm supports rating matches with multiple Teams. +The Weng-Lin and TrueSkill algorithms also support rating matches with multiple Teams. Here is an example showing a 3-Team game with 3 players each. ```rust diff --git a/src/lib.rs b/src/lib.rs index ef19e95..791d432 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -63,7 +63,7 @@ //! //! ```toml //! [dependencies] -//! skillratings = "0.26" +//! skillratings = "0.27" //! ``` //! //! ### Serde support @@ -80,7 +80,7 @@ //! //! ```toml //! [dependencies] -//! skillratings = {version = "0.26", features = ["serde"]} +//! skillratings = {version = "0.27", features = ["serde"]} //! ``` //! //! ## Usage and Examples diff --git a/src/trueskill/mod.rs b/src/trueskill/mod.rs index 9a3554d..ca7b5b1 100644 --- a/src/trueskill/mod.rs +++ b/src/trueskill/mod.rs @@ -713,6 +713,9 @@ pub fn trueskill_multi_team( teams_and_ranks: &[(&[TrueSkillRating], MultiTeamOutcome)], config: &TrueSkillConfig, ) -> Vec> { + // TODO: Add partial play weights. + // Match Quality will also be affected (Matrix implementation), Expected Score probably too. + if teams_and_ranks.is_empty() { return Vec::new(); }