Jump to content
Sign in to follow this  

Changes on Elo Rating

Recommended Posts

Hey community,

once again I have nearly finished a plan and integration for a new Elo scoring system, I will have it very soon live on the developer version of the stats page, where every one of you can imagine how it will look like.

The basic principle has been said already in a previous thread, this time we will go a bit more into detail, the algorithm can be summed up in rules, like this:

  • A new player (under 10 games) will calculate always with a score of 1.000
  • A player with more score will gain less on a win than his team members with less score
  • A player with less score will lose less on a loose than his team members with more score
  • The gain per team is the win percentage compared to the factor of 50.

To get more into details, if a team has a 100% win chance, they will not gain any Elo, but can loose up to 50 Elo score. And this individually per player based on his prior score.

The calculation of the gain per player on a win is this:

playerChange = scoreChange * ((reversedPlayerTeamContribution / playerScore) / totalTeamScore)

On a  loose, we can simply use the player prior score contribution to the win chance:

playerChange = -1 * playerScore / teamScore

For those who are not up to date with the school part overall, the reversed player percentage value is calculated with the help of the multiplicative inverse. That does basically mean, we just need to multiply all other player scores of the team, except the player itself, to get the reversed contribution.
From the programming way, it looks like this:

	$flippedWinnerScore = 1;
        $scores = [];

        foreach($players as $player) {
            if(($winner === 1 && $player['slot'] <=5) || ($winner === 2 && $player['slot'] > 5)) {
                $scores[] = $player['priorScore'] / 1000;
                $flippedWinnerScore *= ($player['priorScore'] / 1000);
            }
        }
        $totalScore = 0.00;
        foreach($scores as $score) {
            $totalScore += $flippedWinnerScore/$score;
        }

        foreach($players as &$player) {
            $playerRate = $player['priorScore']/(intval($player['team']) === 1 ? $scoreTeam1 : $scoreTeam2);
            if( ($winner === 2 && $player['slot'] <=5) || ($winner === 1 && $player['slot'] > 5)) {
                $playerRate = -1 * $playerRate;
            } else {
                $playerRate = ($flippedWinnerScore / ($player['priorScore'] / 1000)) / $totalScore;

            }

            $player['change'] = $playerRate * $scoreChange;
        }

This concept works out so well currently that I think this can be the new Elo algorithm for us.
As example, I picked a random game:
image.png.ffc1a5264b819fbb7ef2c1e29bd19e42.png

You can see that the black player got the most score from the winning team and the blue player with the most prior score the least.
On the enemy team, the player underlined with the red had the most prior score and lost the most.

I will have to look overall a bit more and need to create some more test cases, but in my opinion, this is one of the best algorithms we can create out of it.

What do you guys think so far?

 

Greetings,
Grief

  • Thanks 1

Share this post


Link to post
Share on other sites

So wait, let me get this right, if I happen to come across a stacked team on a smurf, and they have a 100% chance to win, if they lose, do all members of that team lose 50 elo?

Share this post


Link to post
Share on other sites
22 minutes ago, Storm- said:

So wait, let me get this right, if I happen to come across a stacked team on a smurf, and they have a 100% chance to win, if they lose, do all members of that team lose 50 elo?

No :P 

As the whole team they lose the 50 points, but individually they lose the points measured on their prior score. So if all had the same score prior, each one would lose the 10 points.

Share this post


Link to post
Share on other sites

The top list can now be previewed at this link:
https://dev.ohstats.net/en/top

Please keep in mind that the stats are constantly updating in the background, you might also notice that I have worked a lot on our caching system. The update rate is currently 100 games/minute.

Stats / Player / Games data is kept in cache unless the player played a new game, this is interesting for the backend infrastructure as we can decrease the load a little bit.

Not all pages are functional yet also on the page, as I decided to normalize the whole data to the third normal form.

Nevertheless, the whole algorithm is the base for all upcoming ELO ratings, as further as I progress as more I think that's a totally fair system.

 

Greetings,
Grief

Share this post


Link to post
Share on other sites

I've added a new page to the development page that can observe a bit the overall balance of the players:
https://dev.ohstats.net/en/eloBalance

