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

Occams Raiser·4/7/2015, 10:09:15 PM·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

usul12024/7/2015, 11:36:13 PM1 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.

DrProfVibeCheck4/8/2015, 12:18:13 AM1 votes

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

ghost555554/8/2015, 1:58:17 AM1 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.