Lag Compensation - Server-Side Timeline Shifting

Issue Description (Required):

I’d like to propose an investigation into implementing server-side timeline shifting to account for player latency in our game. This system would aim to create a more consistent and fair player experience, especially in reactive gameplay scenarios.

i want to share 2 separate clips of the same scene from someone on 250 ping compared to 67 ping

this is my view on 250 ping (i am an Australian playing on American west servers right now)

and the same view from from the perspective of 67 ping

The Problem

Currently, players with higher latency are at a disadvantage when reacting to sudden threats (e.g., dodging a Pox Hound, avoiding a Trapper’s net). This is because the server processes actions in real-time, while high-latency players see delayed events and their responses arrive late.

Simple Example: The Pox Hound

Imagine a Pox Hound jumping at a player:

  • Player A (0ms ping): Sees the jump immediately, reacts in time, and dodges successfully.

  • Player B (250ms ping): Sees the jump 250ms late, reacts with the same timing as Player A, but the server processes their dodge too late—resulting in a hit.

Players often adjust by anticipating threats, but this is a workaround, not a solution—especially for unexpected audio cues or unseen enemies.

Proposed Solution: Server-Side Timeline Shifting

The idea is for the server to maintain per-player timelines that shift based on each player’s latency. Key actions (like specialist enemy attacks) would be evaluated relative to when each player actually saw them, not just when they occurred on the server.

How it could work:

  • The server tracks each player’s latency (e.g., 0ms, 250ms, 1000ms).

  • For latency-sensitive events (specialist attacks), the server shifts the reaction window backward by the player’s latency.

  • In the hound example:

    • Player B’s dodge window would be shifted by 5 ticks (250ms).

    • If Player B dodges 5 ticks late (from the server’s perspective), it’s still counted as a success because, for them, it was on time.

Technical Considerations

  1. Implementation Approaches:

    • Quantum Simulation: Simulating separate “shadow” versions of specialists for each player, each on a timeline offset by the player’s latency.

    • Buffered Processing: Keeping a buffer of up to 1000ms of game state to reevaluate collisions and inputs retroactively for high-latency players.

  2. Scope:

    • This would apply only to specialist enemies (hounds, Trappers, etc.) and key interactive objects (e.g., terminals with timing-based inputs).

    • It would remain fully server-authoritative to prevent cheating.

  3. Challenges:

    • Increased server load (memory and processing).

    • Potential engine-level changes.

    • Complexity in synchronizing multiple timelines.

Why Investigate This?

  • Fairness: Players with higher latency wouldn’t be unfairly penalized.

  • Consistency: Reacting to what you see (or hear) would work reliably, regardless of ping.

  • Innovation: This could set a new standard for PVE games, especially for titles like Darktide 2.

I understand this is not a simple feature and may require significant rework. However, I believe it’s worth exploring—even as a forward-looking concept for future projects.

Platform (Required):

PC - Steam

4 Likes

just thought i would see if any games do anything similar to my suggestion
a handful of games have already implemented similar features, they call it “server side rewind”

I’m just running some thought experiments through my head because there are some aspects of server side rollback that might be weird to implement

lets say 2 players are standing still, one player has 0ms ping, and one player has 2000 ms ping as a far out example.
a pox buster runs up to the players, and only the 2000ms ping player pushes the pox buster
at this point is is not just a simple question of “did the laggy player dodge the net or the dog or whatever”
theoretically at this point, the pox buster would jump, explode, damaging the 0ms player at the time of it happening

but the 2000ms player sees the pox buster running up to them 2 seconds later, pushes them away, taking no damage, and preventing the 0ms ping player from taking damage.

now the question is. how does the server resolve this?

the server would need to either delay the explosion of the pox buster by 2 seconds for the low ping player, which is horrible. or the low ping player gets yeeted and takes damage even tho they shouldn’t have, or the low ping player gets rubber banded to where they were/ there health is given back. the issue has only moved and is not fully resolved.

for high ping scenarios i don’t think this is a viable solution, and even on 250 300 whatever ping, there would likely still be some visual discrepancy for low ping players, when a high ping player interacts with different enemies. but. is that better for the sake of fairness? I’m not sure

Most PvE games favour the player anyways when it comes to latency I have no idea why this game doesn’t, it’s most notable when you shove or dodge something and it still hits you, or trying to swap weapons (which for some goddamn reason is server sided??).

Please favour the player when it comes to latency, I don’t care if it may open up cases for glitches or other stuff it’s not like it’s a PvP game, I’d rather have a good time then be screwed over by the server.

2 Likes

yeah, the only reason that i can see, for why they don’t want to have a client side authoritative approach would be to prevent players from cheating, if your client decides “when you dodged an enemy” then you could in theory get a mod that just make you “always dodge the enemy”

which is why i am tying to solve there issue with a server side approach.
at the end of the day i don’t think anything is “perfect” you would need 0 ms ping to everywhere on earth for that.

but this game really really, needs to respect the players actions more

2 Likes

