PazerOP / tf2_bot_detector

Automatically detects and votekicks cheaters/bots in TF2 casual.
MIT License
403 stars 54 forks source link

Additional Stats #300

Open astability opened 3 years ago

astability commented 3 years ago

Context Just in case anyone doesn't know, Thirst is a stat that is shown along other stats (only) when a enemy is moused over. It is calculated like this:

int thirst;
if(deaths == 0){
   thirst = kills*100;
}else{
   thirst = (kills*100)/deaths;
}

The stat is formatted like a percentage. (e.g a thirst of 100 is 100%)

Problems with thirst I think that it might be useful to have stats like thirst to more easily spot cheaters, but it right now fails at that (probably because it was intended as a joke).

Kills per Life My idea for a replacement is kills per life, defined like this:

  float kills_per_life = kills/(float)(deaths + 1);

If displayed on both teams, i think it would solve these problems.

Other stats I know very little about statistics, but i think that if a good enough metric was found, it might make it even faster to find cheaters in the list. A variant on something like kills/time could make cheaters quickly float to the top of the playerlist. Another idea is player KpL - average KpL, or something like that, which shows outliers over more time, but im just spitballing now.

(Sorry if this was wordy, i tried to follow the template a bit too much i think)

brachistosaurus commented 3 years ago

kills per life This number is the most tangible to users. However, KPL weighs too heavily "against" engineers, snipers, and risk-averse players that take forever to kill.

player KPL - average KPL Too complicated and variable. Users can just check the other KPLs to spot the outliers.

kills per minute KPM is probably the best metric for discovering blatant hackers.

headshots per minute Cheating snipers may headshot more than legit snipers, but HPM ignores the other classes (such as heavy bots).


Also, KPM shouldn't be calculated until the player has a certain number of kills (e.g. 6 kills) and a certain amount of server time (e.g. 60 seconds). This keeps the value useful and stable.

astability commented 3 years ago

characters said per minute / chattiness Calculated after 1 minute, CSpM would make chatspamming bots obvious, but would also highlight bind users.

I think that theres not much of a problem if these stats are used to order the playerlist rather than mark players as suspicious or as a ruleset feature. My problem is usually finding the newly joined cheater among pepole i know are innocent, so some filters and sorting would go a long way. I might close this one and make a new one for this suggestion (or change this one), because that sounds much more useful than just adding some stats.

ClusterConsultant commented 3 years ago

Thirst exists as a joke feature. It is not meant to be useful and I do not think it should be replaced or removed since I like the joke.

That being said, additional stats were considered. Stuff like #267. Logs.tf with ss (supplemental stats) should serve as a starting point for determining what should be useful. Overall this will likely have to wait until demo parsing is a thing.

astability commented 3 years ago

@ClusterConsultant. Here are a few takes on some of the logs.tf stats:

The rest of the stats does not seem that helpful for cheater/bot detection. stats.tf seems to have alot of stats that are great for tracking how different players affect the game but not really for finding cheaters. I think it's important to exclude as many unhelpful stats as possible in order to not make them overwhelming. Maybe less used stats could be hidden, but i doubt that feature would be needed if the right stats are picked in the first place.