MinoMino / minqlbot

An administration tool for the Quake Live client, extensible with plugins.
GNU General Public License v3.0
26 stars 10 forks source link

Feature request: Make it possible to make a Top X (Ranking based server) #17

Closed tynor88 closed 9 years ago

tynor88 commented 9 years ago

A feature to make a TOP 500 Ca server would be nice. With elo encreasing all the time, you have to adjust elo higher, when players get higher elos. Making a rank/top feature, you would not have to care about elo changing.

Shouldn't be too hard to implement, since the bot already knows your rank.

MinoMino commented 9 years ago

It's true that if I could, at any point in time, get the rating of someone ranked 500, it'd be easy. The issue is that the API call I use (and personally, I don't know of others) is based solely on someone's nickname. It just happens to include their rank. In other words, I can't tell who is placed 500, so I can't get that player's rating.

A second, but probably even bigger, issue is that the ratings the ranks are based on are often completely off the actual rating. Here's an old account of mine that I haven't played on for like two years:

MinoMino

My actual rating is 53 less than the one used by the ranking. Here's my current account:

Mino

It's off here as well, but only by 2 for some reason. So it's not systematic either, which makes the data really unreliable. This means that even if I knew who was ranked 500, even the guy ranked 400 might not be able to connect if it turns out his actual rating is really off.

tynor88 commented 9 years ago

I think i missed a point. Your rank is 36, which means you are the 36th best CA player by ELO ratings :) Where is it off by two?

MinoMino commented 9 years ago

I'm talking about the rating, not the rank. In the first screenshot, my actual CA rating is 2306, however, the ranking of 356 has been given to me based on the rating in the ranking list there, which is 2359 for some reason. On the second screenshot, my actual rating is 2566, yet the ranking list there shows my rating as 2568.

For whatever reason, QLRanks seems to keep track of two different ratings. One used to calculate the world ranking, the second one is the one that the API returns (and also used for the top 100). The difference between the two ratings is likely not systematic, as evidenced by the two screenshots. The fact that the API returns the ranking based on the former, but only provide the latter rating is a problem.

Example: Imagine I have the nickname of whoever is ranked 500. The API could return something like "ca":{"rank":500,"elo":2000}. However, the rank of 500 might've been given to this player based on his ranking rating of 2050, but the bot doesn't know this since it uses the API. If we now enforce a minimum of 2000 rating, someone with a ranking rating of 2055 would be recognized as <500, but that doesn't necessarily mean he has an actual rating of >2000. Basically, a top X can't be enforced reliably because the API mixes these two ratings. It'd be a loose enforcement at best.

I guess technically, this could be solved by parsing the web site instead of using the API, but eh. It's a fair amount of work, and any little change on the front-end could break the parser. On top of the fact that QLRanks data will likely become worthless once the Steam-exclusive update hits (as discussed in #14), I don't think it's worth doing. And while the ratings are definitely inflating, the rate isn't that fast after all.

tynor88 commented 9 years ago

I see the issue now, no need to parse the website to get the real rating. I thought it would be easier to implement.

Thanks for the detailed explanation :+1: .