I'm searching for a statistical method to determine if a player is cheating in an online game. The game is a Quake3 like game (ego-shooter).
Given a number of positive points and a number of negative points per player (score) and given n players (n<=64).
The score comes together like this (positive/negative seen from anti-cheat-perspective):
positive = number of time the player died himself
negative = number of opposite team's players killed
Additional available values:
t = Time in which this score has been accomplished
c = number of current number of players
m = number of times a player killed someone from the same team (teamkiller, very negative if higher than 1 or 2 over a 15 minutes period)
Each player can cheat independent of each other.
I used the standard deviation (on the value v = (negative+1)/(postive+1) per player, assigning the exceeding of 3 times standard deviation with absolute certainty (100%) of cheating - although my experience has been that exceeding stddev alone would be sufficient in most cases), which works great on a single player but fails miserably as soon as several players are cheating at the same time. Also the practise of defining 3 times stddev as 100% allows for > 100% probabilities. Unfortunately, the percentage of players cheating in an unfiltered game is roughly 70 to 80 percent or even higher, if accounting for more subtle cheats.
One more thing to consider is, if there is a group of people cheating, and one that isn't, the distribution is no longer a normal distribution, but a camel-bump like distribution. Is there any useful algorithm or formula for this problem ?