Client-server Action Synchronisation

I've posted this in some obscure thread before, but I'll put it here since I think it's important.

Other than sync problems caused by delays, there seems to be a problem on the client side where information from the server is not interpreted correctly, or the client does something different than the server despite identical starting conditions.

The most common observation of this is when enemies come at you, but aren't really there so they or the player get teleported around after desync is detected.

In the case when it's an monster that gets teleported back after a resync, it's actually possible to create an infinite loop. The enemy comes at you, you attack it (hold shift so you don't get teleported around), the monster is not really there so it resyncs back after a few seconds, then it comes at you again, and repeat till infinity. Why does this happen? After a resync the player and monster positions are supposed to be identical between client and server right? So why does the thing keep coming at me on the client but not on the server?

I think if you'd figure out the cause of that, it would fix a great deal of the desync people are experiencing.
After all this time... still no noticeable improvement to this issue. If I had known desync would still be unsolved over a year after I started playing POE, I would NEVER have given so much hard earned money in support of GGG.

I can't even begin to describe how sad and disappointed I am. Such a wonderful game, ruined for so many of us by ONE major flaw.




-Dragon
DISCLAIMER!
The views and expressed opinions of Dragon are solely those of a drunken redneck and are not necessarily those of a sane person. Any likeness of intelligence is strictly coincidental and should not be taken seriously. His posts should not be read... by anyone.
"
Dragon585 wrote:
After all this time... still no noticeable improvement to this issue. If I had known desync would still be unsolved over a year after I started playing POE, I would NEVER have given so much hard earned money in support of GGG.

I can't even begin to describe how sad and disappointed I am. Such a wonderful game, ruined for so many of us by ONE major flaw.




-Dragon



No one is perfect in this world...accept it or move on bro... ;)
Beta Member Since 2010
"
b15h09 wrote:
"
Lauicus wrote:
"
DirkAustin wrote:
Holy shit, what a wall of text that is. O_O

Seriously, it comes down to people cheating the crap out of games as soon as they have the means to do so which are of course the files and codes.


Sadly he's right. So many games are completely ruined by cheaters. How frustrating desync sometimes might be, the amount of cheating some other games are plagued by would have made me quit PoE long ago.


Eh... not me. I learned to stop caring about cheating thanks to D1 and D2. I considered it a part of the game. I usually played legit, but sometimes I'd cheat a char to test a build. And yeah, I still had fun. Not a big fan of cheating, but I'll take the risk of cheating over having shit gameplay any day. Games are supposed to be fun... that people are concerned enough about economic and competitive integrity to sacrifice good gameplay just strikes me as sad on a few levels. Sorta losing sight of what games are about.


I agree with you in principle. I also use a cheat sometimes, for instance to get past some ridiculous boss who's mechanics doesn't fit the game anyways, just to be able to continue the game and enjoy the storyline.

But I believe you underestimate the extend of cheating people practice nowadays. Whole games are destroyed by it. Take Battlefield 3, could be quite a nice multiplayer experience. However, when you learn that cheats are widely used -which can be bought for real money btw- that enable the cheater to one-shot every opponent from his spawning location using his starting-pistol just by shooting into a big yellow rectangle that the cheat automatically enables for each newly spawned opponent, all fun is gone.

Where is the fun in PoE when every single player walks around in 100% perfect gear, using the build that is mathematically the best one possible? To me, a big chunk of the attractiveness comes from the effort needed to achieve something, and the need to improvise due to the lack of suited gear. And to the players that choose not to use cheats, a large part of the multiplayer experience would be lost, as public parties would be most certainly widely infested by cheaters.
And don't forget the Dark Souls series (And maybe Demon Souls). Players just run around with infinite health and stamina, invading other players and dealing infinite damage to them. Or in Dark Souls 1 they eventually uncovered a method that would trick the game in to treating the invader as part of the victims world allowing them to do normally impossible stuff (Killing/pissing off NPC's) and severely ruining the victims experience with that character that they're using.
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#0509 on Jul 25, 2014, 8:05:30 AM
"
Dragon585 wrote:
After all this time... still no noticeable improvement to this issue. If I had known desync would still be unsolved over a year after I started playing POE, I would NEVER have given so much hard earned money in support of GGG.

I can't even begin to describe how sad and disappointed I am. Such a wonderful game, ruined for so many of us by ONE major flaw.




-Dragon


This. A 100 times this.

This one major flaw is the only reason why I am not playing your game GGG. And before everyone goes on and say "fine, dont play then, play another game" I just want to say this. I want to play Path of Exile, and no im not playing it at the moment, I am checking this thread to see if the issue has been resolved. This game is a piece of art, both mechanically and artistically. I want to play it but the one major desync flaw is what needs to get fixed because it ruines the whole experience for me.
Above content may contain traces of nonsense.

Reality is simply an unrealistic version of online gaming.
Last edited by wakko#3919 on Jul 27, 2014, 12:47:13 PM
"
Dragon585 wrote:
After all this time... still no noticeable improvement to this issue. If I had known desync would still be unsolved over a year after I started playing POE, I would NEVER have given so much hard earned money in support of GGG.

I can't even begin to describe how sad and disappointed I am. Such a wonderful game, ruined for so many of us by ONE major flaw.