You made a great example. Lag resolution for multiplayer games is one of those “no perfect solution” problems. Sadly, playing on high ping is just gonna suck one way or another.

Darktide has lag comp

do you have a source for this information?
because i have 938 hours and video evidence that shows otherwise.
if they do have “some kind” of lag compensation, it is absolute garbage.

the timing on the terminals is different. (the one with a bunch of symbols, where you need to click the right symbol as the thing moves back and fourth)
the timing for dodging trappers is different.
the timing for pox busters is different.
the timing for dogs actually feels fine for some reason.
the timing on snipers is different.
the timing for mutants is different. but still feels fine, some enemies are more lenient then others.
hell my melee animations wig out on high ping? animations?? why??
ranged attacks feel fine, i wouldn’t be surprised if they use lag comp for ranged attacks.
the timing on crushers/ maulers is different.

i am from Australia, i play on Australian and US servers, going from 60ms ping to 250 ms ping, i can FEEL and SEE the difference when i play.

2000 hours playing on ping, lag comp exists in darktide, if it didn’t the game would be more predictable. Lag comp effects your dodges not how your ping to the server effects your experience.

no offense but, i feel like you dont know what you are talking about.
lag compensation makes the game MORE predictable not less predictable

simple put, lag compensation will account for your latency to the server in regards to dodge inputs, input actions etc etc

my videos show that lag compensation does not exist when i went to push that pox buster it should have fell down the stairs/ teleports on the lower ping players screen to where i would of pushed it
instead in reality what happens is that, my push happens LATE the pox buster keeps running past me, jumps, gets pushes once, on my screen i can see the pox buster falling “up the stairs” because it is being pushed but the server is telling my client that “the pox buster is here” i dodge back, push it again, dodge back out of it’s freaking range ENTIRELY behind the other payer, then the thing explodes and i go flying.

if lag compensation existed and it was working that would not have happened, if lag compensation existed the pox buster should of teleported for the low ping player based on the positoin of my first push, rather then acting strange AF for me the player on 250 ping

on the view from the low ping player you can see clearly what happened, pox buster ran past my, jumped, i pushed late, i dodged back pushed again, dodged back but the thing exploded while i was still in range.

for me to have pushed that pox buster better, i would of had to push early, when the pox buster is “not even in push distance” i would of had to anticipate that the pox buster is actually 1-2 meters in front of where i see it. that is the issue that is typical “no lag compensation server side authoritative behavour” so EITHER there lag compensation is so bad that they might as well not even have it, there lag compensation does not apply or work in all situations, OR they just do not have lag compensation

once again, WHERE are you getting your information from? you might as well just be trolling coming in here, and saying random stuff with no evidence to back it up. there are COUNTLESS and i mean COUNTLESS videos online showing bad interactions with people on higher ping due to server side authoritative game play.

look at this post WATCH the videos. the servers are TRASH you can’t sit there and tell me otherwise unless you give me some damn evidence.

Specialists do not function on high ping, they also do not function on 0ms either.

I respectfully disagree.

https://www.nexusmods.com/warhammer40kdarktide/mods/493 someone made a mod to fix this, it’s a very clear difference

so if they have lag compensation and it is just trash? it sounds like they are just using a flat static value “guessing” at how much lag the player has, or if they are grabbing the users ping, whatever lag compensation they have implemented is just absolute garbage, done incorrectly, or misconfiguration?

also the existence of this mod does not prove that lag compensation is a thing

just because they say “some attacks are nearly unavoidable” does not necessarily mean that lag compensation exists or not, it could just be that “they are not used to playing with perfect ping”

look idk if lag compensation exits or not, and i honestly could not care less if it does or does not exist. it is quite literally, beside the entire point.

servers = bad
any lag compensation IF ANY AT ALL = absolute garbage because i feels like i am not even playing with lag compensation

bad lag compensation = no lag compensation
to me, the player, when i play on high ping, i see things happen that MAKE NO SENSE, i switch weapons to melee and push a pox buster, the game doesn’t register it, and i shoot the pox buster in the head instead because the server decided “actually you never pressed that 1 button to equip melee” THAT is the point, they need to implement OR improve there server side lag compensation OR make this game more client authoritative (which they probably wont do due to them being afraid of some people cheating is a freaking PVE game or some BS like that)

No, your connection is just too poor to be helped by it. Are you expecting to be able to roll back big chunks of time for everyone else because of your latency? All the players with normal pings see you get netted, then magically 500 ms later you’re not cause really you dodged? Poxburster explodes cause no one pushed it and it killed one and threw the other players all over the place, whoops rewind, actually the push was successful. How is this supposed to even work having major continuity errors all over the place.

Sorry, no. It is not possible to provide good lag compensation for a quarter second of latency. Too much can happen in 250 ms in a fast paced game and allowing one player to rewrite what every other player experienced is not OK. 250 ms of latency is gonna feel bad in a fast paced game.

yes “that” would be a more fair game in my opinion.

