Fighting Bots with Python and Machine Learning

NIDC 2022

About me!

  • I really like parrots
  • No, I really like parrots
  • Apart from parrots, I really like Python and I play a lot of online games (Ballymena internet permitting)
  • I don't really use Twitter much so
    nowhere to send hate mail :(
  • 2020 happened.... need I say more?
  • Moving back with my parents, I rediscovered old games
  • One of them was League of Legends

Glossary

  • Smurf: a high ranking player who plays in lower ranked games, often for ego reasons
  • Elo: ranking
  • I made some new friends who also played
  • One of them noted a problem he was having
  • Bots, bots bots
  • It is very hard to even get to Iron in the first place
  • Why spend manual time and effort when you can just code a bot to do your dirty work?
  • Manual derankers exist

How to even spot a bot?

  • They share several characteristics
  • Queue only in the support role
  • Tend to pick champions that can sit back and heal
  • Since we have some common characteristics for these bots...
  • ...that means we can categorise them using ML
  • First things first, getting the data
  • So, what do we need to collect?
  • Summoner name (aka player name)
  • Region the player is in
  • Champions played
  • Their overall winrate
  • Their summoner spells
  • Weird rune choices?
  • Create a CSV with the aforementioned fields....
  • ...and now the fun part
  • aka: Someone who failed their Maths GCSE twice and is not very good at maths tries to understand Machine Learning
  • Looking at what others have done before is always a good starting point!
  • Basic tutorials are also a good starting point, but I don't want to categorise plants for the millionth time, I want to categorise BOTS
  • Looked into folks categorising things like Twitter bots...
  • To train the actual model, I made a CSV of actual confirmed bots
  • I used XGBClassifier's model, part of XGBoost to classify them
  • SKLearn
  • Pandas!
  • How to find them you may ask?
  • op.gg

So, where do we go from here?

  • Or more importantly, what have we learnt?
  • A proper frontend would be nice so more people don't have to suffer through my manky CSV Python creation
  • False positives are a problem, I don't want to 'shame' people for being bad at a videogame
  • Riot suffers from the same problem too
  • Is it even possible to avoid false positives?
  • Riot has a lot more resources at their disposal
  • I'm a parrot dude

Copy of deck

By laches1sm

Copy of deck

  • 290