How I would fix the problem of fake BOT accounts in League.

Occams Raiser··1 votes·970 views

A dude asked me how I would fix the problem of bot spam fake accounts in League.

You code for repeat action. Looking for a pattern of behavior and the time intervals between the actions. If the bot is simply coded it will respond to stimuli the same way every time. I can tell the difference between a bot and person in a matter of minutes. We are looking to shot down accounts so even it took one or two games to compile the data needed to permaban an account that would be nice. The ban would be automated so an account wouldn't even make it to level 6 before being banned. That is how I would fix it.

Test:

  1. Does the player chat more than x times
  2. Does it repeat itself or what others say
  3. Does it move and does it follow other player pathing
  4. Does it attack like LOL AI (it attacks you when you enter its ability radius) on millisecond precisions
  5. Is the timing at which it follows and makes course corrections the same as another player
  6. Does it build and does it cs on average to other players on its team. Does it kill jungle monsters
  7. Does it auto attack for a specific amount of time without movement
  8. Does it B to base with near full health or mana often. x times
  9. Does it have self preservation (walking to towers to die and running from threats)
  10. Does it combo skills, drop abilities all at once, or cast abilities at static intervals
  11. Are these behaviors similar throughout game history

ATTENTION: This account has been banned pending further investigation. Contact us if you feel this has been done in error.

This is not hard to code for. These are just some checks I came up with while writing. I bet this could be done with about a 100 lines. Shit I know it is under 500 lines of code. That is one dude's week at riot. They don't have 40 man hours to fix a pervasive problem?

28 Comments

usul12021 votes

Seeing as this is copy and pasted from another comment, i'll C&P my response.

1: @time = rand(r)+100 say [chatOption3]; 2: chatOption3.length = 83; 3: move location(currentX+rand(20)-10, currentY+rand(20)-10); would create strafing in lane, and plus, I honestly don't think there's a resouce efficient way to track what you said. 4: AttackDelay = rand(250)+100; measured in ms, to account for a persons reflexes. 5: random number generator on an unnamed seed. all timings would be different. 6: make it play support. the role is always open, no CS is needed, and a support like soraka can just watch their carry's health and heal to get assists. 7: again, my strafing code, and the fact that it's a support. 8: recallWhen(health<=X || mana<=Y); 9: if(enemy.distance<<enemy.distancePrevious) {move location(baseX, baseY)} 10: Again, supports like soraka. poke on CD. heal if(carryHealth<=X && health >=Y) 11: everyone's activity looks the same. this one would look like a support main that mains soraka, sona, and perhaps nami.

There, your bot finder no longer works. Wanna try another one? (note: all move commands are read as a click @ 'location', a simple mouseEvent)

Also, a lot of us don't talk in chat much to avoid toxicity on either end. Don't punish us for that.

Occams Raiser1 votes

1> How many things does it say? How often? Is it really random over the life of the account? Compensate: I don't know 3> Replays track all movements so its stored somewhere. This doesn't randomize the movement to me cause it gives it a range. It has the potential to never move anywhere outside of a circle. Compensate: I don't know 4> Seems now you have a BOT jittering throwing out random attacks. Compensate: yes 6> Everyone Cs a little. 0 is a red flag. Picking the same role with statical regularity or performance is a red flag. 8> I this a random variance of health\mana or hard number? Compensate: Yes 10> If behavior is repetitive brought about by the same stimuli it would be picked up by compensating for no.6

I'm not sure if you thought all these had to red flag in order to be kicked to an admin review. In a war like this you just have to make unprofitable through time and effort. If perps have to create a bot so good you can't tell it from a human we have won anyway. This is a way to force them to build a better bot.

HA HA. It moves unpredictably, has self preservation, manages cooldowns, pokes and heals, and doesn't afk or feed. All you have to do is tell me it drops wards at gank spots and I'll take it into ranked games with me. If it manages to win I'll ask for its hand in marriage. This dummy account will be SILVER 3 in no time.

usul12021 votes

1: You're underestimating the number of people who talk in games. I frequently go entire nights with no talk in game. 3: Replays contain the data. corrolating it and matching patterns is FAR more resource intensive. 4: You have a bot that moves, yes. and it will respond if it is attacked, yes. Especially on a support like soraka, that isn't enough, and will still be very exploitable. 6: 0 CS on a support without a taragons is a good thing. its really easy to do on soraka, especially if you build almost no AP like many rakas. 8: either one works. and it wouldn't even need to be smart about it to beat the checks on it. It can constantly mimic someone being caught out. 10: i'll add a rand(x) in there, now it isn't repeatable.

I'm not sure you realize how useless this support would be. it would not follow you out into lane. it wouldn't zone. it wouldn't keep bushes safe. it wouldn't poke. it wouldn't use any utility. it wouldn't have an ability to push with you, leaving you to 2v1 for every kill or poke or skirmish. If that makes silver 3, then people really need to learn to support.

Occams Raiser1 votes

I'm not sure you realize how useless this support would be. it would not follow you out into lane. it wouldn't zone. it wouldn't keep bushes safe. it wouldn't poke. it wouldn't use any utility. it wouldn't have an ability to push with you, leaving you to 2v1 for every kill or poke or skirmish. If that makes silver 3, then people really need to learn to support.