and yes i get it, if players have EXTREMELY high ping, there could be visual issues. there NEEDS to be a limit, i 100% agree if a pox buster explodes, yeets everyone but “actually it was pushed but were going to unwind that” if “that much time has passed” the player is clearly running on ping that is SO HIGH that lag compensation can’t help them.
but even in that scenario i would STILL argue that, getting your health back after a pox buster hits you. is BETTER then the pox buster ACTUALLY hitting you and your team DUE TO high ping.

like seriously, if you are a low ping player, would you prefer to
A. Die to a pox buster when a high ping player gets FED over while trying to push it
or
B. have some visual weirdness, maybe your health comes back, maybe you get rubber banded a little bit from time to time

(keep in mind visual weirdness would only happen when a high ping player does “something” that changes what happens to “you” they killed a crusher before it one shot you (saving you from the damage it would have dealt), pushing away a pox buster before it exploded yeeting you across the map (yeah you would likely rubber banded back)

you COULD mitigate the rubber banding issue by adding a delay before enemy actions take effect, to allow lag compensation to resolve, for example if you have a player with 250 ping, there could be a 250 delay between “the crusher hitting you” and “you taking damage from it” or “the box buster exploding” and “you going flying across the map”

at that point it would be up for debate/ testing to see what is better from a low ping perspective. but it would help resolve “your main concern” with high ping players causing rubber banding and visual weirdness for low ping players.
i fully understand that, the dev’s may want to limit how much lag compensation can take effect, and honestly. having a “cap” or even simply make the effect a constant for some enemies could actually be better then anything dynamic since it would be a constant.

example. if pox busters “always” had a 500ms delay between exploding server side, and that velocity/ damage being applied. that would be a “constant” that you would get used to. but it would allow players with up to 500ms to have a chance to push that pox buster before the damage and velocity is applied to everyone else. no rubber banding, no visual weirdness, aside from the fact that you now consistently take damage and get thrown back half a second later.

players over 500 ms would still see a benefit, if you have 600 ms ping it would “feel like” you are playing with 100 ms ping when pushing a pox buster. which is much better IMO

and for certain things like, using a terminal, or dodging a trapper, dogs, getting hit by a sniper, realistically, there is no limit on “how much lag comp you can give them” different enemies could have more or less lag comp based on “how much they could effect other players around you”

lets take a trapper for example, and a 2000ms ping player
simply put, all other clients could know that “this player is playing with 2000ms ping” that means that even if visually on there screen the high ping player gets hit by the net, it would simply not show them getting trapped until 2000ms later. there is no point showing them “getting trapped and then un trapped randomly” this works because the interaction with a trapper only effects a single player. so lag comp could be as high as you want it.

if the net from the trapper has the potential to travel past them, and hit a second player, this sort of brakes the whole lag comp thing because now other players are effected, this is why you would simply ensure that a trapper can only catch the player it is targeting in the first place, you design and change current enemy mechanics to work well with lag compensation to begin with to avoid situations where “one enemy can effect multiple players at the same time”

snipers, plasma gunners, trappers, dogs, can all be coded to “only be able to hit the enemy they are targeting” if you are hiding behind a different player, and the sniper is still targeting you. at that point i would say “the sniper can only shoot you, but your team mate blocks the shot” since this could brake lag compensation, simply make it so that sniper can not hurt that team mate you are hiding behind, since it is not targeting the team mate. allowing you to use them as “a human wall” while keeping the player and sniper interaction in tact for lag compensation to work it’s magic.

I’d be happy if it was handled the same as in VT2 but clients also being able to dictate their defensive mechanics such as movement, block & dodge. Even better if clients could dictate their other mechanics like stagger & hit timing but that’ll probably not happen cause they’d rather prevent cheating than create an online game that feels good to play.

I’ll take anything to improve this game’s awful netcode that cancels your inputs. Genuinely terrible that you need mods to have an almost acceptable game-feel.

1 Like

The input canceling is really annoying and needs a fix. I haven’t noticed it as an issue for me for a while though, probably because I use those mods. I used to have it all the time though. I have a vid somewhere where as an ogryn I pop my charge, boost forward a few steps, then I stop and the ult gets refunded. Bonkers.

As I recall from my VT2 days… if you were hosting it felt great. If you had a really good host, it felt better than DT does, but I remember the average host being as bad or worse than DT feels today. In general at least. I don’t remember having the same issues with ult refunding that we have in DT these days.

No because clients in VT2 still dictate all of their controls and their hit registration. Ping just affects how long it takes for their attacks/abilities to register and your defensive mechanics. Being able to press a button is 100% reliable regardless of ping in VT2 unlike DT.

1 Like

At the detriment of everyone else with a decent connection.

Player 1: 50 ms of latency
Player 2: 500 ms of latency.

0 ms Server shoots net at player 2. (The net will take 1000 ms to hit)
50ms Player 1 sees net shot.
500 ms Player 2 sees net shot.
1000 ms Server calculates net hits player 2.
1050 ms Player 1 sees player 2 get netted.
1250 ms Player 2 dodges the net.
1750 ms Server is told by Player 2 that no really it dodged.
1800 ms Player 1 sees Player 2 no longer netted.