PazerOP / tf2_bot_detector

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

Create a tag specifically for bots, separeted from cheating players. #255

Open Kenajcrap opened 3 years ago

Kenajcrap commented 3 years ago

A clear and concise description of what the problem is. As discussed in the tool's discord, some users have objections to using this tool against human cheaters because they might not be cheating at the moment. Also, even when desired, kicking a cheater as soon as it enters might be hard in some situations, specially if the cheater protests, which does not happen with bots.

Describe the solution you'd like

Describe alternatives you've considered I've also considered doing away with the "exploiter" tag, as most users barely use it and I don't see exploits as a big issue currently. I've made a separate thread to discuss this change here: #257

Please, don't hesitate to discuss this extensively, as it feels like a big change

ClusterConsultant commented 3 years ago

From a ideological standpoint I am against any separation in treatment between human cheaters and automated cheaters. You don't get to join back to a community server because your cheats are supposedly off.

From a practical standpoint this should probably be done. The way this should be done is just replace the existing Exploiter tag with Human Cheater. There is a use case for dealing with them in a different way since they often deny allegations and will try to weasel out of a kick.

The worst possible answer to this would be to remove human cheaters from the official list. It is a stupid argument to make that because this is called a "Bot Detector" it cannot deal with human cheaters. By that argument GitHub shouldn't have issues, Google shouldn't do images, email shouldn't do attachments, and HTML5 wouldn't exist. Dealing with human cheaters is well within the theme of TF2BD and this functionality should remain. The only real difference between bots and human cheaters is that human cheaters are marginally more intelligent.

incontestableness commented 3 years ago

I can agree that cheaters and bots should be treated equally, as nearly every cheater will have made an account specifically for cheating. Thus, it doesn't make sense for that account to not get kicked suddenly. However, I believe it would be useful to distinguish them anyways in playerlists, so I support adding a bot tag.

Since existing "cheater" playerlist entries could be a bot or a human, this could be kept as a generic tag, and a new tag for human cheaters could be added. Maybe in the UI display this as Generic Cheater or Cheater/Bot. This would allow for flexibility with existing local lists.

From what I understand, exploiter refers to stuff like building a teleporter in the enemy spawn. Do we really need to mark people for that? I would suggest dropping it entirely, however that may be done, but it doesn't hurt much to keep it, either.

Barmem commented 3 years ago

i completely disagree, i think adding more tags make it more complicated than it needs to be

brachistosaurus commented 3 years ago

I wonder if the current functionality should remain default, but via Settings, you can choose to distinguish all cheaters from human cheaters.

By default, Cheater and Human Cheater will be treated exactly the same: as a generic Cheater. And you can only mark people as a Cheater. But by flicking the right switch, you get to use and see the additional tag.

Keeps the program simple, until simple isn't enough.

Kenajcrap commented 3 years ago

By default, Cheater and Human Cheater will be treated exactly the same: as a generic Cheater. And you can only mark people as a Cheater. But by flicking the right switch, you get to use and see the additional tag.

This might get very messy to manage. If a person starts using the program without the distinction and then wants to make the switch after already having marked a bunch of accounts as generic cheater then he/she would have to start re categorizing them once she sees them in-game again.

In my opinion, the best way to go about this is to convert all legacy cheater to legacy cheater and only use it for compatibility with older lists, and always have cheater and bot in the UI, then have a setting about what to do with cheater while legacy cheater retains the legacy behavior. The options might be:

This way, old tags will be gradually moved to the new ones by manually retagging them, but people starting now will not have to deal with this if they switch stance towards human cheaters one way or the other. People interested in different "conversion" behavior like converting all legacy cheater to cheater once instead of having to deal with retagging them gradually can just Ctrl+F and substitute the tag in their own list.

Also, I personally prefer the naming used here as opposed to the ones cited above, but this is a minor point as all of them are descriptive enough.

Kenajcrap commented 3 years ago

Something else that needs discussion is how to go about updating rulesets for automatic tagging. Since older versions of the tool still in use will not understand the new tags, updating the ruleset will break it on older versions. So a legacy rulesets might have to be put in place to cater to them until only a small portion of the user base is not in the newer version.

This process might be expedited by making this change in a major version like 1.3 or something.

incontestableness commented 3 years ago

I believe adding new tags will require a schema update. Older versions of the tool would probably display some sort of error when lists update to the new version. That should prompt users to update, so maintaining list compatibility with older versions of the tool shouldn't be necessary.

andy013 commented 3 years ago

My view is that there should be a distinction between a human cheater and a bot. I use this tool to kick bots, I don't really need the tool to auto kick human cheaters as it is easy enough to do that manually. In addition to that, I see no point in trying to auto kick a human cheater as in many cases the vote will fail. People won't just vote yes just because a random player on the server says another player is cheating.

I had to disable this tool when it tried to kick a real player with 2k hours in TF2 and the vote failed. I played with him for 30 minutes and he played different classes etc. He was hitting a lot of headshots with sniper + spy but no one accused him of cheating.

At the very least I should be able to disable the auto kick for specific players on the official list so I don't have to disable it entirely.

Barmem commented 3 years ago

Its really hard and unreliable to destinguish bots from real humans automatically so i think its a useless option

Kenajcrap commented 3 years ago

I use this tool to kick bots, I don't really need the tool to auto kick human cheaters as it is easy enough to do that manually. In addition to that, I see no point in trying to auto kick a human cheater as in many cases the vote will fail.

I agree, the benefit from having human cheater as an option is basically that you are aware that they have cheated in the past from the moment they join the server, and can react however you would like to. In my experience, using VC to say that I've played with the cheater in the past and know he is cheating usually works, even if the player protests.

I had to disable this tool when it tried to kick a real player with 2k hours in TF2 and the vote failed. I played with him for 30 minutes and he played different classes etc. He was hitting a lot of headshots with sniper + spy but no one accused him of cheating.

Yea, them not cheating at that moment doesn't mean they have not cheated, but you being suspicious is understandable since it was Pazer that marked the player, not you yourself. This goes into what was originally discussed in the discord server about the official list requiring a trust in the maintainer that some players do not have, and in that case they can always disable the list.

At the very least I should be able to disable the auto kick for specific players on the official list so I don't have to disable it entirely.

I agree, unmarking a STEAMID is useful if used sparingly and it's not currently an option. And it being an option would lead to more trust from the player to the tool

andy013 commented 3 years ago

In my experience, using VC to say that I've played with the cheater in the past and know he is cheating usually works, even if the player protests.

Do you say this even when you haven't played with the player? When they were added to list by pazer and you don't know why.

This goes into what was originally discussed in the discord server about the official list requiring a trust in the maintainer that some players do not have, and in that case they can always disable the list.

I didn't realize you could disable the official list and just use your own list. Do you just remove it from the cfg folder? I thought it just redownloaded when you launched the tool.

Kenajcrap commented 3 years ago

Do you say this even when you haven't played with the player? When they were added to list by pazer and you don't know why.

Since I live in a different region, I never encounter manual marks from the official playerlist. However, if you hover over the player in the tool's playerlist you can see what file the mark is coming from.

I didn't realize you could disable the official list and just use your own list. Do you just remove it from the cfg folder? I thought it just redownloaded when you launched the tool.

Annoyingly you have to leave the file blank instead of deleting it, else it restores the file in the next launch. This should probably be changed.

I think it's best keep other questions like that to the tool's discord so this discussion doesn't get too offtopic