View Single Post
  #4  
Unread 03-28-2017, 12:09 PM
J u s T C J u s T C is on FIRE! 5+ wins in a row!
Join Date: Jul 2012
Posts: 6,812
Mentioned: 1535 Post(s)
Tagged: 21 Thread(s)
Estimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 6.88/10 starsEstimated Skill in Text: 6.88/10 starsEstimated Skill in Text: 6.88/10 starsEstimated Skill in Text: 6.88/10 stars
Ranked Text Record
4 Won / 0 Lost
Default

Quote:
Originally Posted by Mindless View Post
I've actually been working on a system off and on in my spare time writing pseudo code to try and figure out a good way to do the ranking system and I think it addresses this problem.

My method involves assigning a points to users that they gain or lose according to whether they win or lose. How many points the winner takes from the loser ranges on factors from the difference in estimated skill level, current rank and w/l record. Basically it works by having a range of 0-N where N is the cap of the maximum amount of points that can be taken. A user facing another with a much lower skill level than them would gain nothing from the win but an increase in w/l. Basically it would nerf someone like @Bnas from doing his goofy shit and being able to crack the top 100 because at a certain point you gain nothing from battling people that much lower than you. Also, the more you do it the faster it nets you nothing because your w/l goes up. I'll post it below but it's unfinished and a mess at this point.

Keep in mind this is pseudocode (Written with p5.JavaScript syntax for the most part):

Code:
var maxEstimatedSkill = 10;
var ELOPoints = NumberOfRegisteredUsers;
var MaxEloChange = 32;
//W-L expressed as decimal
var winLoss = 0;
//I'm not sure how exactly to express a mathematical formula for determining exactly how to remove the number of points taken
var pointSubtraction;

var User1 = {
//All numbers in here are random. I didn't feel like writing some actual code in
//a spreadsheet to distribute the ELO points amongst the current user count
//(139,421) randomly and then sorting it. This should do well enough to express what
//I'm getting at.
    currentRank: 35,
    EstimatedSkill: 7,
    CurrentEloPoints: 15000,
    winLoss = 75.3
}

var User2 = {
    currentRank: 1000,
    EstimatedSkill: 7,
    CurrentEloPoints: 1200,
    winLoss = 25.2
}

function Battle() {
    
    Predict = {
    User1PredictionScore = user1.CurrentEloPoints + (user1.currentRank + user1.EstimatedSkill + user1.winLoss);
    User2PredictionScore = user2.CurrentEloPoints + (user2.currentRank + user2.EstimatedSkill + user2.winLoss);
      if (User1PredictionScore > User2PredictionScore) prediction = User1 wins;
      if (User2PredictionScore > User1PredictionScore) prediction = User2 wins;
      if (User1PredictionScore == User2PredictionScore) prediction = CoinFlip; //do nothing
    }
    
    DetermineWinner = {
    if (user1VoteTally > greater than user2VoteTally) {
    user1 wins} else { 
    user2 wins
     }
    }
    
    Winner = Result
    
    DetermineRankChange = {
    if Winner was predicted {
    ELOAdded = MaxEloChange - (pointSubtraction)
    }
    if Winner was not predicted {
    ELOAdded = UnderDogWin
    UnderDogWin() {
    //Determine the amount of points added to the winner based on the amount of difference between the two.
    //Probably by using the PredictionScore.
        }    
    }
    }
}
Is this with an automated MM system or pick your battles in mind?
__________________
Quote:
Originally Posted by Godbody View Post

I'm part German myself.

Fuck off, I got work to do.
Reply With Quote
Unread 03-28-2017, 12:09 PM   #4
 
J u s T C J u s T C is on FIRE! 5+ wins in a row!
Estimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 7.91/10 starsEstimated Skill in Text: 6.88/10 starsEstimated Skill in Text: 6.88/10 starsEstimated Skill in Text: 6.88/10 starsEstimated Skill in Text: 6.88/10 stars
Ranked Text Record
4 Won / 0 Lost
 
Join Date: Jul 2012
Voted: 46 audio / 30 text
Posts: 6,812
Mentioned: 1535 Post(s)
Tagged: 21 Thread(s)


Default

Quote:
Originally Posted by Mindless View Post
I've actually been working on a system off and on in my spare time writing pseudo code to try and figure out a good way to do the ranking system and I think it addresses this problem.

My method involves assigning a points to users that they gain or lose according to whether they win or lose. How many points the winner takes from the loser ranges on factors from the difference in estimated skill level, current rank and w/l record. Basically it works by having a range of 0-N where N is the cap of the maximum amount of points that can be taken. A user facing another with a much lower skill level than them would gain nothing from the win but an increase in w/l. Basically it would nerf someone like @Bnas from doing his goofy shit and being able to crack the top 100 because at a certain point you gain nothing from battling people that much lower than you. Also, the more you do it the faster it nets you nothing because your w/l goes up. I'll post it below but it's unfinished and a mess at this point.

Keep in mind this is pseudocode (Written with p5.JavaScript syntax for the most part):

Code:
var maxEstimatedSkill = 10;
var ELOPoints = NumberOfRegisteredUsers;
var MaxEloChange = 32;
//W-L expressed as decimal
var winLoss = 0;
//I'm not sure how exactly to express a mathematical formula for determining exactly how to remove the number of points taken
var pointSubtraction;

var User1 = {
//All numbers in here are random. I didn't feel like writing some actual code in
//a spreadsheet to distribute the ELO points amongst the current user count
//(139,421) randomly and then sorting it. This should do well enough to express what
//I'm getting at.
    currentRank: 35,
    EstimatedSkill: 7,
    CurrentEloPoints: 15000,
    winLoss = 75.3
}

var User2 = {
    currentRank: 1000,
    EstimatedSkill: 7,
    CurrentEloPoints: 1200,
    winLoss = 25.2
}

function Battle() {
    
    Predict = {
    User1PredictionScore = user1.CurrentEloPoints + (user1.currentRank + user1.EstimatedSkill + user1.winLoss);
    User2PredictionScore = user2.CurrentEloPoints + (user2.currentRank + user2.EstimatedSkill + user2.winLoss);
      if (User1PredictionScore > User2PredictionScore) prediction = User1 wins;
      if (User2PredictionScore > User1PredictionScore) prediction = User2 wins;
      if (User1PredictionScore == User2PredictionScore) prediction = CoinFlip; //do nothing
    }
    
    DetermineWinner = {
    if (user1VoteTally > greater than user2VoteTally) {
    user1 wins} else { 
    user2 wins
     }
    }
    
    Winner = Result
    
    DetermineRankChange = {
    if Winner was predicted {
    ELOAdded = MaxEloChange - (pointSubtraction)
    }
    if Winner was not predicted {
    ELOAdded = UnderDogWin
    UnderDogWin() {
    //Determine the amount of points added to the winner based on the amount of difference between the two.
    //Probably by using the PredictionScore.
        }    
    }
    }
}
Is this with an automated MM system or pick your battles in mind?
__________________
Quote:
Originally Posted by Godbody View Post

I'm part German myself.

Fuck off, I got work to do.
Offline  
Reply With Quote