My idea for a new ranking system

My idea for a new ranking system

Postby RandomPerson » 28 Feb 2020, 18:06

*Disclaimer: This will be a very, very long text*

So. Now I will put my own ranking system ready for viewing here. Right at the beginning, here you can see examples and experiment with the formulas: https://drive.google.com/file/d/1tkPDtS ... sp=sharing
In my ranking system there is a probability of winning. It is calculated using the following Excel formula (I use the German version of Excel. All formula names are German): = 1 / (1 + POTENZ (my constant of change; (opponent's ranking points - my own ranking points) / 2000)) The change constant CC is calculated as follows (not taken into account in my example, I used random change constants):
One player has 0-50 races: CC 20
51-100: CC 18
101-250: CC 16
251-500: CC 14
501-1000: CC 12
1001+: CC 10 (Similar to the current system.)
The "2000" in the formula for calculating the probability of winning is variable. In the example, it expresses that if an opponent has 2000 points more or less, no more points can be won.

Anyway, now we have calculated our probability of winning. Next we want to calculate how many points I can get if I win against this opponent. The formula for this is: (1 - probability of winning) * my CC. The formula for calculating the change in points in the event of a loss is: Possible points for victory - my CC

The next step is to determine whether the individual opponent won or lost. At the same time, it must be recorded with which lead over the opponents was won (e.g. 4.2 [s]) or lost (e.g. -4.2 [s]).
After the points for victory or defeat have already been calculated, the points for the lead in time must now be calculated.
* IT IS IMPORTANT THAT A PLAYER CAN HAVE A 5 MINUTES LEAD ONLY. IF THE PLAYER LEAVES THE GAME, IT WILL BE SCORED AS A 5 MINUTE RESIDUE *
Usually these points are calculated with a 0.01 * lead. However, if the number that arises is greater than 1.25 or less than -1.25, it is divided again by 15.

Finally, all points for each opponent have to be added.

I know that was a very long and sometimes incomprehensible text. I hope the file mentioned at the beginning can explain a lot. If there are any questions, I would be happy to answer them.
By the way, I only did this for fun. Nevertheless, I would of course be happy if the system is implemented or criticism arises.
RandomPerson
 
Posts: 15
Joined: 10 Feb 2020, 09:34

Re: My idea for a new ranking system

Postby kimden » 29 Feb 2020, 01:40

I didn't make a thorough analysis of this (frankly I didn't understood everything yet), if you think this is too long I just use long words :) . What is listed below are things that came to my mind now; maybe I will add something more.

RandomPerson {l Wrote}:The "2000" in the formula for calculating the probability of winning is variable. In the example, it expresses that if an opponent has 2000 points more or less, no more points can be won.


But this is not true. 1/(1 + CC ^ (points difference / 2000)) changes if points difference > 2000, or did I understand incorrectly?

RandomPerson {l Wrote}:One player has 0-50 races: CC 20


Right now 4000 is a "normal" rating value for those who has enough races (initially they have 2000 and 2000 more points are given in the first 40-60 races), so a novice can be either weaker or stronger than actual 4000.
Suppose a new player (2000) arrives to compete with 4000-point player. Then the probability of 2000-pointer's win is 1/(1 + CC^1) = 1/21 if CC = 20. Isn't it too little for not a weak but not a strong 4000 points? So if a new player wins, other player probably loses too much.

That being said, I generally don't understand why new players are treated somehow separately from others. We just don't know enough about their skill, so what? So it's the problem of the current system also. But in general, one should be **extremely** careful with changing the exponentiation base, it can change something very much.

RandomPerson {l Wrote}:After the points for victory or defeat have already been calculated, the points for the lead in time must now be calculated.


I kinda dislike the idea of giving the predetermined amount of points once won/lost (despite you add more points for the lead/loss). There are some errors in defining the elapsed time for each player, and what if (considering the previous example) a 4000-pointer loses 0.001s to a 2000-pointer new player? He will lose 20/21 * 10 = 9.5 points for literally nothing (or even a rounding error, not aware if they exist in STK now)! I agree that the system should encourage the battle for positions, but I don't think we need to be so radical and have a big jump between very neighboring cases.

I would personally prefer ranking changes to depend only on your own performance/time independently of other (much stronger/much weaker/...) rivals, but this is a matter of taste I guess.

RandomPerson {l Wrote}:* IT IS IMPORTANT THAT A PLAYER CAN HAVE A 5 MINUTES LEAD ONLY. IF THE PLAYER LEAVES THE GAME, IT WILL BE SCORED AS A 5 MINUTE RESIDUE *


The current rankings use 500 seconds = 8 minutes 20 seconds as maximal time, and 5 minutes is much less. Though "5 minutes" are used for time differences only, I still have some doubts this can resolve problems with long races.

RandomPerson {l Wrote}:Usually these points are calculated with a 0.01 * lead. However, if the number that arises is greater than 1.25 or less than -1.25, it is divided again by 15.


Wait, so you are giving 1 point for 1m40s lead and potentially 9 (only in example!) points for just winning? Also I really don't understand why do we need to divide the gap greater than 125s by 15. Why by 15? Why not doing it smoothly like using some continuous function? Or a race is really long then? Ok, so if this is enabled and I'm the leader in Black Forest 20, I will keep as many rivals as possible inside 124s to gain more points. Sounds logical.

I know that all constants can be changed so that it becomes like the current system (or even more pleasant in some aspects), but I am really concerned about big jumps between neighboring cases, changing the exponentiation base twice, giving the points for winning no matter what's the gap, etc. Even if constants are good, the model is kinda non-smooth because of these reasons.

Now more questions: even if constants are good and the model is smooth enough and ranking changes are not very huge in all cases, what are the problems solved by this system? I agree it makes sense because of some reasons, but the existing system is also good enough and just needs to fix some issues. Are there more issues of existing system than described here: https://forum.freegamedev.net/viewtopic.php?f=17&t=12650 ? Please tell us, I personally would be glad to discuss. Among the issues listed by this link, which are reduced at least? What are the effects of disconnect here, would it be even more painful and how to make it less painful for those who have reasons like lags/internet? Finally, how do you cope with points inflation? For me (at first sight) it's not obvious what will happen.

Thanks for suggestions!
One day, I'll put enough checklines on all your tracks.
User avatar
kimden
 
Posts: 40
Joined: 23 Jun 2019, 18:42

Re: My idea for a new ranking system

Postby RandomPerson » 29 Feb 2020, 08:13

Thanks for your feedback. Interesting.

But this is not true. 1/(1 + CC ^ (points difference / 2000)) changes if points difference > 2000, or did I understand incorrectly?

You're right. I made a stupid mistake here.

I generally don't understand why new players are treated somehow separately from others.

We don't know how good they are. That is why they can win or lose a lot of points at the beginning so that their skill is well classified and the points are roughly correct. This "system" is also used in some other ranking systems and imo it’s very good for rating a player right away. Apart from that, it keeps more experienced and better players from "Noob Farming", which Alayan also mentioned, because a lot can be lost against new players, but hardly won.

if a new player wins, other player probably loses too much.

Might be right. Maybe the 2000 should be changed into 3000 then. But, usually you get your points back against other players if you're really at the level of your points.

I kinda dislike the idea of giving the predetermined amount of points once won/lost (despite you add more points for the lead/loss). ......

You play races to win them or get the best possible placement, right? For me, this is a big problem of the current ranking system: There is no difference in the points change or only a small one, whether you win or lose barely. Therefore, it should be cracked down here: Whoever loses the race (or the placement fight) should be punished.

I would personally prefer ranking changes to depend only on your own performance/time independently of other (much stronger/much weaker/...) rivals, but this is a matter of taste I guess.

It's my own performance to beat an opponent. This statement makes little sense to me.

The current rankings use 500 seconds = 8 minutes 20 seconds as maximal time, and 5 minutes is much less. Though "5 minutes" are used for time differences only, I still have some doubts this can resolve problems with long races.

To be honest, these 500 seconds only exist so that too many points cannot be won when a player leaves the game. I'm open to better suggestions here.

Wait, so you are giving 1 point for 1m40s lead and potentially 9 (only in example!) points for just winning?

Well, we are back in our discussion. Imo, it's still more important to have a better placement than a good time.

Also I really don't understand why do we need to divide the gap greater than 125s by 15.

Because otherwise the points gained through time are too many. +6 points just because someone left the game? Not really useful. Why 15? Well, I've tried some numbers and the results at 15 make the most sense.
I'm open for suggestions here, as well.

I am really concerned about big jumps between neighboring cases, changing the exponentiation base twice, giving the points for winning no matter what's the gap, etc. Even if constants are good, the model is kinda non-smooth because of these reasons

It's sad you think my idea is bad ... well, like I said, it was fun designing this system. no matter how others find it now. To come back to the topic of "big jumps between neighboring cases": It doesn't matter in football whether I go from 0:1 to 2:1 in injury time or whether I shoot the opponent 10:0. In table tennis, it doesn't matter whether I win 19:17 in the decisive set or three times 11:0. Then why does it matter in races?


Now, what Alayan mentioned:
- A high rated player will often get more points from a new player than from a mid-level player with a stabilized ranking. This creates a "noob farming" element at the top which is out of place.

As I said earlier, this has been fixed (or at least significantly improved) in my system.

You lose too many points for quitting.

This is better in my system because not so much is calculated for large time differences. The system also focuses on the placements.

Many players only play ranked races against a limited number of other players, or have a huge proportion of their races against one or a few players. For any ranking system to work well, you need players to play a variety of opponents so that the "links" between players are strong enough. If A and B never played each other, their relative ranking will be much more accurate if you can link them through other players they played against. If you have pools of players that play together inside the pool but rarely will play with someone outside the pool, the ratings get distorted.

Explain to me why that should be important. The current ranking system really has far worse problems. Nonsense.

A related issue is the possibility to cheat by farming points against a fake account that just disconnects (or race badly on purpose).

Better in my system because it's not so badly punished for having a bad time or leaving the game. In addition, this is not really a ranking systwm issue, but should be solved by forbidding gaming from the same IP address.

A player can refuse to play any ranked race on tracks he dislikes, or against players he doesn't want to face.

Yes and now? What does this have to do with the ranking system? It is also up to the player to decide when to play and when not.

A player's ranking never "fades away" after long inactivity.

Benau already said that this will be fixed.

Finally, how do you cope with points inflation?

I don't know what you mean by that.

2 other problems:
You can lose points for a win. The problem is solved in my system.
You have to do a lot of races to be among the top players. Improved in my system, especially through the variable CC.


Well, to be honest, I really don't like the current ranking system, even if the one who developed it, worked hard.

However, I hope some other people will answer here and tell me what they think about my system.
RandomPerson
 
Posts: 15
Joined: 10 Feb 2020, 09:34

Re: My idea for a new ranking system

Postby kimden » 29 Feb 2020, 11:44

RandomPerson {l Wrote}:
kimden {l Wrote}:I generally don't understand why new players are treated somehow separately from others.

We don't know how good they are.


But the same is true for players who didn't play for several months. They may be experienced or not, but after a long time past races do not influence the current expectations so much. So there's no reason to treat new players separately I guess, we just have 0 confidence about them and non-zero (but maybe almost 0 for some players) about others.

RandomPerson {l Wrote}:Might be right. Maybe the 2000 should be changed into 3000 then.


Do you understand what happens then? Actually the difference of 3000 now plays the role of 2000, that means, all ranking points' differences should be increased by 50%. This is the physical sense of Elo-based systems or their derivatives: winning probability is based only on difference of points, and if we take 3000 or 4000 or 5 or 41 instead of 2000, everything is just scaled with respect to starting points (2000) when converged. So changing 2000 to 3000 might seem like a solution but this just shifts "usual" ranking points from 4000 to 5000 and everything is the same.

RandomPerson {l Wrote}:Whoever loses the race (or the placement fight) should be punished.


I personally know players that are very, very disappointed by losing (this actually happens independently of skill level), and I guess such players (including me, I'm a human lol) won't be very glad if they will get the big punishment that was before for losing like 10s, for losing just 0.1s. Vice versa, players won't want to create a big gap because it's easier to collect powerups, because almost nothing is given for gap and a big amount is given for just being ahead. That's why I say that big jumps in system affect negatively the spirit: sometimes it's not profitable to be faster which shouldn't be the case. With this system, you need to be faster only if you are near someone else.

Also lol, when giving the majority of points to those who win and simultaneously make CC = 10 for all experienced players, the one with extremely high number of races has much more wins and therefore will be much higher in ranking. I prefer to avoid that even if it's profitable for me personally. The current system is overprofitable enough for players with big amount of races, and this is making it worse.

RandomPerson {l Wrote}:To come back to the topic of "big jumps between neighboring cases": It doesn't matter in football whether I go from 0:1 to 2:1 in injury time or whether I shoot the opponent 10:0. In table tennis, it doesn't matter whether I win 19:17 in the decisive set or three times 11:0. Then why does it matter in races?


Football has discrete goals. You cannot have 2.35:4.91, only a few cases are possible, while in racing we have continuous time. The ranking system should encourage being faster at all times, not only when one is losing. If you are winning, the more you win, the more you should get. I'm actually sad to hear 10:0 equals 2:1 just because in football nobody cares, but do you know any ranking systems for football teams outside of group tournaments? (I personally don't know because I don't watch it but maybe there are... But I never heard.) Table tennis is also discrete, also in most cases we know how many points winner has, unlike racing. Even if there are ranking systems there, they should be very different in terms of calculating expected/real game result.

Corner cases and big jumps can be ok if the game scoring itself consists of big jumps like goals, but in the suggested system, for being a bit faster you get many or very little points just depending on the number of rivals near, or depending on whether rivals have 50/100/250 races. Smoothing is usually done to prevent that.

I don't think this system is bad. I just point out what can make others very frustrated, even more than with current system, and explain, what causes it.

RandomPerson {l Wrote}:
kimden {l Wrote}:You lose too many points for quitting.


This is better in my system because not so much is calculated for large time differences. The system also focuses on the placements.


Ok you lose little points for quitting now, like 5 per rival, independently of who are there rivals (which isn't good I suppose?) But quitting was supposed to be harsh for players who rage quit, and I'm not sure this system doesn't bring back this problem which caused quitting penalty.

RandomPerson {l Wrote}:
kimden {l Wrote}:A player's ranking never "fades away" after long inactivity.

Benau already said that this will be fixed.


To be fixed, it needs a formula to be done. No formula - no fix. Also how do you suppose the devs to modify your ranking system instead of yours? There is a way to implement that on the current system, but for your system, you know it better and you should suppose the way to do it!

Alayan {l Wrote}:Many players only play ranked races against a limited number of other players, or have a huge proportion of their races against one or a few players. For any ranking system to work well, you need players to play a variety of opponents so that the "links" between players are strong enough. If A and B never played each other, their relative ranking will be much more accurate if you can link them through other players they played against. If you have pools of players that play together inside the pool but rarely will play with someone outside the pool, the ratings get distorted.

A player can refuse to play any ranked race on tracks he dislikes, or against players he doesn't want to face.


RandomPerson {l Wrote}:Explain to me why that should be important. The current ranking system really has far worse problems. Nonsense.


If the ranking system doesn't take that into account, you can say hello to groups of players playing same tracks and/or between each other only. Do you think nascartux' points are relevant if he plays 3 tracks 80% of races? Nonsense, we have other problems than a guy that abused the system for several months and continues! Do you think a group of 8 players cannot have distorted rankings just because they play only each other? We are just lucky that rvc group has only 4 players instead of 8.

nascartux is a very specific case but there's unfortunately a trend on deleting tracks and/or choosing the same subset of them. Let me remind everyone that ranked exists (not counting the fun which is important too) to estimate the skill for a player, and this skill includes player's skill on every official track. If someone doesn't play a track at all (except maybe black forest but this is another type of problem), he doesn't want to show the corresponding skill so that skill is probably bad because nobody in the world hides good sides.

The same goes for players. I for example don't want to play with certain players because I think I will lose. This is normal but it's bad if I don't play them. Well, you cannot enforce playing with literally all players but if the rivals' subset is very small it's a reason to think about.

"It is also up to the player to decide when to play and when not." is true, but ranked should give points for speed and take points for being slow. If one utilizes that statement to hide own weaknesses, that's very bad because 1) he can be weak but unfairly doesn't lose 2) in this case he is also not honest to players who don't hide their skill.

RandomPerson {l Wrote}:
kimden {l Wrote}:Finally, how do you cope with points inflation?


I don't know what you mean by that.


In a good ranking system, a certain number of points should correspond to certain amount of skill at all times, without major changes. Inflation means that over time, the same skill level corresponds to bigger and bigger amount of points (which shouldn't be the case as I said in the previous sentence). In particular, if the mean ranking points increases, there is probably an inflation because players can stay at the same level but get more points. Most ranking systems have total points change equal to zero in most cases to prevent that, and also the points changes for new players should be adjusted in a correct way. In this system, I guess that's true if all players have >1000 races, but come on, there are only 40 such players as of now! For other cases, as well as for new players' points distribution, I have doubts (or I am just not clever enough to prove, but someone should prove it or at least test it on many, many races! At least virtual ones.)

RandomPerson {l Wrote}:2 other problems:
You can lose points for a win. The problem is solved in my system.


Still have to disagree. Consider four situations:
A) Win by 10 seconds
B) Win by 1 second
C) Loss by 1 second
D) Loss by 10 seconds

