Ever considered that maybe you should design your game so that modifying the client provides no advantage to players?
There is a universal way to do so, and it is to provide whatever feature the "cheat" programs are offering directly in the official client (either with first-party code or by providing an API that third parties can use).
For technical reasons this is infeasible for most modern games, especially action games like FPSs.
In general, the way a networked FPS works is by using the server as an authoritative source for information, but doing extrapolation on the client-side. This means that enemies which are not visible to a player must still be known by the client, since the camera and enemy may move into a position where the enemy is visible more quickly than the server can respond. So the client must know the location and velocity of some opponents which are otherwise not visible to the player (because they might become visible).
But, let’s suppose we solve latency problems, and don’t use client-side prediction.
You would need some perfect visibility algorithm for determining which opponents should be transmitted to each client. Those visibility algorithms make a tradeoff between accuracy and computational expense. They are conservative, because it is always an error to fail to draw something which is visible, but it is never an error to draw something which is occluded.
But, let’s suppose we solve visibility perfectly, and only transmit to clients the locations of models which are actually visible, and only the parts of those models which have pixels on-screen.
Consider an opponent hiding behind a wall, but with a small part of the opponent poking out. The game is going to need to draw that part poking out, but if you look inside the game’s memory, you can find that those textures and vertices belong to a model used by an opponent.
Beyond that—we are transmitting a video stream to the client. Basically, we can solve cheating if everyone uses Stadia.
You describe fancy advanced algorithms, meanwhile almost all mainstream FPS game servers happily accept client reporting arbitrary player position teleportation without the smallest of hitches. Not even the most basic server side validation.
I suspect that's because many games are targeted at consoles first, where the infrastructure prevents client modification or unauthenticated network connections, and see the PC platform as a second class citizen. They won't write tons of extra code to stop cheating when cheaters can't even log in to the game servers that matter for most of their players.
I think the GP suggested modifying the game design as seen by the players, not trying to implement the same games by doing (impossibly?) clever things under the hood.
Probably more fun that losing to someone just because he can move the mouse in response to a visual stimulus faster than you?
If the resulting game is too simplistic, slowing limitations can be added, such as limiting the maximum speed at which the crosshair can move, or making weapon fire deal little damage relative to health so the target can move out of range if near cover before they die.
> "Probably more fun that losing to someone just because he can move the mouse in response to a visual stimulus faster than you?"
If people thought that way, nobody would ever play any real world sports. There's always somebody better out there. Yet here we are...
> "If the resulting game is too simplistic, slowing limitations can be added, such as limiting the maximum speed at which the crosshair can move, or making weapon fire deal little damage relative to health so the target can move out of range if near cover before they die."
> Probably more fun that losing to someone just because he can move the mouse in response to a visual stimulus faster than you?
this is a very reductive view of fps gameplay. in all but the twitchiest arena-style games, anticipating the opponents position is much more important than being able to do a 45 degree flick faster than the other person.
At this point you're just arguing for removing all mechanical skill from competitive games.
Impede the gameplay however you want, in pure mechanical aspects a program will always have the benefit of perfect accuracy and near-zero reaction time (as opposed to the >200ms average of a human)
There’s a thriving market for turn-based games that do not depend on reflexes for competitiveness. I played one this weekend that was a top-down scroller shooter converted into turn-based.
It’s cheating to try and remove for yourself only that reflex-based competition from games that are built on it, and it’s draconian (and not fun) to suggest removing all reflex-based competition from all games.
What you’re describing is basically impossible except maybe if the entire game, including rendering, was done in the “cloud” and simply streamed to the player.
But people can and still make AI- or CV- cheat software that would still work in this situation. Any time there is any sort of user-input there is a way to exploit it for cheat purposes.
Maphacks, aimbots, and infinite resources cannot be options in competitive games, for obvious reasons. Of course, a game can be designed around these issues, hiding info not only from the player, but from the game client, but you still have to compete with the current games that take advantage of being able to offload logic to the clients. And in the end, the players simply don't care. The industry can't self-regulate regarding this. All competitive games will eventually end up taking complete control of the players' computers.
There is a universal way to do so, and it is to provide whatever feature the "cheat" programs are offering directly in the official client (either with first-party code or by providing an API that third parties can use).