One guy sent me a really interesting topic for a blog post: anti cheat systems.
Anti Cheat Systems. I’ve been researching ACS and such for a while, but haven’t actually found an article on your blog about them.
1. How to create one
2. How to find a creator
3. Types of ACS to choose from
4. Why ACS are good
5. How to stop dll injections.
I must admit that I know very little about anti cheating systems, but when I was working on my multiplayer code I got some ideas about this – and here’s some basics about cheating in games in general.
Here’s some basics
- For single-player games these aren’t needed (if somebody wants to play solo and cheat in game – let him do. Who cares? I know this was basic, but I just had to share this)
- Multiplayer modes that use “dumb client, server handles stuff” are less likely to get cheated by the client (of course there’s still cheats available because it’s practically impossible to have server to handle 100% of the stuff in most games). So basically this means that for example, instead of letting client to say “move character X to location Y” the client should send command something like “I have character X selected and I just clicked location Y”. Now server can calculate where the character X currently is, and where it should be going. (This was very simplified example, and there’s situations where you need to consider letting client have control over their character – to get physics for example to run pretty smoothly. There’s plenty of discussion about how this should be handled, and I won’t go into this here right now. People interested can check out links in this blog post to get more info)
- Play only with people who you can trust. This won’t always be possible, but something I’ve found very easy way to solve cheating.
Valve’s anti-cheat system
There are some anti-cheat systems, such as Valve’s anti-cheat (VAC) system (see also VAC page in wikipedia). I don’t know where to get more information about how this systems work, but there’s one thing to consider: these might get non-cheaters banned accidentally.
If anti-cheat system harms ‘fair players’, consider not using them
Just like with DRM – if the anti-cheat system can do any harm to people who don’t cheat, then I think it’s quite bad. I think that cheating & piratism are something that you kind of can’t beat in the end. I think that it can be worth investing some time to ensure that cheating does not occur.
Like said, I don’t know much about this – but I’d consider some sort of server checking what goes on. Server could see if “clients are playing by the rules” and if not, then perhaps give warnings to other players that “this guy might be cheating”. I would be hesitant to use automatic banning system, since people are pretty good in moderating things. For example, if the guy who is constantly killing everybody gets “this guy might be cheating” message from the server, then I’d be more keen to check out how the guy is playing. On the other hand, if that cheater is a friend of mine who I know is playing fair, then I could say that this was a false alarm.