Now I'd like to ask everyone, which pairs of situations should be closest in terms of points? For me, it's B-C and not A-B nor C-D. But the suggested system prefers to give B much more points than C and to give A a bit more points than B. Though you need much more effort to have B→A transition than C→B.

I agree that it's painful to realize you lose points for winning (actually now winning 3 seconds on a standard 2-minute races is sufficient to never lose points. If one loses points by winning this probably means big ranking difference so the winner should be able to win 3 seconds!). You can think of it as 'I gained points but I was expected to gain more so something was subtracted'. Positive change always means you did better than expected, negative - worse. And winning by 0.1 isn't always expected lol

RandomPerson {l Wrote}:You have to do a lot of races to be among the top players. Improved in my system, especially through the variable CC.


Good point. However, did you try to apply the formula on some data to prove it? Like take a novice with 2000, take random existing players and see what happens if he mostly wins (mostly, no one wins 100% of races). This is required IMO to say 'it's improved'.
Not sure whether this is needed though, if the community thinks so, ok.

Last but not least, I try to criticise this not because I hate someone (or you personally), not because I want a better rank with new system, not because I'm in love with current system (I want to share my opinion too but a bit later, there are some problems still), but because it's better to criticize now than when the system is enabled and everyone is unhappy.
One day, I'll put enough checklines on all your tracks.
User avatar
kimden
 
