I’m trying to efficiently create a rating system, similar to TrueSkill. I’m trying to use this as it can support multiplayer games, instead of the Elo rating system. The problem I am having with TrueSkill is the maths behind it, and implementing that into Roblox.
My current setup is, each player starts on 1000 points (like the Elo system) They have to play 5 games to then get a proper ‘ranking’ based on their points after those 5 games.
Next process was how much points to hand out to each player, based on their points, plus their oppositions points.
So this would get the team that lost total points.
local LosingTeamTotal = 0
for _, player in pairs(Player:GetPlayers()) do
if player.TeamColor ~= WinningColor then
LosingTeamTotal = LosingTeamTotal + player.RankPoints
end
end
Then I’d have to do the same for the winning team
local WinningTeamTotal = 0
for _, player in pairs(Player:GetPlayers()) do
if player.TeamColor == WinningColor then
WinningTeamTotal = WinningTeamTotal + player.RankPoints
end
end
Then I’d divide each of those numbers by the amount of players on either team
(let’s just say I put all the players on the losing team in a table, same for the winning team (haven’t done it above, but you get the idea)
local LosingAverage = LosingTeamTotal / #LosingTeamPlayers -- Amount of losing players
local WinningAverage = WinningTeamTotal / #WinningTeamPlayers -- Amount of winning players
Now the hard part of giving each player the appropriate points. I’m not sure how to give each player the correct amount of points, as each player would get different amounts of points based on their own rating and whether or not they lost.
Tried reading a few articles on this subject and almost all contain large equations with greek symbols everywhere, which I can’t just use in Roblox and my math is at a level where I can do BIMDAS but that’s about the extent of my knowledge
XD
If there is a better way of doing this kinda stuff then I’d love to hear about it!