I'm not actually writing this software myself, but it occurred to me that I have no idea how to solve the problem. As the best way to explain the problem, I'll describe a specific scenario from a hypothetical multi-player first-person shooter game...
- Player A is hiding in some bushes facing west
- Player B is sneaking up on player A from the east, or sneaking up behind player A
A popular "hack" written for this game would be for player A to have a radar showing him the location of player B, even though he can't see player B on his screen, and the game does not support a radar. This hack is possible because the server is sending info to player A's client on all players within a certain range (perhaps within player A's clipping plane). It would not be realistic (as far as I know), for the server to attempt to only send info to player A's client on players within player A's view frame. Because the server must send info on all nearby players to player A's client, player A could write a hack that overlays a radar on his screen, which is populated by watching for data sent to the client and pulling out enemy player state updates. I think these are commonly known as "radar" or "wall" hacks.
Is there any way to obfuscate or hide state updates of enemy players in the information sent to the client? From what I understand, encryption wouldn't be viable for real time solutions? Even if the server was able to only send state updates on players within player A's view frame, this would still allow player A's hack to show players hiding behind camouflage or cover objects (which were presumably transparent in a minor way).
The only thing I could really think of would be to implement some type of "punkbuster" solution. That is, have player A's client regularly scan for illegal processes. The idea being that any popular hacks would be monitored. Unpopular hacks would affect a small enough player base that they're too small to go after.