You just gave me 4 more points of behavior to search and filter for with this previous statement.

1: You might not talk in games but that is only one check. You do other things that would keep you off the list.

3: If replay data exist it would only have to save like ten games to catch a BOT If done effectively. as long as it is automated for the most part, it needs like one guy double checking before the ban. If you trigger: it starts saving your game data. If you drop out: it deletes the ones it has saved.

6: I would think a BOT would hit a minion hap haphazardly if was attacking a champ.

8: I put that one in there cause I see a lot of bots back with full near full health. Just seemed like an obvious one.

10: Again, supports like soraka. poke on CD. heal if(carryHealth<=X && health >=Y): You said it would poke and heal. If it stands at particular distance from turret the whole time until the turret is destroyed that is a flag. You could even filter for how it defends the turret and doesn't flee when its destroyed.

I think you make a very strenuous witch hunt program then you see if you can get real people (Riot testers and what not) to false trigger it. Trolls might be a variance but they deserve to be banned anyway.

My next project would be troll buster. You wouldn't even have to report people. It would already be checking, building reports on people based on patterns in your last 10 to 15 games.

usul12021 votes

3: Having the replay data and processing it are completely different things. the second takes an incredible amount of resources to do consistently, as you would have to have un-compressed data. Its not feasable to check for patterns that can be easily defeated by a simple random number generator that is already in every major coding language.

6: a bot will never hit what it doesn't want to. the programmers could make it take CS if needed though.

8: obvious because why fix it? still an easy fix in itself, but needless at this time.

10: The ways to track that are incredibly complex in the fact that you would have to use extreme tolerances in order to obtain a simple pattern, and even then would likely miss anything of importance because of pixel numbering being too precise for a randomly generated movement to be tracked properly.

My point is that the 'witches' will always be able to evade the program, because it's so much easier to code a way around a search than the search itself.

Occams Raiser1 votes

But no one operates under the premise that the criminals inevitably win so what are you really saying? The battle isn't worth fighting? That might be true based on what the damages are vs man power to fight it. EX: The drug war. pointless. The opposite is slave trafficking. If botting isn't a real problem, screw it. If it is a problem then you weed out those that are unable to defeat the filter at least. There will always be an arms race. You only lose when your side's dead.

usul12021 votes

I'm saying that that coding will take a lot of time, and gain riot nothing. that's not a business model that can be followed. I sincerely believe that riot wants to remove the bot and elo boosting problem, but that an efficient way has not yet been found.

I think you're prone to a bit of hyperbole here. None of those are in all a similar comparison. Those are 2 sided conflicts, this is a system with an internal issue, much like a virus. it can change itself to prevent detection. the differences between viruses and bots, is that viruses kill people, so we stop that. bots make 45 minutes of your life less entertaining (if you allow it. i find simply playing the game anyway to be entertaining, even in a loss) and therefore receiving no monetary compensation for continually futile attempts will not be happening. If League were pay to play, then perhaps. It is not however.

Occams Raiser1 votes

You gave the same two analogies id did but on a smaller scale. One is something that you must combat regardless of the cost and the other is something you may want to get around to if it can be done efficiently. I do agree with you though. I have said that unless the player base dips dramatically trolls, BOTS, and other intrusions will be ignored for the most part as they do not mess with the revenue stream. When someone talks about the tribunal or reports, I'm like, "dude its business. They don't give a shit. The game is free."

usul12021 votes

The tribunal costs them little to nothing (once running) and has been shown to have a positive effect on the game, according to the in-game statistics. I began playing after it was taken down, however, and cannot actually vouch for it's usefulness, so i have no idea if it will feasibly come back or not.

The point with bots still stands though. If an efficient way to remove them ever comes about, i have no doubt riot will do it instantly. Until then, throwing money at something with no return isn't going to happen. I don't believe that Riot doesn't give a shit, I just believe they are taking a logical business approach to the situation.

DrProfVibeCheck1 votes

You're giving the creators of these bots things to avoid....

ghost555551 votes

If fact to solve your problem of "4. Does it attack like LOL AI (it attacks you when you enter its ability radius) on millisecond precisions" we could just do:

public static event EventHandler MouseAction = delegate { }; private static Timer _timer;

