Add client/server time synchronization (movement desync correction + time-skip/desync anti-cheat)#388
Open
Krilliac wants to merge 2 commits into
Open
Add client/server time synchronization (movement desync correction + time-skip/desync anti-cheat)#388Krilliac wants to merge 2 commits into
Krilliac wants to merge 2 commits into
Conversation
…ection + enforcement) Introduces a config-gated, server-side anti-cheat / movement-validation framework. OFF by default (AntiCheat.Enable = 0) — fully inert until enabled. Core pieces: - AntiCheatMgr: central scoring manager. Detectors only observe and score via a single RecordViolation() ingress; the manager owns ALL enforcement. Score decays over time and escalates through capped actions (log -> GM alert -> rubberband to last validated position -> kick), with an optional account-level autoban accumulator (escalating ban durations, slow hourly decay). - MovementAnticheat: per-player validator running cheap, event-driven detectors on each movement packet — fly/flag-spoof (water-walk/hover/slow-fall/transport/ swim, aura- or grant-aware), teleport/blink, speed, acceleration gate, vertical climb, root/stun-break, opcode-legality, no-clip (VMap LoS), jump (infinite/ mid-air), fall-damage suppression, packet burst, client-timestamp regression, bot-movement heuristic, and spell-cast timing (GCD bypass + cast spam). - PhysicsValidator: side-effect-free terrain-plausibility stage (float-above / below-surface), invoked only on suspicion to stay off the hot path. Integration: movement validation in the movement opcode handler; spell-injection, item-in-trade, GO-use and NPC interaction-distance hooks; cast-timing hook; server-granted movement flags recorded in the Player Set* setters so the flag-spoof detectors don't fire on legit grants; a rolling latency EWMA fed from CMSG_PING for latency-aware tolerances. GM commands: .anticheat status / report / reload / warn / jail / unjail / delete. Violations persist to character_anticheat_violation; account autoban state to account_anticheat. Time-sync, the spoof/test GM tooling, and the violation-marker visualizer are follow-ups that build additively on this core. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ctor, move-time-skip handling) Builds additively on the anti-cheat core. Adds a vanilla-compatible time-sync layer; fully inert until TimeSync.Enable=1 (the core latency EWMA stays always-on so movement detectors keep their latency-aware tolerances either way). - Per-session client<->server clock-offset service in MovementAnticheat (smoothed serverMs - clientTime; its drift is the desync signal). - DESYNC detection feeding the core scorer: per-packet client/server elapsed-time divergence (incl. zero-client-time-while-moving) + a latency-spike check raised on the network thread and recorded on the safe world thread. - CMSG_MOVE_TIME_SKIPPED handling: relays the skip to nearby observers (kills observer-side warp after a client clock jump), re-baselines the clock service + graces the desync detector for the legit case, and scores oversized/spammed/ accumulated skips as a time-based movement-masking vector. - Move-ack timestamp validation (force-speed / water-walk acks): flags client timestamp regression and folds the sample into the clock-offset service. - Optional movement-timestamp correction (default OFF) normalising the relayed timestamp to the server clock so observers interpolate on one timebase. - Optional desync auto-resync (default OFF): rubberbands a sustained-desync client to its authoritative position (the only vanilla resync lever), cooldown-limited. - GM commands: .timesync status / config / set / resync / skip. Full TimeSync.* config block in mangosd.conf.dist.in; all OFF by default. The spoof/test GM tooling (.timesync desync, SimulateCheat) and the violation marker visualizer remain separate follow-ups and are intentionally not included. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Not up to standards ⛔🔴 Issues
|
| Category | Results |
|---|---|
| Compatibility | 2 high |
🟢 Metrics 348 complexity · 4 duplication
Metric Results Complexity 348 Duplication 4
NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.
Contributor
Author
|
builds on #387 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This change is