Client-server Action Synchronisation

What could help is a small icon in the corner of the screen that change colour and let you know the state of the synchronisation : you could be more carefull when you know the speed of the connection is slower than usual.
"
drmamba1 wrote:
What could help is a small icon in the corner of the screen that change colour and let you know the state of the synchronisation : you could be more carefull when you know the speed of the connection is slower than usual.


Well... if the client or server knew the state of sync, I think desync would be much less of a problem.

One thing I've noticed is that when wearing
, the consecrated effect seems to display where your character is serverside, not clientside. I'm not sure why a similar logic couldn't be used to detect and automatically resync. Wouldn't need graphics. Just an invisible 'hotspot' where the server recognizes your characters position. The client would see this hotspot, and if it's not within a certain tolerance of center of screen or character position, it requests a state sync. If there's something like this already, it's not very reliable, but I suspect there isn't, or I wouldn't see consecrated effects at the edge of my screen without an automatic resync.
No. Calm down. Learn to enjoy losing.
Could it be made less overwhelming if you animated the changes? If objects are at set A, animate them to move to set B over .5 seconds, or similar? You could test both a linear and an accelerating/decelerating animation on the path, where the path of this animation could cheat physics (since it isn't real anyway, but getting us to a real state.) Lastly, you could test varying the animation time.

I'm wondering if an animated rearranging might be less in your face than an instant snap in place.

It would have to be tweaked and tested, but if it helped, you might be able to get away with resyncing more while keeping it feeling more natural.

The downside is that you may be delaying the restoration of the natural state; however, if you can get away with resyncing more often you may not get as out of sync.


Effectively this would be like a rubber band, from where you thought was reality, to what the server decided was so.
Last edited by DragonsProphecy on Jun 25, 2014, 5:07:36 PM
in a couple years some one would maybe ask me: "i played poe, did you ever played poe?"
my answer would be for sure: "yes i did, can you remeber something else then perma desync in this game, i cant...."
it is the biggest difference to the other games of this ganre, not the great idea for the skill three, not the great ambince and not even the fact the game is free to play, no... other games also have some unique properties but no desync..
Check our recruitment thread if curious

Twitch: PoE_Vincam
Last edited by baumpaul on Jun 28, 2014, 8:26:11 PM
The easiest thing to fix (imo) would be for the client and the server to actually know what they know and tell each other.

I have done a lot of tests, to see if "desync" happens becuase of network problem or becuase of protocol problems, and I did not observe a single occurance of "desync" where I could see any indication of a network problem (missing packets, retransmits etc).

So to me this looks very much like a protocol problem.

An example:
I am targeting a mob on the screen and attack it. However the mob is not there in reality, and the mob does not take damage. After some time, 5-10-20 seconds, the mob teleports away.

This should be very easy to fix, the client KNOWS what it knows - In this case it KNOWS that I was targeting a particular mob in some particular location, it also KNOWS exactly where I am.

So the client should send: Player in location (x,y) attacked mob XXX in location (x,y) and maybe also the timestamp.

When this information hits the server, the server should know exactly what it knows, and if this somehow is NOT what the client knows, then it should correct the client:
- Player positon is not correct -> send correction NOW
- Mob position is not correct -> send correction NOW

Still sane exile?
"
Skizo wrote:
The easiest thing to fix (imo) would be for the client and the server to actually know what they know and tell each other.

...

When this information hits the server, the server should know exactly what it knows, and if this somehow is NOT what the client knows, then it should correct the client:
- Player positon is not correct -> send correction NOW
- Mob position is not correct -> send correction NOW


um .. thats exactly what happens already.

the server sends it's state to the client to update it, however once these are out of sync the client is regarded to be wrong so you see effects (monsters/players jumping location, health gone etc.)

games that allow the client to define the truth are more responsive yet open to exploitation (move hacks etc.) it's also much much harder to handle the multi-user case where many clients could end up out of sync with one another. it no longer is a function of client and server communication but client to client to client to server communication. they all need to know what each other is doing.

games that make the server define the truth suffer more often from desync issues since the user client is constantly being corrected. there is less chance for exploits in this model however since the client cannot get away with 'making stuff up'.

-

if I were putting a system together to tackle this issue I'd try to make something based on a few principles. trust, proximity, and impact.

trust is basically if a client get's slightly out of sync and the changes aren't major then let it slide. if a client continues to get out of sync then there's going to be a point where the server needs to step in and send a new state back. as the number of client desync's increases, or the severity of their state increases the trust level of the client drops, and the more corrections (and apparent desync on the client ) get sent from the server. in essence if your client is behaving itself you get less apparent desync. in this case the client should be allowed to dictate terms sometimes, and within reasonable limits.

proximity implies there is a spatial quality to desync - things that are near the player should be synchronised better than those in the surrounding area, and are again more in sync than things offscreen. ranged combat and attacks clearly make this trickier to describe than it purely being based on relative distance, but it could be defined as being regions of spatial influence. the aim of this would be for the client and server to communicate partial state to one another - update the close proximity state often (aim for no desync) - update the near-field state reasonably often (some desync would occur) - update the far-field state as little as possible (desync happening offscreen should not impact gameplay that much)

impact just means there's effects of desync that have more impact on the players experience than others. ideally no player should be able to die due to the effect of desync. the game should do as much as possible to mitigate any chance that a player could go from a fully alive state to a fully dead state in one desync update. at the very least they could be stunned or put in a state where they have a chance to recover. again this can be reinforced by the trust level thats been established. a client that constantly is reporting a character dying only during desync becomes pretty suspicious after a while. having a players attack not effect a distant monster due to desync has less lasting impact on the players experience. likewise if the client says an attack hits (and it plays the hit animation) yet the server says it doesn't and it wants to enforce that decision then let it. just don't remove the monster health, play a recovery animation (unless they've been 'sploded) and get on with it. again.. proximity would dictate that this combat is important so this state could have been updated fairly often to ensure the client and server view of this event are aligned.

maybe the multi player aspect renders most of these ideas redundant. *shrug* what do I know. i've never made a game.
What a lot of people tend to overlook is that the current system can not and likely never will be, able to handle multiple humans playing together. Neither the client nor the server can predict human behaviour, so as soon as you play with another person in the same party/area as you, the chances of desync happening, the frequency of it happening, how problematic it can be etc. increases by a gargantuan degree.

The more people? The worse the desync! This is quite likely why Blizzard limit Diablo III to only allowing up to 4 people to play together and not 6 which is what POE allows.

The only way for this to not be an issue is to do extremely tight synchronizing of other players actions but if you do that you may as well tightly synchronize everything because you've already made the game massively less responsive lol (Can't tightly synchronize a players actions without simultaneously introducing input lag that is equal to the latency to the server, else it will not really resolve desync at all).
Computer specifications:
Windows 10 Pro x64 | AMD Ryzen 5800X3D | ASUS Crosshair VIII Hero (WiFi) Motherboard | 16GB 3600MHz RAM | MSI Geforce 1070Ti Gamer | Corsair AX 760watt PSU | Samsung 860 Pro 512GB SSD & WD Black FZEX HDD
Last edited by Nicholas_Steel on Jul 5, 2014, 1:20:38 AM
"
ualac wrote:
"
Skizo wrote:
The easiest thing to fix (imo) would be for the client and the server to actually know what they know and tell each other.

...

When this information hits the server, the server should know exactly what it knows, and if this somehow is NOT what the client knows, then it should correct the client:
- Player positon is not correct -> send correction NOW
- Mob position is not correct -> send correction NOW


um .. thats exactly what happens already.

the server sends it's state to the client to update it, however once these are out of sync the client is regarded to be wrong so you see effects (monsters/players jumping location, health gone etc.)


I know for a fact that you are incorrect.

If you run a network sniffer along side the game, you can see data comming from the server and data going to the server - And yet somehow the game does not manage to sync my position for 10+ seconds and the same goes for enemies.
Still sane exile?
In the first post I cannot find why desyncs should last longer than a few times your ping. Is there any (offical) information why a desync caused by a flicker strike can last up to 10 seconds, with 30ms stable ping.

And if I understand correctly if I use flicker strike on a monster that is in range on my client, but out of range on the server, I get desynchronized.

Can't they simply add an option on the client to reduce the client's ranges by 20%, or any other values that the player may set. So that the player can choose between range or desyncs.

Edit: Why do monster desync in the first place? Can't be a path finding problem. Because it also happens in open places without obstacles. At very close range while using flicker strike.

Edit2: Does GGG every try to prevent desync? When I jump into a large group of enemies and let flicker strike select a random first target. It might choose a target that is just out of range. Resulting in doing flicker strikes on the client until I stop pressing the button. While on the server I am just standing still, tanking a large group of enemies.
Last edited by gunney on Jul 5, 2014, 10:53:36 AM
From a technican or engineer point of view Christ explentation is satisfactory but as a player i played a lot of other games and i can;t think of a single title in which the desync was such a problem.Sometimes when it occurs it's totaly ruining my game experience (for example im moving with a leap slam and suddenly im back to orginal location then i leap slam again and desync happens again - sometimes its like 10 times of this happeining) Its so damn irritating and it makes me wanna shut down the game.
I also want to point out that i cannot agree its not common thing like there's stated in 99% of the time it isnt so bad. With ceratin skills it can be really frequent for example try linking multistrike to cyclone and tell me how often u desync. Because for me its like always.
last thing i wanna say is i dont agree with this keeping chance to hit and other staff which makes game better and more fun but cause decyns. Im my opinion i woouldnt give a damn about chance to hit and stun if my game would run smothly and clear without risk of losing my chracter and die to situation in which i had no control over loctation of my character.
Also talking to few friends who left this game as they refering to it " Nah not gonna play this decyns fest" and growing same opinion of this game internet wide makes me really sad. People seem to refert to POE as decyns game which is realy really bad for the title.

Report Forum Post

Report Account:

Report Type

Additional Info