Hacker News new | ask | show | jobs
by claudex 665 days ago
The client need to have more state info than the player to render accurately, for example, to render an opponent passing through a window without lag. And also, there are also cheat that doesn't need to spy on the state, like aim assist tool or HUD improvement.
1 comments

* Pass through a window without lag - That's why the server is sending multiple copies of potential movements and paths through the level for each character, but terminating the ones that are about to reveal their effects (no longer be culled by walls / objects) when they'd send false information to non-cheating players.

* Aim Assist - what's that supposed to work with for the assist? I guess it might help someone target a player once they're exposed, or once they've locked on. For that I think that extremely top tier players might behave within fuzzing distance of tool assist, at least some of the time. Dodging might have similar issues. I could even see ML assisting inputs just based on frame-grabs off the screen video output. -- So I'm not sure what client side anti-cheat is supposed to do here.

* HUD improvements - like what?

Aim Assist falls into a category of cheats that are more or less undetectable and unavoidable over the internet: skill assists for something a computer does better than a human. How central these are to the game depends on the game. For a game like Chess, the impact (of consulting a computer to suggest moves) is devastating, but the online community survives. I think it's typical in such communities for truly high stakes competition to happen in person, and for the online scene to be seen as more of a social / practice scene. I like this solution: prevent theft by reducing the value of what can be stolen.

Games that turn heavily on aiming have a similar central security flaw in that it is hard to prevent cheating at the game's central skill. (Though I think in the case of aimbots, sometimes webcams are substituted for LANs, with some success.)

On the other hand, some games are practically cheat-proof. A puzzle game in which you submit actual solutions doesn't require any trust of the client at all. CTF games generally run along these rules - almost anything you can do to solve the puzzle (googling, teaming up, writing tools, bringing AI assistants) is considered fair game. What might be considered a cheat in another context is just advancing the state of the art.

HUD improvements depend on the game. But as a simple example, I play a game where leading a moving target is a major skill; a HUD that gave you an aimpoint for a perfect intercept would be a pretty big cheat.

I think anti-cheat is one of those problem spaces where there is a danger of overemphasizing technical solutions to social problems. Technical solutions are nice, but there are also gaming experiences that are only practical on a private server, with friends, on the honor system. A wise friend once observed that removing griefers and jerks from a community also did a lot to address cheating. I think it is best thought of as a social problem first, though I agree it all depends on the context.

Regarding HUD improvements, this monitor shows where enemies are likely to appear. The monitor does this autonomously; the OS isn't in the loop.

https://www.tomshardware.com/monitors/msis-ai-powered-gaming...

That monitor seems to dynamically do things based on data the game legitimately shows a player.

For some data, like the health bars, a skill / accessibility leveling feature might be to just let the user pick HOW the game displays that data, to customize the UI layout to their needs.

Enemy position highlight based on the minimap vs present location? Yeah, that crosses a clear line, but it's abusing some data the game probably shouldn't have told the player to begin with. What if the minimap reflected the known shape of the world, but only updated with the visible area (standard 'fog of war' mechanic)? Again, it might be within accessibility features to highlight enemies within sight, so I don't see too much issue if the minimap's render state is restricted to the immediate area + what the camera direction could see.

There is a fog-of-war mechanic, called 'vision'. In the game discussed in the monitor article (League of Legends), what is shown on the minimap is restricted to what your team can see at that moment.

The monitor is akin to having an experienced coach watch you play live. Is that also cheating? I think it is.

I also think it's impossible to detect, unless the player suddenly becomes extremely much better at the game. That's the best they can do to catch cheaters at chess. But chess is orders of magnitude easier to monitor, because the game state and input are small and simple.

When I first read about the monitor I realized that for many types of games cheating will become unstoppable. Although sad, the bright side is that it drove me away from online gaming even more, to the benefit of my overall health.

>Pass through a window without lag - That's why the server is sending multiple copies of potential movements and paths through the level for each character, but terminating the ones that are about to reveal their effects (no longer be culled by walls / objects) when they'd send false information to non-cheating players.

So the client must render multiple possible scene to be prepared ? They already have issue to have steady fps.

> So I'm not sure what client side anti-cheat is supposed to do here.

Anti-cheat will check other running processes to prevent it. Of course, you can have totally external system for that, but it will be much more expensive. The goal is not to be perfect but to prevent most of the player from cheating.

>HUD improvements - like what?

Highlight items, show life percentage in games that doesn't, highlight barely visible opponents...

You can render all the scenarios in the world, but ultimately You have to tell the client which on is correct.

And this will always be simply too slow for fast paced games.

Unless ofcourse you send the confirmation to frames before its actually displayed, but that brings us to square one