Posts: 40
Joined: 23 Jun 2019, 18:42

Re: My idea for a new ranking system

Postby RandomPerson » 29 Feb 2020, 16:28

kimden {l Wrote}:But the same is true for players who didn't play for several months. They may be experienced or not, but after a long time past races do not influence the current expectations so much. So there's no reason to treat new players separately I guess, we just have 0 confidence about them and non-zero (but maybe almost 0 for some players) about others.

Right. I forgot to mention that. Of course, players also get a higher CC because they are inactive.

kimden {l Wrote}:So changing 2000 to 3000 might seem like a solution but this just shifts "usual" ranking points from 4000 to 5000 and everything is the same.

Possible. However, a player loses fewer points against lower ranked players if the number is higher.

kimden {l Wrote}:players won't want to create a big gap because it's easier to collect powerups, because almost nothing is given for gap and a big amount is given for just being ahead.

Personally, I would always drive as well and as fast as possible in a ranked race. It is possible that the other one gets some zippers, and then you can lose a race unexpectedly.
If you were to get an advantage by slower driving or less advantage, I would understand that you don't always drive as fast as possible.

kimden {l Wrote}:the one with extremely high number of races has much more wins and therefore will be much higher in ranking.

I don't think so. Because the higher your rank is, the more points you can lose and win less. Imo it is still well balanced.

