To clarify, this does not seem to only affect cs2. Antilag+ has been slowly enabled on a game per game basis, and they recently started adding multiplayer games. They seem to also be affected.
AMD also openly said that they are patching game engine code, which is just bizarre. Not sure what the thought process was. Even if we assume they were aiming to be whitelisted (I'm not sure hooking into game engine code is even common, apparently it isn't), they have still pushed the updates before the whitelisting happened. What was the plan here?
There are open source projects attempting a similar approach to antilag+ ("patching" the DLLs at runtime) but they all seem to warn you about possible anticheat detection on multiplayer games. Again, this was patching the actual engine DLL, not the rendering or graphics related DLLs that drivers sometimes have to patch for specific games.
> AMD also openly said that they are patching game engine code, which is just bizarre. Not sure what the thought process was
Hasn’t it been true for ages that GPU drivers contain fixes for a lot of GPU instructions from popular games that would otherwise be broken.
In that case, if they are used to fixing games already, it might not seem a big step from their side when they decided to also patch game code that runs on the CPU. It was unfortunate that they did not realise this would lead to triggering anti-cheat systems in games though.
But there is history of others altering program code too. For example Microsoft Windows included code specific to various pieces of software that would otherwise be broken. I wonder if that ever lead to trigger anti-cheat systems in any games.
>> it might not seem a big step from their side when they decided to also patch game code that runs on the CPU. It was unfortunate that they did not realise this would lead to triggering anti-cheat systems in games though.
Never mind anti-cheat systems. This is a huge boundary violation - like when Sony installed root kits. It's one thing to modify your own products behavior, but quite another to modify other software!
It’s a different layer for those though. In each of those other cases, the code paths that diverge per app are not within the app libraries but within the system SDK or the graphics driver.
Those are layers the application has to trust , and also has expectations may change implementations. They’re only accessible as an API.
In this case they were stepping into code they don’t control which is a huge violation of trust
AMD should work with Valve to release these improvements to everyone. They pretty much patched the engine to lower latency, I believe everyone could benefit from it if Valve saw what AMD did and implemented their "fixes".
Tangentially related: Back in the day, the AMD Cool'n'Quiet feature had a funny effect in CS:Source where your player would move much faster than normal. This resulted in bans because of the obvious advantage, which was mistaken for a speed hack.
Something similar happened when anyone try to play un-patch Unreal Tournament (1999 game) on modern cpus. The dynamic cpu speed confuses the game engine, that results on the game slowing of becoming comically faster.
Some AMD employee really wanted those last few FPS out of their CS2 rig. I wonder how you’d even go about optimizing a game this way. They must have some profiling that shows where the engine hotspots are, then somehow tie those to actual engine dll entry points. Kind of a tricky/impressive bit of reverse engineering.
Most likely, this is similar to NVIDIA reflex. In that case, they simply wait in the engine loop directly before mouse and keyboard entry are handled. That way, the GPU can process this new data immediately (as opposed to first waiting for vsync) and thereby overall latency is reduced.
Why would this be considered an illegal cheat? In a networked game, shouldn't the only determinative factor be whose input arrives at the server first?
Wait, how does exactly this work? As I understand it works something like this: mouse/keyboard input -> driver -> game engine -> graphic engine -> GPU. So, what exactly NVIDIA reflex (and Radeon lag+) did? How does intercepting commands in game engine helps the performance of GPU?
Upd: I did read explanation of Nvidia reflex (NVIDIA Reflex keeps the CPU perfectly in sync with the GPU to eliminate the render queue.) and still not sure that I understand. Why developers of game did not implemented this fix themselves?
VAC bans in waves, you might be banned a month after you were caught cheating. This prevents cheat developers from iterating and finding ways to circumvent the system.
Never understood how Valve's VAC bans are even legal. You pay for a game, Valve decides they don't like your computer and they take away your ability to play that and other games that you paid for without refunding you. Worse, they slander you on your Steam profile page so other gamers know what Valve thinks of you.
They claim to never make mistakes, but that's obviously bullshit since they make mistakes time and time again.
What happens in meatspace if you pay a cover charge to enter a place, and then don't follow the rules of the establishment? The same thing, you will be asked to leave, and trespassed if you refuse.
Just because you paid to access someone else's servers doesn't mean that you can do anything you want, with no way for the owner of the server to enforce any rules. It works like this with any kind of service on the internet. Games are not any different.
If I pay a lifetime membership fee for a meat space, and they ban me, I expect the lifetime membership fee to be refunded, subject to reasonable prorating, even if they claim I violated their "subscriber agreement".
Anything else would seem to me to incentivize banning as many lifetime members as possible before significant consumer retaliation (e.g. maybe we'll just ban the lifetime members with low social clout), to reduce costs and maximize profits.
Doesn't the profile just say how many VAC bans you've received? That's just a statement of fact rather than slander, regardless of fairness of the ban.
Overall though, when you make a Steam account, you agree to their terms of service, where you agree not to engage in "modification of content and services" in the context of multiplayer games. You also agree that the owners of the game the modification was made to can report you to Valve, that Valve can put that info on your profile, and that other games can decide to deny you online services for that. You still retain access to offline stuff and any online games which don't care about your VAC bans.
It sort of sucks in the sense that sometimes you might not know that something is modifying your game executable, thus getting you a ban, but otherwise a reasonable means of dealing with cheaters.
The average user is not capable to agree or disagree with such a requirement. Look at this very post: all they did was enable a feature of their GPU driver. And they got branded a cheater by Valve. Sure, Valve promises to make it right this time but how can a user predict what will happen when they update or install software on their machine that happens to step on Valve's toes? And good luck getting anyone to believe you or even look into your case unless the issue affects a ton of players and makes the headlines.
You don’t buy the game but a license to play it. You can still play CS after a ban, just not online on their servers or any community servers which block vac banned players.
(They killed all community servers two weeks ago btw)
> You don’t buy the game but a license to play it.
This is such a pedantic argument that misses the point and short circuits the entire discussion. I don't think there's a single reasonable person who mistakenly believes that they're buying the IP itself when they "buy" a game on Steam.
Of course it's "just" a license to play it, what's being questioned are the terms of those licenses, both from moral and legal perspective.
Most current EULAs boil down to: "We reserve the right to suspend your account and revoke access to the software you paid for for any reason, no refunds". To the best of my knowledge these EULAs haven't been tested in court so they shouldn't be taken at face value.
There's a lot of room to balance the rights of customers who should be granted the same rights they would enjoy when buying a physical product, and the practical needs of platforms which need to ensure a fair environment for other players.
Should cheaters be allowed to ruin the experience for other players? Obviously not.
Should platforms be allowed to permanently ban suspected cheaters without a fair and transparent appeals process and without offering refunds? I don't think so.
"You can play it except for the game modes people actually care about"
Do you also think it's okay if a car that you bought prevents you from driving it, but oh don't worry, it's okay because you're still allowed to open the doors?
I've had a steam account forever and haven't been banned. that said call of duty appears to ban people running on cloud gaming with no way to contest it so you're out $70+ or more just because your laptop sucks and you're using a streaming service to enjoy your games anywhere.
unless games are written from scratch with security around preventing cheating first they are left with grasping for virtual straws at what is an exploit or not. in a lot of cases it's low level drivers that are suspect, game code changing in ram such as by a hook into the code, etc.
a few friends and I sat down and pondered what it would take to make a game like quake 2 robust enough and we gave up after deciding it'd be a ground up rewrite of both the client and server sides to only send specific data the client needs but no more so even wall hacks don't work and sending encrypted code to run in a VM inside the game from the server and if that memory is touched assume it's kick worthy but even then bit flips can happen etc. Could we trust video drivers from being tweaked to show wireframe renders and other things like that came up. Given this was like 1998 so I'm sure some of this has been implemented these days, I haven't kept a pulse on the tech.
I have read that even secure systems such as the PS4 have cheating going on with rooted systems so who even knows.
No, I don't even play these games competitively. I just care about being able to run what I want on my devices without some company telling me I don't get to do that or else
And admittedly their grandstanding of "VAC is always right, we never make mistakes and bans cannot and will not be reversed" hits a nerve, because that is just a blatant lie.
They actually banned players for using Windows 7, and now they're doing it again to AMD users. Both were obvious mistakes on their end.
You can still play with a VAC ban, you just can't play on VAC enabled servers. If I remember correctly, in CS:GO there used to be VAC disabled community servers you could play on, though they'd unsurprisingly have an increase in cheaters.
Paid VAC protected games exist, and arguably it's worsewl with counter strike: you pay for cosmetics that become worthless one Valve has decided they do not like what you install on your computer.
Just go back to private servers, no matchmaking, no competitive ranking. And no I haven't played multiplayer since around the time Battlefield 1942 added punkbuster and vote kicking.
The real issue here is that it was a detectable optimization, Nvidia may play similar tricks except it’s not an issue if the code is embedded deeper into the hardware stack.
For example, Nvidia cards are great for cheaters because you can disable flashbangs and smoke grenades using the stock driver.
If we push it that way, any improvement of FPS due to hardware could even be considered unfair, and to ensure fairness, everybody could theoretically be limited to 30 FPS and xxHz refresh rates.
Reflex requires the game developers to use the Reflex interface via NVAPI, the AMD global anti lag feature was hijacking calls at runtime and modifying the memory of running processes.
I don’t know how this design passed basic red teaming during the design phase not to mention QA.
What actually happened is that the game code was modified in memory which VAC disallows because that's how many cheats are implemented. I'm not even sure what you're trying to say. Yes you can disable some effects in games through changing driver options and you can make your monitor render a red dot and add macros to your keyboard, those all are a distinct problem from the subject here.
A framerate limitation for "fairness" wouldn't make sense because you'd basically be arguing that it's unfair that someone saw one single extra frame that some player zipped across the screen and they were able to track them whereas they wouldn't without that extra frame.
But a game being networked naturally presents the same issue and it can't be solved (in an engine like source or unreal): player locations are sent to your client at a fixed sample rate. Whether you see a player zip across the screen will just be determined by a bunch of phases of cyclic phenomena: for instance your client renders every 33.33ms (for 30FPS) and the server says he's at position A, then the server says he's at position B which is in your view, but your game isn't rendering yet because it just finished rendering the previous frame. Then you get a packet saying he's at position C which is also off your screen and now finally the rendering happens, rendering another frame with the player off your screen. So you never saw him cross your screen. But another player sitting right behind you looking in the exact same direction will be on a different phase of his render loop: he may render right after receiving position B and so he will see the player zip across. This example ignores interpolation and stuff but it will still apply even then.
> Is there a whitelist of software that can be safely injected into CS:GO?
> No. Unfortunately, even benign applications are often a vector for cheats that hijack them in order to cheat in CS:GO. So in Trusted mode, all foreign software is blocked.
If you don't care about being authenticated with a "legit" session for online play, just strip SteamStub and apply a Steam emu with the necessary config. Those will obviously not care about wherever they are being launched from. I recommend the CODEX one if your target is not too recent.
Same, but R9 380X back in college. Bang per buck it seemed better than NVidia. But despite my distaste for NVidia back then, after that experience, I resolved to never get an AMD GPU again unless things drastically change.
Drivers would constantly break something, some games would run poorly and I would have to fiddle with driver versions to address this (often involving annoying version rollbacks), it would randomly start overheating for no reason, sometimes it would just crash the system, etc. Upgraded to 480 later, and the exact same story repeated.
You know what happened once I got an NVidia GPU years later (1080Ti)? I never had to think about the GPU ever again. I install a driver update occasionally, it “just werks”, and I would go on my merry way. Upgraded to a 3080 about half a year after it got released, and had the same story - it just works, and I never have to think or worry about it ever.
I would love to support AMD GPUs, but I cannot, in good conscience, buy their GPU again and waste time troubleshooting it and stress over every driver update.
On the flip side, AMD CPUs are amazing. Been with them since the original Ryzen release, upgraded once (from 1700 to 3900x), no issues whatsoever and am very happy with those. My next build will be an AMD Ryzen CPU as well, but it will have an NVidia GPU.
Funny since I agree about mobile radeons being like this where every update is a risky thing however I moved from Nvidia only (after my one ATi 9800 Pro) to AMD due to the drivers stuttering, breaking and finally making my 8800Gts 320 unusable in games because it wasnt the magic 640mb edition.
I've since had 5770, 6770 (same card but in fire), 290X, RX580X, and now 6750 without any issues.
iGPU stuff however has been awful but then again so was my Intel/Nvidia laptop having problems with iGPU fighting the dGPU.
I remember back in the day ATI Tray Tools also injected itself into processes and caused bans. I don't know what's with AMD and their complete incompetence in matters of software.
What does that have to do with incompetence, though? Incompetence would imply that the feature either didn't work or broke things, which it didn't. It triggered a very specific anti-cheat mechanisms of one specific and relatively new game.
The game still worked as intended, though.
It's not one game. And remember they enabled it on very few multiplayer games, yet all of them have reported issues. CoD just crashes when it detects antilag+, while apex actually handed out tons of bans
"What does that have to do with incompetence, though?"
They've made this same mistake before, didn't learn their lesson, and repeated the same mistake. That's pretty incompetent. Like Cisco-level incompetent.
Almost certainly there are quite a few different firmware and software engineers working there now, but I agree, and I recall that one thing AMD and ATI had in common even before the merger was being strong on hardware and weak on software.
Where's the hate for valve's anticheat being buggy and too aggressive and unable to identify benign code from cheating code?
I'd be happy to argue the semantics of the mistakes made by AMD, and I probably could be convinced they fucked up. But the ethics of guilty until proven innocent that comes with anticheat software, are so appalling that I'm angry valve isn't getting roasted for saying "we're not going to do anything until after AMD does.
IMO, if your accusations can "ruin lives" (even if it is just a gaming life) you don't get to make mistakes if you're going to ignore them until it's convenient to.
This isn't unique to anticheat, anti-virus and EDR aren't immune to detect a suspicious behavior that many malwares engage in as a false-positive, and flagged a normal process doing something unusual as malicious by mistake.
https://www.reddit.com/r/Amd/comments/177bdfg/amds_antilag_a...
You can also see this pretty telling forum thread:
https://answers.ea.com/t5/Technical-Issues/Account-Falsely-B...
AMD also openly said that they are patching game engine code, which is just bizarre. Not sure what the thought process was. Even if we assume they were aiming to be whitelisted (I'm not sure hooking into game engine code is even common, apparently it isn't), they have still pushed the updates before the whitelisting happened. What was the plan here?
There are open source projects attempting a similar approach to antilag+ ("patching" the DLLs at runtime) but they all seem to warn you about possible anticheat detection on multiplayer games. Again, this was patching the actual engine DLL, not the rendering or graphics related DLLs that drivers sometimes have to patch for specific games.
Hasn’t it been true for ages that GPU drivers contain fixes for a lot of GPU instructions from popular games that would otherwise be broken.
In that case, if they are used to fixing games already, it might not seem a big step from their side when they decided to also patch game code that runs on the CPU. It was unfortunate that they did not realise this would lead to triggering anti-cheat systems in games though.
But there is history of others altering program code too. For example Microsoft Windows included code specific to various pieces of software that would otherwise be broken. I wonder if that ever lead to trigger anti-cheat systems in any games.
Never mind anti-cheat systems. This is a huge boundary violation - like when Sony installed root kits. It's one thing to modify your own products behavior, but quite another to modify other software!
IMHO the people who OKed this have some issues.
Those are layers the application has to trust , and also has expectations may change implementations. They’re only accessible as an API.
In this case they were stepping into code they don’t control which is a huge violation of trust
https://abload.de/img/untitled-2022-06-05-2amey2.png
Anti lag is implementable at the driver level but Anti-lag+ requires code at the game loop level.
Upd: I did read explanation of Nvidia reflex (NVIDIA Reflex keeps the CPU perfectly in sync with the GPU to eliminate the render queue.) and still not sure that I understand. Why developers of game did not implemented this fix themselves?
I guess if NVIDIA does it, then it must help. How odd.
They claim to never make mistakes, but that's obviously bullshit since they make mistakes time and time again.
Just because you paid to access someone else's servers doesn't mean that you can do anything you want, with no way for the owner of the server to enforce any rules. It works like this with any kind of service on the internet. Games are not any different.
Anything else would seem to me to incentivize banning as many lifetime members as possible before significant consumer retaliation (e.g. maybe we'll just ban the lifetime members with low social clout), to reduce costs and maximize profits.
Overall though, when you make a Steam account, you agree to their terms of service, where you agree not to engage in "modification of content and services" in the context of multiplayer games. You also agree that the owners of the game the modification was made to can report you to Valve, that Valve can put that info on your profile, and that other games can decide to deny you online services for that. You still retain access to offline stuff and any online games which don't care about your VAC bans.
It sort of sucks in the sense that sometimes you might not know that something is modifying your game executable, thus getting you a ban, but otherwise a reasonable means of dealing with cheaters.
(They killed all community servers two weeks ago btw)
This is such a pedantic argument that misses the point and short circuits the entire discussion. I don't think there's a single reasonable person who mistakenly believes that they're buying the IP itself when they "buy" a game on Steam.
Of course it's "just" a license to play it, what's being questioned are the terms of those licenses, both from moral and legal perspective.
Most current EULAs boil down to: "We reserve the right to suspend your account and revoke access to the software you paid for for any reason, no refunds". To the best of my knowledge these EULAs haven't been tested in court so they shouldn't be taken at face value.
There's a lot of room to balance the rights of customers who should be granted the same rights they would enjoy when buying a physical product, and the practical needs of platforms which need to ensure a fair environment for other players.
Should cheaters be allowed to ruin the experience for other players? Obviously not.
Should platforms be allowed to permanently ban suspected cheaters without a fair and transparent appeals process and without offering refunds? I don't think so.
Do you also think it's okay if a car that you bought prevents you from driving it, but oh don't worry, it's okay because you're still allowed to open the doors?
unless games are written from scratch with security around preventing cheating first they are left with grasping for virtual straws at what is an exploit or not. in a lot of cases it's low level drivers that are suspect, game code changing in ram such as by a hook into the code, etc.
a few friends and I sat down and pondered what it would take to make a game like quake 2 robust enough and we gave up after deciding it'd be a ground up rewrite of both the client and server sides to only send specific data the client needs but no more so even wall hacks don't work and sending encrypted code to run in a VM inside the game from the server and if that memory is touched assume it's kick worthy but even then bit flips can happen etc. Could we trust video drivers from being tweaked to show wireframe renders and other things like that came up. Given this was like 1998 so I'm sure some of this has been implemented these days, I haven't kept a pulse on the tech.
I have read that even secure systems such as the PS4 have cheating going on with rooted systems so who even knows.
And admittedly their grandstanding of "VAC is always right, we never make mistakes and bans cannot and will not be reversed" hits a nerve, because that is just a blatant lie.
They actually banned players for using Windows 7, and now they're doing it again to AMD users. Both were obvious mistakes on their end.
Deleted Comment
Just go back to private servers, no matchmaking, no competitive ranking. And no I haven't played multiplayer since around the time Battlefield 1942 added punkbuster and vote kicking.
For example, Nvidia cards are great for cheaters because you can disable flashbangs and smoke grenades using the stock driver.
If we push it that way, any improvement of FPS due to hardware could even be considered unfair, and to ensure fairness, everybody could theoretically be limited to 30 FPS and xxHz refresh rates.
I don’t know how this design passed basic red teaming during the design phase not to mention QA.
A framerate limitation for "fairness" wouldn't make sense because you'd basically be arguing that it's unfair that someone saw one single extra frame that some player zipped across the screen and they were able to track them whereas they wouldn't without that extra frame.
But a game being networked naturally presents the same issue and it can't be solved (in an engine like source or unreal): player locations are sent to your client at a fixed sample rate. Whether you see a player zip across the screen will just be determined by a bunch of phases of cyclic phenomena: for instance your client renders every 33.33ms (for 30FPS) and the server says he's at position A, then the server says he's at position B which is in your view, but your game isn't rendering yet because it just finished rendering the previous frame. Then you get a packet saying he's at position C which is also off your screen and now finally the rendering happens, rendering another frame with the player off your screen. So you never saw him cross your screen. But another player sitting right behind you looking in the exact same direction will be on a different phase of his render loop: he may render right after receiving position B and so he will see the player zip across. This example ignores interpolation and stuff but it will still apply even then.
> No. Unfortunately, even benign applications are often a vector for cheats that hijack them in order to cheat in CS:GO. So in Trusted mode, all foreign software is blocked.
Source: https://help.steampowered.com/en/faqs/view/09A0-4879-4353-EF...
Deleted Comment
With all due respect, I'm struggling to parse this part of your comment.
With that said, I'm pretty sure your target is calling this API method:
https://partner.steamgames.com/doc/api/steam_api#SteamAPI_Re...
If you don't care about being authenticated with a "legit" session for online play, just strip SteamStub and apply a Steam emu with the necessary config. Those will obviously not care about wherever they are being launched from. I recommend the CODEX one if your target is not too recent.
Drivers would constantly break something, some games would run poorly and I would have to fiddle with driver versions to address this (often involving annoying version rollbacks), it would randomly start overheating for no reason, sometimes it would just crash the system, etc. Upgraded to 480 later, and the exact same story repeated.
You know what happened once I got an NVidia GPU years later (1080Ti)? I never had to think about the GPU ever again. I install a driver update occasionally, it “just werks”, and I would go on my merry way. Upgraded to a 3080 about half a year after it got released, and had the same story - it just works, and I never have to think or worry about it ever.
I would love to support AMD GPUs, but I cannot, in good conscience, buy their GPU again and waste time troubleshooting it and stress over every driver update.
On the flip side, AMD CPUs are amazing. Been with them since the original Ryzen release, upgraded once (from 1700 to 3900x), no issues whatsoever and am very happy with those. My next build will be an AMD Ryzen CPU as well, but it will have an NVidia GPU.
I've since had 5770, 6770 (same card but in fire), 290X, RX580X, and now 6750 without any issues.
iGPU stuff however has been awful but then again so was my Intel/Nvidia laptop having problems with iGPU fighting the dGPU.
They've made this same mistake before, didn't learn their lesson, and repeated the same mistake. That's pretty incompetent. Like Cisco-level incompetent.
I'd be happy to argue the semantics of the mistakes made by AMD, and I probably could be convinced they fucked up. But the ethics of guilty until proven innocent that comes with anticheat software, are so appalling that I'm angry valve isn't getting roasted for saying "we're not going to do anything until after AMD does.
IMO, if your accusations can "ruin lives" (even if it is just a gaming life) you don't get to make mistakes if you're going to ignore them until it's convenient to.