Or here is the current graph:
image.thumb.png.40f7a885058bec83636fb6e20a21e1fd.png

It does round down the Elo of players in groups of 50 Elo ranges and displays them against the number of players in a group.

The major player pool should be at the end of the first third, so 2/3 is above the major pool, which is perfectly fine for an Elo algorithm, just from the plain view, not talking about numbers.

Greetings

Share this post


Link to post
Share on other sites

That means we pro-player (Bee for example) wins a game alone and get basically 0 elo bcs the others are all 700-elo-players :D 

That also means, if the same player Bee loses bcs of the other 4 players with 700 elo, he will lose about 30 points. So he has to play again 20 games to boost it :D 

That all means, your foked as a high-elo-pro-player-Bee :o 

Joke, I like it. Let's start to rape @l2p.com score! 

Again nice work @GriefCode.

Share this post


Link to post
Share on other sites

After reviewing the whole calculation of all games, we will have a slight change on the algorithm.

The maximum, so far, detected win rate in a usual game is 65% vs 35%. That is a bit too low, we will triple up the win percentages by a simple script. So the maximum expected is then actually: 95% vs 5%, which later on can be still adjusted.

Additionally, I will tinker out a script today to avoid the draw games and actually have a further punishment that works all along.
From the current calculation, it is obvious that the top ELO players have one in common, a high draw rate. However, this is mostly not their fault but commonly the team. 
I'm considering adding a rating to draw games, that have an impact on the half of the score, so instead of having a change of example 25 points for the team, that is only 12.5. This is commonly done for other games as well and in their algorithm. So if a team has a high win rate and the game causes a draw by the team, they will be punished that the enemies will gain Elo but they will also lose Elo.
This system is only used when the higher win rated team is causing at least one leaver in the early draw system. Voted draws are not counting into that.

If the enemy team is causing the early draw from leavers, BUT  the other team has a leaver within the same tick (second) than the 2nd leaver, the game will also count in favor for the enemies, so it will be scored. I have found countless games where that happened, I highly doubt that anyone can leave a game in the same second it is drawn.

Overall these changes should widen up the peek on the calculation graph and also reduce the outrage of some players from the current calculation.

What do you think about this generally?

Greetings

Share this post


Link to post
Share on other sites
On 30.12.2017 at 6:47 PM, Bee said:

That means we pro-player (Bee for example) wins a game alone and get basically 0 elo bcs the others are all 700-elo-players :D 

That also means, if the same player Bee loses bcs of the other 4 players with 700 elo, he will lose about 30 points. So he has to play again 20 games to boost it :D 

That all means, your foked as a high-elo-pro-player-Bee :o 

Joke, I like it. Let's start to rape @l2p.com score! 

Again nice work @GriefCode.

haha xD

good luck bee :D

sounds like a hard elo system to get points because there are many low elo players xD

 

Share this post


Link to post
Share on other sites

Once again, I made a small adjustment, this is actually the finalization of the script.
It is really time-consuming as I can only see the full change when calculating all stats, and that takes around 12 hours. This is why I was quite and could not do much the last days.

Forget anything said prior to this thread. The idea worked theoretically, but in the end, it did not sum up. I don't know why, maybe to theoretical and not good in use, we had that in the past on ohsystem with one algorithm already.

However, changes I made are pretty simple, when your score is greater than 1300, it will be just doubled, so it does count twice compared to the gain and to the loss of points. The same happens when getting below 700, the score is divided by 2 and does count the half, this does lower the loss amount and increase the gain amount.

This simple adjustment grouped the top players previously known and does avoid an outrage from the 1st to the 2nd player of a score from 300.

Please keep in mind, the idea keeping the draw scored on 50% when the leading team causes the draw is still in place and does work also well enough.

Greetings

Oh you can of course preview everything as usually here:

https://dev.ohstats.net/en/top

 

Share this post


Link to post
Share on other sites

Hi Grief

Sounds good to me :) to be honest, i dont quiet understand this with the draw.

Correct me if im wrong, when the Team with higher winning chance has a leaver in early game, like someone disconnect and then all vote for draw. The Team with higher winning chance will lose elo and the other team gains elo?

So why would any1 ever wanna draw if its like this? :D