kimden {l Wrote}:Table tennis is also discrete, also in most cases we know how many points winner has, unlike racing. Even if there are ranking systems there, they should be very different in terms of calculating expected/real game result.

I know some ranking systems, not (only) in table tennis, where it doesn't matter how clearly you win.

kimden {l Wrote}:I don't think this system is bad. I just point out what can make others very frustrated, even more than with current system, and explain, what causes it.

Be honest, please. Do you think my system is causing more frustration than the current one?

kimden {l Wrote}:Ok you lose little points for quitting now, like 5 per rival, independently of who are there rivals (which isn't good I suppose?) But quitting was supposed to be harsh for players who rage quit, and I'm not sure this system doesn't bring back this problem which caused quitting penalty.

I agree with you on this point. However, this error can be corrected by dividing the number by a smaller number rather than 15 if the number is less than -1.25. Right?

kimden {l Wrote}:To be fixed, it needs a formula to be done. No formula - no fix. Also how do you suppose the devs to modify your ranking system instead of yours? There is a way to implement that on the current system, but for your system, you know it better and you should suppose the way to do it!

No formula is required for this. But if you want me to send my ideas on this topic:
- always after 2 months of complete inactivity: -40
- always after 2 months with less than 5 races: -20
(I know, very easy!)

kimden {l Wrote}:they will play between each other only

If this is noticed (and is annoying for other players), the developers should notify the affected players and, if necessary, warn (ban) them. Playing from the same IP address should be prohibited as already written.

kimden {l Wrote}:they will be playing same tracks

Deleting tracks should also be prohibited for Ranked. (Now you'll say Black Forest is an exception. I'm calling for a less graphic version!)
Otherwise you can consider the following:
If a player doesn't play all the official tracks within 75 races, he will receive point deduction (e.g. -50).
Or the track is simply always selected randomly.

kimden {l Wrote}:I don't want to play with certain players

I think that's okay. Some people are trolls. Not everyone likes to play against trolls. And you can't prove why someone isn't playing against a particular player.
But, if it is really necessary, the CC can be increased if you play against a player against whom you have played less than five times. (on 15?)

kimden {l Wrote}:In a good ranking system, a certain number of points should correspond to certain amount of skill at all times, without major changes. Inflation means that over time, the same skill level corresponds to bigger and bigger amount of points (which shouldn't be the case as I said in the previous sentence). In particular, if the mean ranking points increases, there is probably an inflation because players can stay at the same level but get more points. Most ranking systems have total points change equal to zero in most cases to prevent that, and also the points changes for new players should be adjusted in a correct way. In this system, I guess that's true if all players have >1000 races, but come on, there are only 40 such players as of now! For other cases, as well as for new players' points distribution, I have doubts (or I am just not clever enough to prove, but someone should prove it or at least test it on many, many races! At least virtual ones.)

What is the problem when the average ranking score increases? If the difference between the players is still right, everything is good.
Except that the entry point may need to be changed. Two ideas:
- To classify the player when he makes his first race to leave the race without changing points if this value is not higher than 3500.
- Always take the value of the player who is behind 85% of the other players in the ranking. (That's about 2000 at the moment.)
Btw, the current ranking system has the same issue, hasn't it?
(I am not quite sure that I have understood your point correctly. If not, let me know.)

kimden {l Wrote}:Now I'd like to ask everyone, which pairs of situations should be closest in terms of points? For me, it's B-C and not A-B nor C-D. But the suggested system prefers to give B much more points than C and to give A a bit more points than B. Though you need much more effort to have B→A transition than C→B.

Win is win. Loss is loss. It's definitely A-B and C-D for me.

kimden {l Wrote}:Good point. However, did you try to apply the formula on some data to prove it? Like take a novice with 2000, take random existing players and see what happens if he mostly wins (mostly, no one wins 100% of races). This is required IMO to say 'it's improved'.Not sure whether this is needed though, if the community thinks so, ok.

I tried it and it worked. The player quickly got better. (Unfortunately, I can't remember how many points he had in the end.)
But you can try it yourself. You have the file.

kimden {l Wrote}:Last but not least, I try to criticise this not because I hate someone (or you personally), not because I want a better rank with new system, not because I'm in love with current system (I want to share my opinion too but a bit later, there are some problems still), but because it's better to criticize now than when the system is enabled and everyone is unhappy.

Of course! As I said in my first post, I want to have criticism. Thank you for that.
Although I think it is very unlikely that the developers will implement this system (I think they won't even notice it, so this discussion is actually unnecessary ...), it is of course better to have a system with which everyone is satisfied.
Thank you again and I look forward to new answers from you and hopefully from others!
RandomPerson
 
Posts: 15
Joined: 10 Feb 2020, 09:34

Who is online

Users browsing this forum: No registered users and 1 guest