New aimbot detector [WIP]
#1

Hey there!

I've kind of retired from the SA:MP community, but a recent development in my real-life interests and education sort of pulled me back for one last neat little script
In the past few months I've been getting to know a lot more about Machine- and Deep Learning. It's a field in computer science which, in a nutshell, covers the way computers can learn (from data) how to solve a problem without being explicitly programmed.

You come across this technology daily without you really noticing. For example, ****** refines your search results by learning from large amounts of (user surfing and web) data. I won't bother you with much of the details, but I'll go ahead and give a shot at explaining how this technology can be useful in SA:MP.

Just before I retired I wrote up a rather cpu-heavy bit of code that does several measurements every time you shoot a bullet. Mostly geometry/compare distance in a vector-space.
Two videos of the current method: https://www.youtube.com/watch?v=e2c57yGn6HY and https://www.youtube.com/watch?v=wNPCDz50Wdk

There's also too many false positives because of sync issues and the algorithm not being programmed to really recognize false positives.
So I was thinking about it this morning and thought: I think there's a fair chance this rather complex problem (recognizing an aimbotter) can be solved with a Machine Learning approach.
(It is a complex problem because there's quite a lot of variables the algorithm has to look at to judge whether or not someone is cheating. These variables co-relate in a way no one can really pin-point because of its multi-dimensionality.)

So! To get to the point of this thread. While I'm coding up the model architecture, I need some data to train my model on (ML terminology ).
What I will basically need is A LOT of shooting battle data. I believe around 20 minutes is enough with about 10 players, in which 5 use aimbot and 5 do not use aimbot. This data includes for example:
  1. Walk/run speed
  2. Hit/miss ratio
  3. Body part variance (e.g. how many times you hit the chest compared to the arm/head).
  4. Number of bullets shot.
  5. How long it takes to kill the target.

These are some 'features' I came up with how we can recognize an aimbotter. I'd really like to hear what you guys think could also help distinguish a valid shooter from a cheater.
Hopefully, the program will notice that the values taken from a cheater are much different than from a non-cheater.

For example: the data-points to the left represent valid shooters, the data-points on the right represent cheaters.



I'd really like to make this for the whole SA:MP community.
I'm eager to hear what you guys think.
Reply
#2

Is it basically some sort of artificial intelligence Anti-Cheat? Is that method already used in any other games/Anti Cheats?
And also, it sounds like it'll take you a while, like its really, really advanced.
Reply
#3

Quote:
Originally Posted by MichiEXE
Посмотреть сообщение
Is it basically some sort of artificial intelligence Anti-Cheat? Is that method already used in any other games/Anti Cheats?
And also, it sounds like it'll take you a while, like its really, really advanced.
Actually it involves far less code than programming all the sets of rules that identify an aimbotter (according to that programmer). Whereas this method analyzes the dataset, recognizes patterns and can calculate a probability whether or not someone is cheating. It's basically making a classification (cheater/non-cheater) by learning from raw data instead of rules made by a human being.
Reply
#4

Any anti-cheat is good idea, fair play server invites more good players, maybe less but its good to have 50 honest players than 500 cheaters/hackers/bug users/glitchers...

SAMP have many more problems, like its more like connection between clients, server does not have much control over what happens between clients.
This leads to God-mode cheats and stuff like that.
Its funny how easy is to add money to your cash...
This is why servers should only use Bank's money and not cash.
Reply
#5

Very cool your idea, it would be nice to do some filterscript and distribute to everyone, so sa-mp maybe will reduce the amount of cheats/hacks :P
Reply
#6

Nice idea, I think you'll need a lot of data !
Reply
#7

Quote:
Originally Posted by Jingles
Посмотреть сообщение
  1. Walk/run speed
  2. Hit/miss ratio
  3. Body part variance (e.g. how many times you hit the chest compared to the arm/head).
  4. Number of bullets shot.
  5. How long it takes to kill the target.
What is about visual information (collisions), (relative)difference-vectros between shoots (how player moves his mouse), ping & packet loss information (for shooter and victim (but i think it's more difficult in case of fast victim selection between many players)).
Reply
#8

Once you've written the algorithm and provided it with the test data, so it has a good idea of what is cheating and what not, will it be able to improve itself over time when deployed, by gathering further data and adapting to that data?
Reply
#9

Quote:
Originally Posted by Tamer
Посмотреть сообщение
If you make a PAWN script that can be plugged in and used at our gamemodes to give you the necessary data, I can provide you hours of data of aimbotting users and legit players.
I would very much appreciate that . I indeed need a lot of data and preferably in the TDM experiment I need to know whether the player is using aimbot or not. I'd love to hear some details how we could work this out
Reply
#10

Quote:
Originally Posted by Freaksken
Посмотреть сообщение
Once you've written the algorithm and provided it with the test data, so it has a good idea of what is cheating and what not, will it be able to improve itself over time when deployed, by gathering further data and adapting to that data?
Yes, that is correct. It can learn more over time. For example when it bans/kicks someone when it shouldn't have; then you can correct the system and it will learn from its mistake. Machine learning algorithms are evolutionary, basically.
Reply
#11

Quote:
Originally Posted by Mutha_X
Посмотреть сообщение
What is about visual information (collisions), (relative)difference-vectros between shoots (how player moves his mouse), ping & packet loss information (for shooter and victim (but i think it's more difficult in case of fast victim selection between many players)).
How would you record collision data? I indeed tried the difference vectors; but I noticed those are quite cpu intensive when recorded every X shots. Ping/packet loss would indeed be an excellent check.
Reply
#12

Quote:
Originally Posted by Jingles
Посмотреть сообщение
How would you record collision data?
Predict difference between player scene and server scene, then experpolate victim position for shooter. Use values: 0.0 - 1.0 as distance to visible closest object corner (where victim can hide) for attacker, where 0.0 - victim fully hided from attacker and 1.0 - more 1 meter to closest corner or there is no safe place in closest range.
Reply
#13

This type of detection scripts can be used to detect wider variety of cheats...

But some of this should be taken into consideration to develop SAMP, I mean the possibility to cheat to be minimized in development process or maybe can this script can be built into SAMP ?
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)