-Dragon


Dont be so entitled. You didnt donate to get certain things done. You donated out of good will. if you did it for any other reason i pity you.

Desync is here to stay, deal with it. Dont use desyncish skills and use AHK for /oos.
"
DirkAustin wrote:
Desync is here to stay, deal with it. Dont use desyncish skills and use AHK for /oos.


So desync should be considered a feature? Players shouldnt have to feel punished when using a skill. Why would I have to play around the game itself? I should just be able to play the game and have fun, not having to play around different things, or not use skills because they might desync you because there shouldnt be any desync to begin with.

Having people play around your own game flaw by not using skills that the devs probably want people to use is not a valid excuse
Above content may contain traces of nonsense.

Reality is simply an unrealistic version of online gaming.
Last edited by wakko#3919 on Jul 31, 2014, 5:13:55 AM
"
Chris wrote:

Spoiler
Even if no strange lag occurs, the monsters that are nearby are pathfinding on the client to where they think you are - which by definition is different than on the server because of latency. These entities have to find paths that go around the other monsters, which of course are in subtlety different positions on both ends. The differing paths further contribute to the monsters being in the wrong place.

Even if our resyncing code was perfect, there would be situations where the game gets out of sync just because of tiny timing differences. Imagine you're running near a large rock, and you arbitrarily click on the other side of it. Both the client and the server attempt to find the shortest path around the rock. Because your client is ahead of the server by definition (as the movement was processed there approximately 50-250ms earlier, so that it was responsive), there are cases where the client may choose to go a different way around the rock than the server. If you were hit by a monster en-route, then your movement will be interrupted in a different place on both simulations. You are now out of sync.

The key observation here is that improved resync code involves more rubberbanding than we have at the moment. If we do it properly, monsters and players will be corrected to better positions more frequently, to prevent anything getting drastically out of place.

  • Have monsters on the client attack your server location rather than client location to reduce entropy. Maybe compromise on them attacking a mid-way point between the two. The drawback here is that it means they'll appear they are swinging at the air, but they're technically more in sync.
  • Display blood and elemental effects at the contact point on the client rather than as damage confirmation. This will mean that combat feels more impactful, but we lose the communicated visual information about whether damage was actually dealt. It could be that this is easier to apply to effects from spells because they generally don't have a hit/miss calculation.
  • Resync entities that successfully hit you when nothing is on the client near you. This may actually pull the entity even more out-of-sync if you're in the wrong place yourself.
  • Resync everything in an area around a desynced entity. This reduces overall entropy massively but would be pretty jarring.
  • Delay actions if the client was ahead on its path. This will solve the case where monsters die before you get to them (if you were out of sync) but technically results in lower combat efficiency for players in these cases.
  • Improve the distance-based resyncing that occurs for things that are far away from where they should be. It doesn't currently take movement speed into account properly. This is why Rhoas feel quite out of sync when charging.
  • Measure overall entropy around the player and force a resync if it exceeds some threshold. The problem is that by the time the resynced information gets to the client, more actions could have occured.
  • Fix bugs with specific skills that cause them to act differently on the client and server (Whirling Blades, for example, sometimes fails to trigger based on distance on one end).
  • Other changes too subtle/difficult to explain clearly here


in order to keep hardcore game mechanics like body-blocking, stunning and missing while also preventing players from manipulating combat results, small amounts of desync will occur naturally. There is no way around this, due to the speed of light.
There are some thesises here that caught my eye.

Correct me if I'm wrong, but don't you know the current ping to each player? It is at the root of the "natural desync" problem. So why server can't assume that if a player has ping 100 to move the world these 100ms forward? The monsters and pathfinding mechanism will know almost exactly where he is. And if ping changes, the world's position can be certainly adjusted.

The doorways now sometimes cause desync even w/o monsters attacking. So why not ask the client if it has passed a doorway, which will tell the pathfinding mechanism on server to build a path through it? So the player will not be stuck in the corner of a door, but will move past it (although it will get desynced a bit if this situation arises, it won't be THAT desynced).

Next, monsters pathfinding. Usually the path is rather short -- so why not calculate it for all the monsters to move synchronously? I mean that these can go not around each other, but be aware of their future paths instead. There is a point where a player is heading on a short term. So you can calculate all the paths one by one to that point ahead of time and start moving monsters there. This means less "natural" desync. If these paths are sent to the client, monsters and player will be at the same spots as at server realm (and it would be useless to try to cheat with this by changeing the game client to see these paths since they usually are the obvious ones, omitting that these can be only partially sent, say for the next 500ms).
Last edited by Shade_RU_N53#5127 on Jul 28, 2014, 11:41:57 PM
"
Shade_RU_N53 wrote:
If these paths are sent to the client
Hell, the servers don't even send positions of monsters using active skills in immediate vicinity of player (just search for anuhart piety desync video), and you suggest sending entire paths? Not going to happen ever.
And worst change is putting almost all bosses in new version of maps into fucking small areas, where you can't kite well or dodge stuff. What a terrible idiot invented that I want say to him: dude flick you, seriously flick you very much.

Report Forum Post

Report Account:

Report Type

Additional Info