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