public static void Main(string[] args) { //... this.MouseAction =+ new EventHandler(MouseClick_Event); //... }

public void MouseClick_Event (Object sender, EventArgs e) { _timer = new Timer(Random.Next(0.5, 1.0) as Double); // <-- Increase minimum value to decrease the assumption of instant reactions _timer.Elapsed += new ElapsedEventHandler(Attack_Event); _timer.Enabled = true; }

public void Attack_Event (Object sender, ElapsedEventArgs e) { //Execute attack }

This is can be used as pseudo code, and all of your idea's on what to change to make it work can be broken. The only way to stop bots is to see how often they chat outside of games, and what they chat about inside of games. That's how Blizzard Entertainment does it and that's how Riot Games should do it.

usul12021 votes

Blizzard's games are much more group oriented, however. Its not that hard to go several games of league without talking beyond "nj!" In WoW, you're not going to be doing a whole lot without talking to others.

ghost555551 votes

Well in the event that Blizzard Entertainment thinks that the user account in questions is a bot they have moderators in-game that will ask you questions regarding either information about the game or just information about your experience in general.

Video

Besides the topics discussed in that link it really boils down to averages, having a mass compiled database with all of your players' information and having a bot of your own single out users.

usul12021 votes

Oh yea, blizz is definitely better in their personal handling of issues and whatnot. out of 4 or 5 interactions with their support, i've always gotten a person who didn't give me an automated/copy pasta response. love blizz's customer service.

All i'm saying here, is that it's much harder to just use chat as a basis in League because of the lack of necessary written communications.

Occams Raiser1 votes

We all know Blizzard is a better company but is it because their games aren't free to play? And is it because of the fact that they are not EA?

usul12022 votes

Hero's of the Storm will take an interesting look at this.

Raptamei2 votes

{quoted}

Oh yea, blizz is definitely better in their personal handling of issues and whatnot.

It's almost like you're paying $10/mo for support tho.

usul12021 votes

Haha, the content is worth the cash in itself imo, but yes, i would expect better support from a pay to play game.

Occams Raiser1 votes

Well if you know what is being checked, it can be broken. I thought it could be done server side. And I was giving suggestions not the actual list that they should use. Some people think it can't be done. What do you mean chat outside of game. I bet you could get to level 18 or so without talking to someone. I did. I didn't start making a friends list till i was well beyond 20.

And if you break all my ideas you are on your way to programming a BOT that is just as effective as the average bronze player. I still win. I don't care if it is a bot in reality. I care if it throws games.

usul12021 votes

As soon as a bot is banned or put on probation they would be updated (and take less time to do that than code the checks), so where you put the checks doesn't matter much.

The issue isn't the list themselves, it's the fact that no list can be complete until you make it check for the perfect human player, in which case faker and bjergson and all them will be playing alone and we'll all still be in the bot lobbies.

I mean talking in game, where the check would be. Some people just don't..........

And when it becomes bronze, then the bad bronze people get checked for being bots, and cause issues there. the AI bots are better than some bronze people, and they're coded to be bad. thats when Riot encroaches the response to the issue onto players, which is when complaints and real PR issues happen.

Occams Raiser1 votes

Do you think there would actually be a problem if a bot performed at bronze 1? You talk about checking for the perfect human but I am checking see if the "light is on upstairs" not what decisions are being made. We know what bots look like. If it can fool us its probably not the worse person on your team.

Things like a consistent kda of 1/30/1 is a red flag of something. If this a an average of 10 games but is a real human, someone needs Jesus. There is room to be bad but when its so consistent that it looks automated or deliberate who cares if its trolls or bots. We are trying to filter out things that make the experience band for players. We hate bots because they are bad not because they are bots.

usul12021 votes

If the bot is bronze 1 level, it has failed. the bot is (ideally) the worst of bronze 5. therefore it plays at the level of bronze 5, at it's pure best. So when this bot is made to avoid all of these traps, you've gone from an obvious bad thing that you can ignore, to a feeding machine that is bronze 5 support with 200 MMR. Their end goal is bronze 5, so they'll just make a bronze 5 level bot and keep at what they're doing.

Occams Raiser1 votes

I'm working under the impression that some of the BOT are used for money making fishing schemes so not being found out is what some of them is going for. I am sure some people put bots in to gain ip as well or some other stuff. But are you saying people are using them to troll but not getting the gratification of watching the trolling. There is an ulterior motive for the bot and being detected should be its number one priority. What is the benefit of being deliberately bad?

usul12021 votes

The general use of these bots is elo boosting. they drop their elo to that of someone who would buy the boost (pretty damn low) and then they get great players to play the account and skyrocket them both in duo Q. (This is another error in your analysis, because actual people are actually playing more than 50% of the time, seeing as falling is generally faster than climbing, especially in a duo)

Occams Raiser1 votes

I did not know this was the scenario. You have hipped me to the game. I didn't think about the level of rube they were targeting.

usul12021 votes

Yea, it's a pretty scummy form of business, but people buy it to escape 'elo hell'. And as long as people do then more bots are made. kinda interesting in it's own right. bots help make 'elo hell' and therefore people pay to escape it and therefore more bots are made, making more 'elo hell'.

ghost555551 votes

What I ment by bringing up chat in the first place was as an example of a moving average detection system with subsets and analysis of those subsets. Riot Games would investigate users way outside of the average and then ban them together. You cannot defeat client-side programs, you can only compare those programs with the average human player which is why valve uses Overwatch in CSGO. However even Overwatch is flawed due to the server tick to recording issues that arise, so then we have VAC which doesn't check the PE headers of files. Yeah sure it takes out the script kiddies, or some of them, but it won't take out the bot producers who continuely evade client-side dedection.

Occams Raiser1 votes

There will always be an arms race. That is like the battle between god and evil.

More from [ARCHIVED] Miscellaneous

More by Occams Raiser