Whats different to like every PC game since 19something? I mean thats a core component of most anti cheat tools and copy protections? (And - spoiler alert - they never really work)
Whats different to like every PC game since 19something? I mean thats a core component of most anti cheat tools and copy protections? (And - spoiler alert - they never really work)
Discord, teamspeak or ventrilo 'who is talking' overlay: ban
FPS counter from fraps: ban
GPU temp monitor: ban
Webcam view for streaming: ban
Eventually they reverted those bans. People use them on a rather massive scale, and they are very normal. No-one expects them to be banned. Moreover, they gave no warning whatsoever. This means a lot of truly innocent people got caught in the ban.
>Bungie is preventing applications from injecting code into the game
if the game is preventing overlays from getting injected, but you're bypassing that protection to inject your """legitimate""" overlays, it serves you right to get banned.
The "serves you right" part was preceded by "... but you're bypassing that protection ..."
Either they actually do basically rootkit the machine and break functionality, which is a huge "fuck you" to everyone and may actually require people manually enter exceptions in AV software, or they settle on the non-functional but "scary sounding" protections every other game uses.
This is a fight that has been long since over, not that people don't still try. I spent a lot of time working around anti-cheats in various games over a decade ago. PB was a fun one, C-D thought it was clever, there were jokes like CMN's "anti-cheat", and other games that had things like nProtect GG. Some went so far as to actually use packers, hilariously some used UPX while others used things like Themida. There was one of these things that actually injected a rootkit into every running process (and thus required administrative permission) to disallow you from killing the game's process or even accessing the memory of it. Of course this was hilarious when the game would hang as you expect with buggy software, and the only way to actually kill the process was to restart or do it from ring0. I thought that was a pretty fucked up thing. It was trivial to bypass though, and I forget the specifics, but you could actually start the game or anti-cheat with the main thread frozen and inject whatever code you wanted that then had privileged access before resuming it. I thought when I did that "I'm 15 years old and in 10 minutes I've bypassed what some team probably took months to build." I did get a bit frustrated with my lack of knowledge when much more capable packers were used, but some people did nothing but break these things (and would break new versions in minutes). It was pretty fun to debug, work around all the protections, find the real code, then reconstruct the executable so it would run without the protections, but handling VMs needed programmatic debugging which was a bit more than I was capable of dealing with back then.
As expected we eventually were gifted ring0 anti-cheats (though most remain ring3), so cheats went there too, and when I stopped caring as much about that scene, some really clever hooking methods were being devised as well as hypervisor based cheats. There's no winning this fight for the anti-cheats, so the real solution is to detect whatever behavior you don't want on the server, where they have no access. The client-side anti-cheat is more of a deterrent, and it turns out nobody really tries to make cheats very hard to detect in this manner, most players can visibly tell almost instantly if someone is cheating just by observing them briefly. Not to say that ring0 cheats were hard to detect, I made a proof of concept in about 20 minutes that detected all but 1 of the existing public ring0 cheats for CS at the time -- they all modified a specific struct in memory, and that modification was present even in ring3 cheats, so I generally wondered what those anti-cheat developers were doing most of the time.
There are still types of cheats that remain possible, like aimbots. Nothing can be done about that.
It's peer2peer, there is no server. There's a server for exp, achievements, and loot, but for actual combat and player positions it's all p2p. Your client know the position of everyone else in the PVP arena. Arguably worse is it also knows the IP of everyone else in the PVP arena, so you don't even need to figure out how to crack the game just open wireshark and fire up your DOS attack of choice.
In reverse, a dedicated server doesn’t mean the clients have zero or limited knowledge. A naive dedicated server can simply send all the positions of every player every frame to each of the clients.
Another point is that in a dedicated server environmenr the server has a reliable connection, with semi-predictable performance characteristics, whereas if you’re using a PvP model, you’re at the mercy of the the host clients connection, and their machine performance. On a console the performance isn’t as big a deal but on a PC, the host could be mining bitcoin at the same time, or just running on a potato.
That's still a client/server model rather than a peer to peer model. A major problem with that model regardless of platform is that it's very disruptive when a player drops, as you have a 1/8 chance of losing your host. This is also not D2's model.
> In reverse, a dedicated server doesn’t mean the clients have zero or limited knowledge. A naive dedicated server can simply send all the positions of every player every frame to each of the clients.
Of course not, but it's possible for a dedicated server to restrict the information it sends. It's not really possible for peer to peer to do the same.
I don't think you parsed the conversation correctly.
Unfortunately, in game development community, the term 'peer 2 peer' doesn't in practice have precise meaning, and is applied even where there is some dedicated "host", which may be simply not as authoritative as with traditional client-server model. I have long ago gave up correcting people when they used these words 'incorrectly'.