# Player Rating

Mario Kart Wii gives each player in public online rooms a rating. This is called **VR** or **Race Rating** for VS mode and **BR** or **Battle Rating** for battle mode.

## Contents

## Algorithm

When a player creates a license they start with 5000 of each rating. After each race or battle online, the appropriate rating is updated based on the rating of the players that were beaten/lost to. The rating along with any changes is displayed at the end of each match. The rating cannot increase beyond 9999 or decrease below 1. Disconnecting from the match results in the same loss of rating as losing to every other player in the match which means it is always preferable to try to beat at least one other player rather than disconnecting.

For the purposes of rating calculation, each player is paired individually with each other player and a change is computed. The winner of those two players gains rating according to the change value and the loser of those two players loses rating according to the change. In the event of a tie, neither player wins or loses ratings. For the purposes of a battle, the player win/loss is determined by the score of that player, with 3 additional points awarded to all players on the winning team in balloon battle and 5 additional points to each player on the winning team of a coin runners match. The total change in rating is simply the sum of the losses and gains of that player. Therefore the player in first can never lose rating and the player in last can never gain rating. Guest players are always treated the same as a 5000 rated player for the purpose of the calculation.

To compute the change of a given pair of players, the rating of the winner is subtracted from the loser. This value cannot be bigger than 9998 or less than -9998 and the game will cap this difference at those values in the event of a big difference due occurring (for example due to rating cheats). The game then uses a uniform cubic b-spline curve function with knot vector ({0,-20002}, {0,-15002}, {0,-10002}, {1,-5002}, {8,-2}, {50,4998}, {125,9998}, {125,14998}, {125,19998}, {125,24998}) to determine the change. An implementation of this function is available. The game's implementation is subject to various rounding errors and so may not match the mathematical definition of the function.

## Impact

The rating value is used in online matchmaking to group players of similar skill. A player can only match with a room if the host of the room has no more than 2500 more or less than the searcher. For certain (lower) rating values a player can only match if the host has no more than 1500 more or less than the searcher.

In VS mode, VR is used to determine the engine class (CC) determination of online races. The engine class is somewhat random but the following rules control the probability.

Lowest VR player | Average VR | 100cc | 150cc | Mirror |
---|---|---|---|---|

≥ 5300 | ≥ 5700 | 20% | 50% | 30% |

≥ 5300 | < 5700 | 60% | 40% | 0% |

< 5300 and ≥ 4800 | ≥ 5200 | 60% | 40% | 0% |

< 5300 and ≥ 4800 | < 5200 | 100% | 0% | 0% |

< 4800 | any | 100% | 0% | 0% |

In battle mode, BR is used to decide the team groupings of the players of the battle. The highest ranked player will be assigned to red team, then the next two highest ranked players will be put on blue team. The next 2 highest ranked players will be put on the red team and so on until all players are assigned.

Red Team | Blue Team |
---|---|

1st | 2nd |

4th | 3rd |

5th | 6th |

8th | 7th |

9th | 10th |

12th | 11th |

In friend rooms, the rating is not used to determine battle teams, but it is still used to determine the engine class (CC) for races.

Lowest VR player | Average VR | 100cc | 150cc | Mirror |
---|---|---|---|---|

≥ 5000 | ≥ 5700 | 20% | 50% | 30% |

≥ 5000 | < 5700 | 60% | 40% | 0% |

< 5000 and ≥ 4500 | ≥ 5200 | 60% | 40% | 0% |

< 5000 and ≥ 4500 | < 5200 | 100% | 0% | 0% |

< 4500 | any | 100% | 0% | 0% |

The rating value of each player is also displayed on screen to the all players in a match both before and after the match.

## Exact Calculation

Leseratte and Wiimm analyzed the source code of Mario Kart Wii and called the internal function for all possible delta values. The results are used to fix the VR calculation of Wiimms SZS Tools as of v2.18a, so that both will return the same VR values. Before Chadderz algorithm of above was used, that is not fully exact because of rounding issues.

Here is the complete VR calculation source of *Wiimms SZS Tools* written in C. It uses a table and a binary search:

## Mods

- Wiimmfi does only consider rating during matchmaking if enough rooms are available.

- CTGP-R does use rating during matchmaking except in Countdown Mode. CTGP-R will stop considering rating in matchmaking after 60 seconds of searching.

- CTGP-R uses a different probability for engine class if the average VR of the room is ≥ 7500. The probabilities are 100cc 5%, 150cc 65%, mirror 30%.