Answer me in german if you think i didnt understand it at all please xD

also the new toplist doesnt seem to be loading for me, on the screen is just Loading... in the middle. also tried clear cookies.

Regards

 

Share this post


Link to post
Share on other sites
41 minutes ago, l2p.com said:

Hi Grief

Sounds good to me :) to be honest, i dont quiet understand this with the draw.

Correct me if im wrong, when the Team with higher winning chance has a leaver in early game, like someone disconnect and then all vote for draw. The Team with higher winning chance will lose elo and the other team gains elo?

So why would any1 ever wanna draw if its like this? :D

Answer me in german if you think i didnt understand it at all please xD

also the new toplist doesnt seem to be loading for me, on the screen is just Loading... in the middle. also tried clear cookies.

Regards

 

No, the voting draw should not affect it.

When early leaver causing draw from the team with the higher win rate.
I frequently saw that people tend to leave in order to avoid a loss as they got fairly out picked.

The rest is totally correct. Hm, about none load of the top list, I would need to check it out, will do tomorrow probably.

Greetings
 

Share this post


Link to post
Share on other sites
20 minutes ago, GriefCode said:

No, the voting draw should not affect it.

When early leaver causing draw from the team with the higher win rate.
I frequently saw that people tend to leave in order to avoid a loss as they got fairly out picked.

The rest is totally correct. Hm, about none load of the top list, I would need to check it out, will do tomorrow probably.

Greetings
 

Ah i understand, all clear now :)

Greetings

Share this post


Link to post
Share on other sites
19 minutes ago, AmpedApocalypse said:

Win: +10

Lose: -10

Kill: +2

Death: -2

Assist: +1

Rax: +2

Clear and simple

And does grant you more points as more as you play, that's exactly what we want to avoid :P 

On 5.1.2018 at 7:42 PM, l2p.com said:

Ah i understand, all clear now :)

Greetings

It should load now, probably it's something in the middle of the process, this is why the single player page looks a bit unfinished :D 
I haven't got yet any further idea managing the split content below the title container. Still tinkering around to find a solution I like.

Greetings

Share this post


Link to post
Share on other sites

Hello, when would be able to see the full elo when joining game? Thanks :D

 

ah, there is no chat history or lobby chat in the game links too.

Thank you so much for the hard work :D

Rikimaru

Share this post


Link to post
Share on other sites
21 minutes ago, Rik said:

Hello, when would be able to see the full elo when joining game? Thanks :D

 

ah, there is no chat history or lobby chat in the game links too.

Thank you so much for the hard work :D

Rikimaru

 

update will be done in 1-2 days ... should "fix" everything so it's back to normal... just better

Share this post


Link to post
Share on other sites
21 minutes ago, Rik said:

Hello, when would be able to see the full elo when joining game? Thanks :D

 

ah, there is no chat history or lobby chat in the game links too.

Thank you so much for the hard work :D

Rikimaru

As we wrote many times... Let Griefcode work until end of this week for sure :) 

Share this post


Link to post
Share on other sites

You said what we think about the new elo system so far , so far , i dont like it at all but its my perception !

With the new system in place we dont see stats no more so i didnt see the stats when i joined a game yesterday , i lost 16 elo when i didint even see my allies scores ..

Are game without stats are counting ? Cause its should not , u cant see your team scores

We'v have worked hard to got that elo , and now u want it all gone ? :D

I play every day of the week and most of the people including me dont like the new system , but i suppose that the guys with the worst stats will be fine with it ! :)

PS : I find the new system a bit too much .. 

Edited by Massakers-
Adding stuff

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Who's Online   4 Members, 0 Anonymous, 7 Guests (See full list)

  • Forum Statistics

    1099
    Total Topics
    7112
    Total Posts
  • Member Statistics

    1192
    Total Members
    138
    Most Online
    Newest Member
    Cappacino
    Joined
  • Members

    • Zedkong 0

      Regular Members
      Joined:
      Last active:
    • Storm- 35

      Regular Members
      Joined:
      Last active:
    • bunek 105

      Moderator
      Joined:
      Last active:
    • GriefCode 757

      Owner
      Joined:
      Last active:
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.