Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

‘Better’?

Why are VMs being blocked?



Because some cheats use a VM environment to hide from detection as they can act on the VM from outside of it.

The solution though is not to ban VMs, but to push vendors like AMD and Intel to enable access to, and enforce usage of technologies like SEV if running inside a VM.

https://www.kernel.org/doc/html/v5.6/virt/kvm/amd-memory-enc...


I wrote this another comment, but instead of getting too much into an arms race, studios should invest more on server-side anti-cheat mechanisms.

You could correlate community feedback and some machine learning, while also picking easy-to-catch impossible actions.


Server-side solutions don't catch all cheats. They can block actions that are impossible according to the game rules but they cannot prevent clients from disclosing too much information to the player about other players, or automating actions that are technically possible, like using aimbots.


You can definitely handle some of those situations server side (the key word being "some") with enough engineering effort.

In regards to player positions: check which player locations are occluded and wouldn't be visible through the geometry, then only send the valid ones for each player. Of course, doing this on high tick servers could prove to be computationally intensive.

In regards to aimbots: the clients already send you information about where they're looking so that it can be displayed to other players. Attach some mouse movement metrics and from that you'll sometimes be able to infer the most naive aimbots instantly.


> In regards to player positions: check which player locations are occluded and wouldn't be visible through the geometry, then only send the valid ones for each player. Of course, doing this on high tick servers could prove to be computationally intensive.

What's your tolerance on this? Too low and players will complain that other players pop into view and kill them in the event of latency. Too high and cheaters still have access to the most valuable cases of information, when there's a chance for one player to get the drop on the other.

What about strategy games which rely on their lockstep simulation for performance? How would an RTS work if it's sending the locations of 100s of units in real time versus just player actions. Do you want to have to implement prediction and deal with warping in such a game?


A few approaches to consider:

  1) be fair and decide upon some value that should cover most cases, make the outliers suck it up, like some games kick those with higher pings
  2) don't be fair and base the threshold of visibility on some predictions about the movement of the entities in the following ticks, based on their probable movement speeds, as well as the ping times of the each player; the player with the higher ping value might receive the position of the other about 10 frames earlier before they round a corner - imperfect, but should still avoid ESP across the map
  3) don't be fair, base this tolerance on hidden metrics about how trustworthy each of the players is considered, based on whatever data about them you can get, a bit like hidden ELO - you can probably game or abuse this system with enough effort, but it shouldn't make a difference in the lives of most legit players, since it shouldn't matter whether a model that you're about to see was rendered 5 or 10 frames before you actually did
  4) enforce regional matchmaking by default and only show servers with acceptable ping times for your system (if any at all)
As for RTS games, that should be even simpler - most have some sort of a fog of war mechanic. Given that, you could probably come up with some data structure to represent everything that's visible to your side (like an octree) and send all of the models within it, without worrying about checking individual positions.

As for warping: the exact same way as in any online game, probably by some interpolation. If you receive a position from the server, the entity should be visible at a certain position, if you do not, then it shouldn't be visible (or maybe send the position in which it should disappear, with an additional flag). If you don't get the data for a while, handle it however you would stale data - like ARMA 3 does with entities just standing around or other games with them running in place, which is pretty funny.


Interestingly, given it was one of the strategy games I was thinking of when I made that comment, the Paradox devs for CK3 commented on why they use a lockstep architecture and not sharing the state of the game by server decided POV in their dev diary a couple of days after: https://forum.paradoxplaza.com/forum/threads/anatomy-of-a-ga...


>Attach some mouse movement metrics and from that you'll sometimes be able to infer the most naive aimbots instantly.

see? even you do not believe that this will work


Of course I don't believe that it'll work 100% of time time, since nothing will.

Fighting against cheating in online games is going to be a constant arms race.

That's not to say that detecting most of the naive implementations isn't worthy of the effort.

It won't always work consistently but it should be pretty obvious when someone is lerping between two quaternions. Then, you can build upon that and attempt to detect small bits of random noise that'd be applied upon said interpolation and go from there.


This is what Valorant does and just does not work. People saying "yeah game dev are lazy, why not everything is done server side" this is really a naive view of game dev.

The short version is that you can't have a great experience for online games if you try to create a client as a dumb terminal.


I didn't mean to say they're lazy. I generally dislike the studios but developers there are brillant, usually.

I was thinking that studios were being cheap. Why invest in a proper server infrastructure if you can make clients install abusive software... Maybe I'm wrong but it always looked to me that way.


Don't disclose to the client anything not in their view.

I know this is sometimes impossible and/or too costly to implement but it should be possible to find a compromise that prevents most of the blatant cheaters, eventually.

Also helpers like: In any score event, for randomly selected players, analyze the last actions taken.

You just cannot trust the clients. People will find creative ways of reading the memory of their own hardware, whatever you do.


> Don't disclose to the client anything not in their view.

Either full of edges cases (how do you efficiently compute visibility, and can you prevent models from popping in as a result of latency) or computationally expensive[0]. Valorant, CSGO, League of Legends, Dota 2 are some of the games that I know about that implement server-side occluding to minimise the impact of wallhacks, but eventually a client will still need information like the position of an audio cue such as footsteps that cheats can make use of.

[0]: https://technology.riotgames.com/news/demolishing-wallhacks-...


> can you prevent models from popping in as a result of latency

Can you do that well enough on the client? The client can add some prediction on where someone is moving, but so can the server. And enemies killing you due to lag is happening already with current architectures.


> instead of getting too much into an arms race, studios should invest more on server-side anti-cheat mechanisms

End offline AAA gaming?


Offline games do not use or need "anti cheat".




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: