Technical solution to eliminate desync in single-player sessions

@qwave

Why the client should communicate to the server the damage dealt with an attack? If this is only function of the game-status (character skill, items, auras, etc...) and on the rng (which is the same both on the client and the server) this is redundant.

Did I miss something?
Roma timezone (Italy)
SkyCore, I have continually adapted the system in order to meet the needs of Rhys_GGG.

Ultimately, if Grinding Gear Games identifies flaws, I am going to compromise or come up with new solutions. This is how software evolves. And this is how problems like desync get fixed.

At this stage, Rhys_GGG and I are disputing amongst an extremely small subset of remaining issues. If these issues are tied up, then the proposal has become feasible and their team can discuss whether it's within the budget.
Last edited by qwave#5074 on Nov 20, 2013, 8:32:03 AM
"
Why the client should communicate to the server the damage dealt with an attack? If this is only function of the game-status (character skill, items, auras, etc...) and on the rng (which is the same both on the client and the server) this is redundant.

Did I miss something?



You are exactly right.

Yes, it is redundant. =)

And congrats on the first person to recognize this! This is one of the most important points in the entire proposal. I alluded to it in the same post saying:

"You will be surprised at how much data you actually do not even need to send because the server can implicitly fill in the blanks"
Last edited by qwave#5074 on Nov 20, 2013, 8:36:05 AM
It is actually very amusing encountering these "predicting" mistakes eventually leading to desyncs. I am regularly playing with my brother, and we are actively communicating via Skype while playing. We both use /oos macro at about every 6-10 seconds.

It is just freaking amazing, that 90+% of the time we both see the exact same game state before using /oos macro - let's say mob is in front of us, but after /oos it appears to be behind us.

It is really rare when one of us actually sees the other desync'ed. I can actually recall yesterday's event, when we were farming ledge merciless and I was using Weapon Throw and was unable to damage anyone (despite having Resolute Technique). After using /oos I saw i was hitting wall all the time, but my brother saw me hitting the wall for all that time already.
The other case was when he saw he was at least half a screen away from Volatile Stormblood but got hit nevertheless, but I saw he was actually in range all the time.

This makes me think that "Client Prediction" (if we call it like that) is very similar for all clients (like me and my brother both playing), but at the same time it looks like it completely differs from "Server Prediction"!

TLDR: Doesn't the root of the D problem lie in that client predicts game state in a totally different way that server does?

How comes we both see boss is here, but loot drops somewhere else? Couldn't it be because of some bug fix applied to server code somehow just didn't make it to the client code, or vice versa?

"
qwave wrote:
This technique was cutting-edge for awhile, but it has really become antique for action games like PoE.
I personally think it makes the most sense. Which should be easier to predict: the movement of a monster (which would be the client's job, what it is supposed to predict), or the movement of the player (which would be the server's job, if asked to predict it)? The movement of the monster is something which the client should be able to predict reliably.

Unfortunately, this is often not the case.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
"
Which should be easier to predict: the movement of a monster (which would be the client's job, what it is supposed to predict), or the movement of the player (which would be the server's job, if asked to predict it)? The movement of the monster is something which the client should be able to predict reliably.

Unfortunately, this is often not the case.


The client shouldn't have to predict, the client should KNOW the location of monsters because it should be able to simulate their paths in the same way the server does. Monsters should never get 'out of sync' because the client should be smart enough to simulate their AI without the server's help.
"
Rhys wrote:
"
Yimi wrote:
Why does desync seem so prevalent in Path of Exile while it seems to be much less of an issue in Diablo 3?

Technically off-topic, so I'll reply in spoiler tags...
Spoiler
Diablo 3 has several tricks that alleviate desync (last I checked):
-You can't miss with melee attacks
-You can't move out of the way of melee attacks

These things allow the client to more reliably predict the server calculations, but make combat more shallow.

They also don't really have narrow corridors or doorways to the extent we do, which also helps a lot, though you lose the feeling of claustrophobia such level features create.

In other words, there are pro's and con's.

Diablo 3's combat feels smoother, I think, for three reasons:
1) Cut combat animations
Many combat animations (weapon swings, attacks, spells) don't naturally blend from the idle/run animations. They deliberately *cut* to a keyframe in a dramatic pose, which then flows into the rest of the attack. Path of Exile's combat animations transition smoothly from idle to attack to idle.

2) Skipping utility animations
Some animations only play if the player is standing still. For example, casting buffs or curses. If the player is running or attack at the time, the spell goes off with NO animation at all. It doesn't interrupt the existing combat. In contrast, in Path of Exile, you have to stop moving and wait while you Enduring Cry/Curse/etc.

3) Input queuing
Diablo 3 has a deceptively clever input queuing system. Suppose you are spamming right-click a lot to keep doing one action, then press a key to do another, then go back to spamming right-click. You can't just queue every key-press, otherwise you'd be stuck performing the right-click action a million times. But even if that solitary key-press was made at a "bad time" i.e. during another action (at a time when you couldn't immediately do anything new) you do want to queue up this new action once before going back the spam. In Path of Exile, this extra action frequently gets lost in the spam, making you feel like the skill didn't work for some reason.


I know this is off topic, but the first thing I noticed when I logged in to poe back in CB, was this. How combat felt so much different from D3. In a bad way. I still think PoE is a vastly superior game, but dat combat smoothness tho...

There were quite a few of us who came from D3 to PoE CB and noticed this, but I never got any good answers to why it felt like this.

Number 3 is very obvious in PoE though and I think you guys should really consider doing something here.

Anyway, again, sorry for off topic, I just had a total "ahaaaaa, noow I get it.."-moment when I read that spoiler. I hope this doesn't derail the thread, I should maybe add a disclaimer: I don't want to talk about this topic here, I'll make another thread if I do. Just wanted to thank Rhys for his explanation.
"
qwave wrote:
SkyCore, I have continually adapted the system in order to meet the needs of Rhys_GGG.

Ultimately, if Grinding Gear Games identifies flaws, I am going to compromise or come up with new solutions. This is how software evolves. And this is how problems like desync get fixed.

At this stage, Rhys_GGG and I are disputing amongst an extremely small subset of remaining issues. If these issues are tied up, then the proposal has become feasible and their team can discuss whether it's within the budget.


Note how the tone of voice now sounds like how he is one of the developers as well. This just proves my previous point.
Heya Sachiru, did you read the 3 steps? ;-)
"
Daefecator wrote:
It is actually very amusing encountering these "predicting" mistakes eventually leading to desyncs. I am regularly playing with my brother, and we are actively communicating via Skype while playing. We both use /oos macro at about every 6-10 seconds.

It is just freaking amazing, that 90+% of the time we both see the exact same game state before using /oos macro - let's say mob is in front of us, but after /oos it appears to be behind us.

It is really rare when one of us actually sees the other desync'ed. I can actually recall yesterday's event, when we were farming ledge merciless and I was using Weapon Throw and was unable to damage anyone (despite having Resolute Technique). After using /oos I saw i was hitting wall all the time, but my brother saw me hitting the wall for all that time already.
The other case was when he saw he was at least half a screen away from Volatile Stormblood but got hit nevertheless, but I saw he was actually in range all the time.

This makes me think that "Client Prediction" (if we call it like that) is very similar for all clients (like me and my brother both playing), but at the same time it looks like it completely differs from "Server Prediction"!

TLDR: Doesn't the root of the D problem lie in that client predicts game state in a totally different way that server does?

How comes we both see boss is here, but loot drops somewhere else? Couldn't it be because of some bug fix applied to server code somehow just didn't make it to the client code, or vice versa?
This makes a lot of sense when you really think about it. The client is a computer program, after all; given the same inputs, the exact same calculations are made on all clients. Since you were partying together and for the most part in very similar situations (very similar inputs), wouldn't it necessarily follow that most of the time failed predictions would exist on both machines simultaneously? To be honest, I'm a little surprised there was any variance whatsoever.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.

Report Forum Post

Report Account:

Report Type

Additional Info