Cheating in Multiplayer Games
millertime3250 writes "Tom's Hardware is running an interesting article on cheating in multiplayer games. In an issues that has gained increasing notority, it is a great read for those Counter-Strike players and others alike. It defines the different types of cheats like Client Hook, OpenGL Hack, and Hard-Coded Hack, and cheating's effect on gaming."
I think common cheats should have a forum where they are documented. That way, if someone at a LAN party gets noticed using them, they can be kicked out.
If my answers frighten you, stop asking scary questions.
I'm surprised that the article didn't mention hlguard, also developed by united admins. It runs on all sorts of hl mods and is likely one of the most used anti cheat tools available. In case you are not familiar with it, it contains tools to check for aimbotting, common cheat cvars, and manual ogc detection. If you run any type of hl server (and it's interesting they don't mention the hundreds of other hl mods) hlguard is definitely a server side addon you should look in to.
http://www.unitedadmins.com/hlguard.php
-= Why can't I add 'Anonymous Coward' to my list of Foes? =-
An interesting point and something I myself have been worried about for quite some time. More frightening to me than a cheating person (usually a lamer using someone else's scripts with poor or little understanding of how they actually work), is the eventuality of an admin who decides to use a server maliciously. It seems to me that with the power server admins have over the clients in some games, it would be feasible to use a server to distribute a virus, etc.
Imagine how many unique gamers go to a well-populated game server everyday...
IFAIC, the only possible way to spot a cheater is by spectating. Ignore how fast his reflexes are, and look at his strategy. Does he do a route that runs by all the pickups? Does he look behind himself a lot? Does he play smart? Then he's probably not cheating.
To get a cheat free server, admins should find players that visit a lot and arn't jerks and give them admin rights. Simple.
"A language that doesn't affect the way you think about programming, is not worth knowing" - Alan Perlis
I play a MMORPG called Dark Age of Camelot (DAoC). A major part of DAoC consists of realm vs. realm combat, where players from opposing realms clash in epic battles (a.k.a. lag fests). There is one well known form of cheating in DAoC, known as radar, which allows the radar user to see the positions of enemy forces in realtime before he can be seen himself.
The most popular radar program for DAoC is Excalibur, hosted by your very own Sourceforge. The troubling thing about Excalibur is that it does not fit any of the definitions of cheating, although it clearly gives players using it an unfair advantage. It does not modify the game binaries, or modify memory areas or graphical output when running. It does not interfere with or modify data streams between the client and server. In fact, it doesn't even run on the same computer you play the game on. Excalibur runs on a Linux / *nix computer on your local network, and works by passively sniffing packets, decoding them, and constructing a detailed overhead map of the player's surrounding area. Thus it is, and always will be, undetectable whether someone is using radar or not.
It really is a rather clever hack, but it's ruining the game for us honest players. (And no, I have never ran Excalibur, even to try it out.) The question is what can be done about? It would seem that the only two options are:
1.) Encrypt every packet sent between the server and client, which would undoubtably slow everything down.
2.) Send less information to the client, by implementing some kind of server-side clipping, whereby the server determines what objects are visible to each client and sends only those. Again, this would slow everything down, on the server side because it requires more work, and on the client side because when the player suddenly encounters the enemy horde, his computer will be forced to load hundreds of character models all at once.
So, any other suggestions?
All that we see or seem is but a dream within a dream.
Seems statistical analysis could find cheaters, the same way Baysean Filtering finds spam. It doesn't look for particular known signs (Viagra or a .dll mod); it analysizes trends in general.
If an auto-shoot aimbot is used, the time between when the enemy is on the perp's screen and the time the gun is shot should be nearly constant -- by screen I mean either entire screen or some radius of the pointer. If it's a human making the decision, that time would have a wider distribution with a larger variance.
For auto-aim but no shoot, take notice of when the pointer moves across the screen rapidly. Yes, there'd be type I and II errors (both not catching all auto-aims and recording simple things like turning around), but with enough analysis, it might be doable. Further analysis could be done on mouse movements prior to headshots. If a significant number of headshots (or killshots in general) came immediately following a rapid mouse movement, than an aimbot is rather statistically likely.
For wallhacks, consider a graph that connects all hallways to other hallways... if a player is consistently converging on enemies out of view, ie the shortest distance between the two players is constant or decreasing, statistically speaking, a wallhack is likely.
Of course, for all of these, the confidence intervals could be set arbitrarily close to unity -- and so it would give server admins the ability to risk overall Type I or II errors. This insures against being lucky some of the time, or doing the logical or rational thing in certain situations.
While cheating could overcome these methods by introducing errors (intentionally miss sometimes, walk around randomly some of the time, etc.), it would reduce the impact the cheater would have on the game, thereby making it less interesting for the cheater... perhaps to the point of not worth his while.
Support a few technologists in Washington.
Counter-Strike isn't that good. I doubt anything would be.