Cheating in Rated

Application layer for the stuff we’re discussing

Are you seriously suggesting state rewind would be even possible on a complex MMORPG such as WoW with its many concurrent players, buffs, projectiles, NPCs and gigallions interactions to handle?

I never witnessed state rewind ever for the years I’ve played this game so no it doesn’t exist, the closest thing I have seen you could somewhat call a “rewind” is when character position is enforced by the server on badly lagging players.

Yes? Cast progress and remaining buff duration are linear functions of time, and there are no AoE interrupt (actual, not pseudo) mechanics in the game I’m aware of. What else do you need to check?

Perfect Juking (always making the opponent miss their interrupt) is virtually impossible to achieve with 100% reliability, even with sophisticated bots or scripts. Factors like human opponent reactions, timing variances, server latency, and unpredictable behavior make it highly difficult to guarantee that a bot will never fail.

This is how I know chat gpt has never encountered a real arena degen

1 Like

Why would there be a need for cast rewind in the first place?

Remember, the WoW server doesn’t trust the client, it’s a fact stated many times by Blizzard engineers and it’s pretty much a standard for client-server game architecture, otherwise you get amateurish stupid sh*t like New World i-frames.

Your message either arrives first to the server, or the opponent’s.
The server doesn’t care when your client sent the message.

1 Like

I agree that it certainly isn’t used for everything just based on the delay you feel when starting a cast. The common thing it’s used for in other games is hit registration, which is pretty similar to the notion of whether you landed a kick.

Wow already heavily trusts the client with movement. Just because you can modify a sent packet doesn’t mean the server is completely defenseless and can’t implement any sanity checks.

Wow is well known for its combat fluidity compared to other major MMOs, so I wouldn’t be surprised if there are some intentional interactions where standard techniques for combat fluidity under latency are used. It’s documented already by riot that rewind is used in valorant, but of course valorant is a more controlled environment than mmo and has stricter anticheat.

Also, just because someone can cheat by modifying packets doesn’t mean that cheat is undetectable. If you’re doing weird stuff you’re probably going to have a different behavior/packet distribution than the rest of the playerbase

The server may accept a kick on a slightly out of range target that was “there” a couple ticks ago, that’s the extent of “lag compensation” that may apply here and it is similar to the “lag compensation” done in FPS games to answer the question “does this shot hit the target or not?”. And in WoW’s case it still doesn’t rely on client packet timestamps.

The sequence of events relative to time however is well defined and no lag compensation happens there. If stop cast arrives later in the server message mailbox than the kick, then the juking fails.

1 Like

Guys guys top players are calling it out. I see none of you watch wow pvp vidyas

Can you link those videos? Are they in the room with us now?

1 Like

I see cheat videos.
:ghost:

Its really just arena123 @ macros. You can spam them if the rogues in stealth and insta cast as soon as he pops every time.

We saw rogue mirror metas evolve on live TBCC as a result of introducing the @arena macro fuction that doesnt exist normally on 2.4.3

It’s all true turn on CNN :dracthyr_uwahh_animated:

Finally had a bit of time to sit down and look at some implementations from an open source private server.

They use a Kalman-filter-like technique pretty similar to geographic localization to maintain a delta between server and client clocks, then use this in movement interpolation.

Synchronization handler:
https://github.com/azerothcore/azerothcore-wotlk/blob/42879621e4365eb730238515ecd795f6ce510074/src/server/game/Handlers/MovementHandler.cpp#L884,

Movement timestamp changing:
https://github.com/azerothcore/azerothcore-wotlk/blob/42879621e4365eb730238515ecd795f6ce510074/src/server/game/Handlers/MovementHandler.cpp#L546

Since they then mutate some state and send this mutated state as a packet to the central notification system, it’s not obvious what all the downstream effects of this are. For example, the movement opcode handler is called when handling client spell flags.

They do use client timestamps here. If you’re trying to use wireshark or something and just reading every packet you’re probably not going to see it among everything else because they send a specific time sync packet every 10 seconds to correct the delta between server and client time. It’s based on this simple algo from 2000 https://web.archive.org/web/20180430214420/http://www.mine-control.com/zack/timesync/timesync.html.

I did say that the client handles movement and so the server may use client timestamp for interpolation and verification (but not for spells).

As you said, this is code for private server and the interesting part would be if they have implemented a server side anticheat that verifies client movement patterns.

Pretty sure the most effective anti cheat is those new exploding mining nodes now

2 Likes

Yes, a few lines above where I linked in the movement code they have a skeleton callback for an anticheat script. There’s a separate anticheat module which actually defines the script https://github.com/azerothcore/mod-anticheat/blob/master/src/AnticheatMgr.cpp.