you are viewing a single comment's thread
view the rest of the comments
[–] 1 point 11 months ago (16 children)

How can you implement server-side anti-cheat?

  • source
  • parent
  • hideshow 16 child comments
  • [–] 12 points 11 months ago (4 children)

    It really is as simple as "don't trust the client." Just assume that everyone is trying to cheat and go from there.

    Servers should know what valid inputs from clients look like, and aggressively validate and profile those inputs for cheating. Meanwhile, the server should only send data to the client that is needed to render a display. Everything else stays server-side.

    The key is to build a profile of invalid activity, like inhumanly fast mouse velocity coupled with accurate kills. There's an art to this, but for things like FPS games, the general envelope of valid user activity should be straightforward to define. The finer points get caught during QA, and then further refined post-release. Someone might even come up with a library for this if there isn't one already.

    As a bonus, this also catches situations where people are using kernel circumvention like external hardware, in order to cheat. The behavior as seen by the server is what ultimately gets flagged.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 11 months ago (3 children)

    It really isn't.

    You are imagining cheats must be superhuman, rather than merely better than the player making use of them. It's perfectly possible to create a cheat which doesn't move the mouse impossibly-fast or impossibly-accurately; it just moves it as quickly and accurately as a top-1% player. The bottom-10% player doesn't care that he can't beat the world champion, because he can still pwn some noobs.

    You are ignoring cheats which display extra information on the screen, which the server can never tell. Did the player shoot someone too soon as they came around the corner, or did they just react quickly? Or did someone on their team warn them? The server doesn't know.

  • source
  • parent
  • hideshow 3 child comments
  • [–] 2 points 11 months ago* (2 children)

    But that doesn't matter, if they have to play so carefully, they will be placed into an ELO where their "skill" matches, so they won't be any more effective than a real player at that level, then they will be forced to be more suspicious and better players sniff out cheaters a lot better than others. So they wouldn't even last long. This is basically what happens in CS now.

    Smurfs can "pwn some noobs" just the same and get called cheaters all the time. Like I said in the other comment chain, we dont need to prevent people from cheating (endless game of cat and mouse), just make it ineffective.

  • source
  • parent
  • hideshow 2 child comments
  • [–] -1 points 11 months ago (1 child)

    they will be placed into an ELO where their "skill" matches, so they won't be any more effective than a real player at that level,

    Doesn't the same logic apply to any sort of cheating that isn't literally granting immunity or unlimited ammo?

  • source
  • parent
  • hideshow 1 child comment
  • [–] 0 points 11 months ago*

    Blatant cheaters are what cause the problems.

    There are "good" cheaters today, that are less skilled players and rely on cheats to be better. They fly under the radar, not making their cheating obvious. The end experience to others is that could have been a good skilled player and not a cheater.

    If someone has any sort of cheat that makes it obvious, then that would be dealt with. If cheaters have to disguise themselves as real players, then it severely limits what they can do. And to other players, it makes no difference at that point.

  • source
  • parent
  • [–] 2 points 11 months ago* (10 children)

    Machine learning. Oh this player did this impossible move more than once, maybe we should flag that.

    Valve have been doing it for more than a decade. Now imagine what others could do, they are so caught up on "AI", but wont try to use it for anything it could actually be useful for.

  • source
  • parent
  • hideshow 10 child comments
  • [–] 2 points 11 months ago (9 children)

    How do you tell the difference between someone with a good aimbot (that simulates real input) and someone who's just really good?

    You can't (server side).

  • source
  • parent
  • hideshow 9 child comments
  • [–] 4 points 11 months ago* (8 children)

    Very easily, that's what machine learning is for.

    You can't tell with client side either, so that's a null argument. Anti-cheat is always bypassed, most good cheats don't even run on the same device anymore, completely circumventing any kernel anti-cheat anyway.

    On the server, they have all the data of where a player could be, what they could see, what they could hear, what human mouse movement looks like etc. that can all be used to target cheaters in a way they cannot get around. Player reporting would still exist of course for any other edge cases.

  • source
  • parent
  • hideshow 8 child comments
  • [–] -1 points 11 months ago (7 children)

    Client side anti-cheat has more data than server-side, because that is where the player's actual screen, mouse and keyboard are.

    The cheat only uses data available on the client - obviously - so the extra data about game state on the server is irrelevant.

    "ML" is also not relevant. It doesn't make the server any more able to make up for the data it doesn't have. It only forces cheats to try and make realistic inputs, which they already do. And it ends up meaning that you don't understand the decisions your anti-cheat model is making, so the inevitable false positives will cause a stink because you can't justify them.

  • source
  • parent
  • hideshow 7 child comments
  • [–] 5 points 11 months ago* (last edited 11 months ago) (6 children)

    It doesn't have to extinguish 99% of cheaters, hell, it doesn't even need to extinguish cheating all together. It just has to make the problem manageable and invisible to players. That's something server side can achieve. I'll take the odd game with a cheater in if my entire PC isn't ransom to some random company.

    If cheaters exist but can only do it in a way that makes them look like a real player, then it doesn't really effect the game anymore and the problem isn't visible to players. You are never going to get rid of cheaters, even at LAN they have injected software in the past. It's a deeper problem than we can solve with software.

    Client-side AC has proven futile over and over again, even today with all the kernel AC. As I already said: most good cheats don't even run on the same device anymore, completely circumventing any kernel (client side) anti-cheat anyway.

    Why be allergic to trying something new? Something that isn't invasive, a massive security threat or controlling of your own personal system.

  • source
  • parent
  • hideshow 6 child comments
  • [–] 2 points 11 months ago (5 children)

    It doesn't have to extinguish 99% of cheaters, but if it affects 1% of legitimate players that's a big problem. Good luck tuning your ML to have a less than 1% false positive rate while still doing anything.

  • source
  • parent
  • hideshow 5 child comments
  • [–] 2 points 11 months ago* (4 children)

    Good luck tuning your ML to have a less than 1% false positive rate while still doing anything.

    Already exists with VACnet in the largest competitive FPS, Counter-Strike. And machine learning has grown massively in the last couple years, as you probably know with all the "AI" buzz.

  • source
  • parent
  • hideshow 4 child comments
  • [–] 2 points 11 months ago (3 children)

    And it's still used together with client side cheat detection.

  • source
  • parent
  • hideshow 3 child comments
  • [–] -1 points 11 months ago (2 children)

    Yes, scanning of it's own game files to detect anything suspicious. It doesn't scan every file on your computer, dictate what applications you can or can't run and doesn't install itself at the kernel level. I don't have a problem with that at all.

  • source
  • parent
  • hideshow 2 child comments
  • [–] 1 point 11 months ago (1 child)

    Cool but this started with you saying anti chest should be server side, not that it should not be kernel level.

  • source
  • parent
  • hideshow 1 child comment
  • [–] 0 points 11 months ago

    It was pretty obvious from the get go that my main concern is intrusive anti-cheat solutions.

    Either way, the bulk of anti-cheat should be server yes, a basic client-side AC can exist alongside it to capture the most basic of cheats. Although entirely server side would be fine.

  • source
  • parent