Topic: Rating system
WorldSavior |
Posted at: 2019-07-31, 18:15
No. If player A is better than player B, player A can still easily have a much lower winning percentage than player B. And number of draws is missing also. Wanted to save the world, then I got widetracked Top Quote |
einstein13 |
Posted at: 2019-07-31, 19:32
But the fraction of winnings still has its meaning. You are probably complaining about that this is not a true player's power measurement. You're right. But not all ranks are doing that. Fraction of winning is not measuring real power of the player, but how often the participant is winning over his/her opponents. I am not forcing that this should be calculated, but I am suggesting that it is worth doing, especially that this doesn't require much work and it is providing lots of fun to the casual players. About draws, it is not a problem to add them to the equation:
Edited: 2019-07-31, 19:32
einstein13 |
trimard Topic Opener |
Posted at: 2019-07-31, 20:15
Ok more precise questions for einstein: What's the point of subtype? We are gonna put a special function for each score anyway Two questions about your code:
Why not put everything in floats? If we are gonna use many score system, just transform to int when retrieving from db. 2 less lines
Couldn't we rather have a new table with a season data (start date, end date, selected maps, players that particpated, their games, all the scores)? ==> i.e all that will be shown on the website to players It would also avoid this idea of active and inactive. Top Quote |
einstein13 |
Posted at: 2019-07-31, 22:51
It is not necessary. It is just my point of view. The same solution can be done to type only. But then "type" will be one of ["Glicko official weekly", "Glicko official instant", "Glicko all weekly", "Glicko all instant", ...]. With type and subtype you has less types. But it is not necessary at all.
Function Why in my proposal is such thing? Because that is solving updating
I am not sure what do you mean by "server". "Save" function exists in all django classes that are inheriting from
You're right. Since we won't reach 10^15 cases, the float and integer values will be the same. But as it was suggested by WorldSavior, I have forgot about forfeits in my "simplest rank", so it needs 3 values instead of 2.
I am not sure what do you mean by "season data", or rather: how it will be stored? But as I understand, you want to store old data in an "archive table". It is possible to do that. For very large tables (millions of records) it is even better, but as I understand our situation (up to 100 records per week) it will be enough to store everything in one table. I know that the model I propose seem to be a bit more complicated, but it is not the worst one . Of course you don't have to implement such system. You can do anything you think is a good idea. It is possible to implement without history of records, and the "active" should be erased from the model. Hopefully I answered all you questions for now. Edited: 2019-07-31, 22:52
einstein13 |
kaputtnik |
Posted at: 2019-08-01, 00:37
Since the switch to the new server, the website is running on python version 3.6. It's a prerequisite for updating to any django version behind 1.11 Overriding the save()-method is a common task to apply some changes which are 'behind' of saving just some values into the database, e.g. format some strings or update other models with new values Top Quote |
kaputtnik |
Posted at: 2019-08-01, 18:52
Will there be some kind of league? Say have a 'beginners' league and if a player reaches some points, he will moved up to the 'profi' league? Top Quote |
trimard Topic Opener |
Posted at: 2019-08-01, 19:45
I think I'll use that for current season or not anyway
Yes we need 3 value for glicko2 anyway, we store volatility too
Yes of course! But not before stage 3, we need a lot of data to determine what are the limit of each leagues anyway Top Quote |
teppo |
Posted at: 2019-08-03, 09:25
If we adopt this system, I will admit to ranking only once, and make sure to win that one game. After that, I will shine on the top forever with my perfect score. Should the number of games contribute to ranking in some way? Should the ranking deteriorate over time? I would do both. Top Quote |
teppo |
Posted at: 2019-08-03, 09:50
There are of course many fancy ways to do that. Placeholder suggestions below; feel free to invent something better. Regarding "number of games": My simple approach could be that one needs at least 5 games for perfect score. If less games, the score is worse. Example: ranking := (numer_of_fresh_games/5) * 1000.0 * number_of_win_games / (number_of_win_games + number_of_lost_games) Regarding "over time": Only 5 newest games contribute: number_of_fresh_games := sum (individual_new_game_freshness_value), where individual_new_game_freshness_value := 0.99 ** (number_of_months_since_game_was_played); and the freshness_values of 5 newest games are summed together (unless <5 games total, in which cases all are included). The constant 5 is pretty small, meaning that it is in reach of many WL player. However, winning 5 games in a row by accident is unlikely enough. The number 5 is not well thought-of. This suggestion has the funny side-effect that an old guy with lots of wins and recent inactivity can increase his score by losing a game (logic: rating might go down a bit, but ageing multiplier increases). I think this is okay: An old master is rewarded from providing that he is still around. Once more: I am not saying that these are perfect ways to do it, but still, one single victory should not give perfect ranking forever. Top Quote |
einstein13 |
Posted at: 2019-08-03, 19:52
The easiest way to prohibit such situation is to start simplest ranking after at least N games (f.e. 5 of them). So you have to win 5 games in a row, first 5 games. And the additional info will show that you played only few times instead of 9999 games of WorldSavior & king_of_nowhere (2nd and 3rd place). einstein13 |