Hacker News new | ask | show | jobs
by seba_dos1 38 days ago
> Cheating is the client being an endpoint you don't control.

No, cheating is enabled by the client being trusted despite of inherently not being trustable. The solution is to design the architecture of the game server in a way that makes it not rely on untrusted inputs and doesn't distribute knowledge the player isn't supposed to possess, rather than try to force the clients to be trustable by eliminating general purpose computing from the society. It's not always possible, but IME these cases where it's not are exceptions rather than rule.

Instead, more and more games just reuse some general purpose netcode for $engine to synchronize state between clients and eventually attempt to paper over the issues with that approach using anticheats. I've recently played a multiplayer game where I (accidentally, while messing around for benign reasons) noticed that I could control the global state of the entire map just by sending commands to the server that referred to various objects and they were accepted and broadcast regardless of whether my character had actually possessed them. That's the kind of code that, once the game gets popular enough to attract enough cheaters to cause actual pain, gets an anticheat slapped onto it the most eagerly, as nobody's going to rearchitect their game's entire netcode from scratch if they can just not do that.

Remember Fall Guys? A relatively big budget game with absolutely no reason to trust the client over anything other than the player's own key presses, where you could teleport over the map to instantly win the match? Solved with, of course, EAC.