What is Desync? (A thorough explanation)

It's enticing to believe that the nature of the internet means that there is no way anyone could ever achieve total responsiveness in an online game.

Having played more than a few online games, however, I think it's only fair that we actually compare what PoE does compared to games outside of its genre. I'll go from the games where latency is gamebreaking to games where this is less true.

1. Fighting games - It's worse than frustrating when the player with the faster connection speed wins, it's downright unfair and unplayable. Any fighting game that attempts an online competition risks this, and as such they take rather extreme measures, down to the millisecond, to ensure that the two players are at least in sync with each other, if nothing else. It's entertaining to suggest that PoE has more players per instance, but realistically the only way to claim economies of scale apply here is to suggest that either GGG has more cumulative players, or that GGG has far less server power.

2. MOBA/RTS games - Again, highly competitive games where instead of getting a laggy experience, players are reported as "reconnecting" and in MOBAs they're sent to a place of safety to reduce the chances of unnecessary frustration.
Can you imagine what the Starcraft and Starcraft 2 tournaments would be like if a mere 30-40 units engaging in tactical pathfinding, holding chokepoints, and actual combat were susceptible to the sort of rubberbanding and desync that people regularly complain about in PoE? Your band of zealots would, instead of the intelligent and hasty retreat you issued when you came across an army of firebats and siege tanks, take the extra millisecond of damage while charging blindly in, and then probably get wiped in the pursuit back out. Just imagine what happens in the scale of SC2, where the 200 limit on units translates easily to a four-player game where as many as 200 combat units all trying to kill each other at once while another 200 are gathering resources as quickly as possible. This would be the "desync nightmare" the original poster claims is completely intractable, possibly by any online game in existence.
This is just as true, on a smaller, tighter scale for MOBAs. For LoL, that means 32 million players, who aren't even considerate enough to avoid things like "peak hours" after school or work, and expect a smooth, or at least fair experience.
The same question applies: does GGG somehow deal with more players than LoL and SC2, or does GGG plainly lack the resources to support that kind of responsiveness?

3. MMORPGs - Consider the fact that this is now hundreds of thousands of players, potentially all within spitting distance of each other. I appreciate that a few years ago it might have been reasonable to speculate about the clever ways implemented to hide input delays, but with games like Tera and Guild Wars 2 where the exact same types of placement, evasive tactics, and responsiveness rapidly become key, it's a tough sell to make that the 300k or so players GGG deals with is somehow more staggering than the 400k concurrent users Guild Wars 2 managed to avoid lagging to death at launch.

So I still have to ask, does anyone here have a more official, reasonable response as to why I play the game at just under 60 ping, but enemies continue to teleport in and out of my field of view, spamming ranged attacks I can't see and landing melee attacks I don't get to land back? If GGG's goal was to make the game as responsive and tactical as possible, they've achieved the worst possible combination, where trying to be tactical is punished and the game feels somehow laggier than most other online games? I can't run in to land a single hit and run out before they strike back, I can't avoid ranged attacks which fly very clearly to one side of me but still kill me, and I can't even outrun the mobs or bosses who teleport back to me as I teleport back to them for a two-hit KO.

There are ways to play PoE, and do well, but I'm sorry to say that "tactical" or "skillfully" are less appropriate than "ranged" and "spammy." And I'd really like that to change.
So, what the OP says is that every game has to deal with desync in some way or another and most games obscure it, like Diablo 3, by being less 'tactical'.

Well then, PoE must be the most effing 'tactical' game out there, because I honestly can't remember another online game where I was so out of sync with the server while sitting at 50-70ms latency. In fact the whole problem of being desynced was non existant to me, because no game in recent years was as obviously flawed in that department as this one. I'm talking about clicking on a shrine, running up to it, then standing still next to it for 2-3 seconds while the server catches up. I don't even dare to try HC because I know that I'll die a million deaths to suddenly appearing surrounded by enemies.

I'm not a hater or a fanboy here, but the problem needs to go, it's seriously ruining the experience for me and I want to play the game more.
thepalatinepoet:
Spoiler

1. Fighting games have some advantages bandwidth wise: Low amounts of data, and only 2 important objects usually. And almost everything is done client side.
And what world do you live in where ping affects the outcome? Besides quite a few shooters, and several games that is. But its not particularly interesting or noticeable before you get into the -1 versus 50 versus 200 ranges.

Proving there is not packet loss involved, you could use servers for matchmaking and make the rest P2P or client to client.
Regarding that, I know of another game with desync that is noticeable and bad: Dark Souls, same game also have bugs involving the player being able to attack in 2 different angles at the same time, and a animation cancel that allows the player to ignore the hit on stun system.
Dark Souls has a worse netcode than PoE, including the way ping works.


2. MOBAs desync badly if you have a network that can not send/receive enough data, or have high enough packet loss to achive the same effect. Its fun to watch. It behaves roughly the same, by teleporting the player around or jumping between complete data packs(depending on what client interpolation and prediction is set to).
Its just that so long there is no packet loss involved, and bandwidth is sufficient, a game like DOTA will scale with horrible ping. I am not sure if PoE does that, never got around to test super hing ping and sufficient bandwidth. Beyond hit delay taking longer to be confirmed that is.
Dota2 also explodes during peak time, by the UI getting laggy because its mostly server side. and 10-20 minute queue times because the game has a server cap.
I am not familiar with Leagues server model to comment.



3. MMORPGs: Server costs. The pasta of OP adresses the issue/agenda.



"
So I still have to ask, does anyone here have a more official, reasonable response as to why I play the game at just under 60 ping, but enemies continue to teleport in and out of my field of view, spamming ranged attacks I can't see and landing melee attacks I don't get to land back?

I would assume 1-2% packet loss, netcode not having a way to deal with said packet loss, and no pathing compensation for desync. Or maybe the pathing is too severe. Or something. Or as somebody else said: Is it really impossible to sync player position 5 times a second?
But alas: At the least it has gotten better since the beta. I still see the horror once in a while in some of the more popular races, but most of the time it just looks funny.






MajorAggro said last page:
Spoiler

"
MajorAggro wrote:
Most developers would stop claiming a problem is impossible to solve once their competitors have built working solutions. There are plenty of examples of secure realtime multiplayer games on the market that have no "desync" issues. And many of these games have been around for years, long before POE released. The desync story out of GGG is garbage. I shudder to think the engineers at GGG really believe it. Testing aside, I wonder if anyone at GGG even plays what they release to the public anymore.

Please:

1) GGG and apologizers, stop implying desync is caused by network latency/lag. In most games network latency causes input delay that is easily dealt with and does not destroy playability. POE desync is not input delay.

2) GGG and apologizers, stop implying desync is caused by network connection issues, dropped packets, disconnections. Desync in POE is obviously an artifact of the game design, a software defect that manifests in even the best network conditions.

3) GGG, stop claiming that your game is somehow "special" and so desync is unavoidable. All realtime multiplayer games have to deal with network latency, and most do so quite well without sacrificing security or playability.

4) GGG, stop deluding the community and yourselves that your clever coding eliminates input delay related to network latency. Input delay is not the end of the world, and being able to see what is actually happening on the server is far more important than instant input response. Your current desync situation is pretty damning to the idea that you can hide input delay. The only way you are going to get rid of input delay (without some far worse side effect like desync) is if you build what is essentially a single player game, and none of us want that.

5) GGG, stop patching your current broken design and put together a real solution. If your engineers can't figure it out, get some help.


That too. The "why the fuck am i teleporting" should eventually be fixed.
I wish i would have the means to record/stream my playtime, but unfortunately i do not. I would love to get explanations for a few of those so severe desyncs that actually blew my mind.

Like, just yesterday, in the cavern of wrath (partying with a mate during race), i had two ways around an ice nova sized chunk of wall, one through shallow water (east) and one on the land (west), with me standing south. I ran the land path, positioned myself for the approaching enemies and started shooting. I wasn't dealing damage to most mobs, two melee mobs were right in front of me and refused to attack. Then, after moving forward, i was sent back to the southern spot. I couldn't believe my eyes, there were absolutely no enemies in the southern area, nothing to obstruct my path, nothing that could've prevented me from just taking the western way. But the server was convinced that i had never left that spot, not budged an inch in the full 8 seconds that had passed since.

So far the most severe desync i've encountered. Nothing bad happened to me, but gg for any hardcore players. Sooner or later desyncs will get you.

Oh, another one, hedge maze (yeah, you know what's coming). Getting my path blocked by creeps from two sides. I attempt to run through, nothing happens at first, then i suddenly slip past, move quite a distance, then get teleported back. At this point, i'd assume the client and server would be in sync? But no, the situation repeats two more times. I keep trying to move forward, my client lets me and the server doesn't. Either the mob position wasn't synced properly after the first time, or the pathfinding is straight up broken in the client (letting me pass through stuff that i actually can't). I don't see any other way for this to happen, and both are the result of faulty code.

And please, if somebody says that "high action and fast reactions" is way more pronounced in this game than in other games, i have to beg your pardon. You can't even properly kite here, because your ranger has to draw another arrow before she'll move. It feels so stiff to control compared to basically any game i've played.

Once more: If you want to justify your network code approach (no RTT latency but instant client simulation, whooo) with a certain set of game features ("fast" action, units blocking each other, narrow paths), then it is just ludicrous to blame the desyncs on exactly those features being so important. That's just saying GGG knew exactly what they were in for and willingly ran into an open knife.
Entertainingly, a game during which I suffer from high ping tends to be one in which my packets are lost, dropped, corrupt, or otherwise delayed beyond reasonable play. So to answer del_diablo, it's pretty obvious to me that low ping means my internet isn't dropping packets at a rate that would or should matter. If my ping is 60 milliseconds, I have to wonder why the game is going out of sync by more than the, say, 0.06 seconds it would take for the game to realize it needed to sync back up. The fact that MOBAs try very hard to fail gracefully despite high network latency in 10-man games (I'd point you to SMITE, which is a third-person shooter of a MOBA, even, and is free to play) with 30 creeps total, and as many as 12 defensive structures at all times should be an indication that there's more to PoE's problems than simple bandwidth or client-side instability might justify.

I'm not even talking about complex game scenarios in which thousands of creatures are running around, and four players are trying to change the same instance at the same time. I regularly die trying to kite a boss as a Shadow. For a game that wants to be tactical, the melee glass cannon doesn't get to use the tactics it really wants to pull off. I regularly run to the boss to get my 1-5 hits off, and when it's time to kite (or die), instead of running away I find myself teleporting back to the source of my imminent doom, often standing stupidly, even when I'm trying to use skills and drink potions and do anything other than stay within hitting range, really.

This is a 1v1, man vs. NPC enemy creature scenario with no obstacles. I've drawn the beast out to a nice pretty clearing and without any lag spikes or hardware slowdowns, I'm losing about a second of gameplay time at a time to mysterious desyncing.

At this point I've concluded that this crippling input unreliability makes most glass cannons riskier than they need to be, and melee glass cannons absolutely useless in solo instances. My Shadow kills at-level creatures in 1.5 hits on average, but when I can't swing and I can't run, the same mob I could have wiped out in 2 seconds take a leisure 7 seconds to kill their effectively stationary, totally helpless target.

To really drive this point home, I can understand a notion of fairness in PvP, and maybe they need to handle PvP the way they do right now, but I don't see why the vast majority of teleportation I see involves enemies I thought I've evaded reappearing beside me and dealing multiple hit's worth of damage while I was, for all intents and purposes, standing there daydreaming about how I'd escape them. Why couldn't the game at least let me teleport away if all it does is keep me safe? Why not at least do so when it's a matter of life and death? When the cumulative design choices heavily punish risky, highly tactical playstyles, I'm rather unsure as to how the implementation was envisioned to champion tactics at all.

So... yeah. I love this game, so many things it gets so right, and I really can't wrap my head around how the network implementation punishes trying to play tactically instead of playing safe.

"
Entertainingly, a game during which I suffer from high ping tends to be one in which my packets are lost, dropped, corrupt, or otherwise delayed beyond reasonable play.

60ms with 50% packet drop is measured as a ping of 90ms + 50% packet drop. In best cases. In most cases its random ping between 50-250ms depending on what has been dropped.
Meh, the statement alone is not worth much.
"
del_diablo wrote:
"
Entertainingly, a game during which I suffer from high ping tends to be one in which my packets are lost, dropped, corrupt, or otherwise delayed beyond reasonable play.

60ms with 50% packet drop is measured as a ping of 90ms + 50% packet drop. In best cases. In most cases its random ping between 50-250ms depending on what has been dropped.
Meh, the statement alone is not worth much.

So you are trying to justify desyncs with packet drops?
Here is a small vid of a desync example.

http://www.pathofexile.com/forum/view-thread/719253

See the "Exiles" section and watch the "level 77 Shrine desync Xandro Blooddrinker" video.

For about 10 seconds I'm fighting Xandro apparently in the doorway.. and then blammo, I'm actually in the corner.
IGN: Mortezzah, prolly playing on character Gellig
http://www.pathofexile.com/forum/view-thread/781590, for an end-game boss tank guide.
I just wanted to let it be known that I would rather have the tactical gameplay of POE and some minor desync issues than diablo3 style gameplay (or d2 style hacking god forbid).

If this is how it has to be, so be it. Its not a big deal.

In HC you just need to be very careful in a large party+large groups of mobs.
To really put this in perspective:

I think it's totally fair that server constraints will cause the game to desync. Every game that has to run over the internet is indeed required to deal with this inevitability. However, the way PoE handles desynchronization is almost as uninformative and frustrating as possible. I'll go over the reasons I'm not sure what GGG is aiming for with their current implementation:

Firstly, let's consider what happens during a desync: everytime a desync happens, player input is thrown away. A player trying to move will move incorrectly or not at all, a player trying to use a skill will, if they're lucky, do the same skill repeatedly, and during this time the enemies who could be doing damage are always doing damage.

The most damaging scenario happens to be the most popular approaches in older isometric action RPGs: our hero is kiting something big and deadly, either in the form of many spammy ranged mob enemies, or some sort of hulking fellow with a big orange name and a good chance at killing our hero in 2-6 hits depending on luck and build. In this case, the player invariably suffers. The whole point of tactical positioning is to prevent damage by staying just out of harm's way, and if harm's way can be brought arbitrarily back to the player by unpredictably ignoring his input, tactical positioning becomes a less desirable choice.

I'm open to the idea that PoE wants to reward intelligent play, but from the player's perspective, the current game injects an additional random variable, which I'll call the "did it happen?" variable. You're never sure, no matter how good your connection speed is, if your world is about to completely reset as if you'd been standing stupidly for the last few seconds. It's comparable to a lag spike in how the world reacts.

To compare, let's pick two playstyles and see which one suffers when the game desyncs. When the minion master witch desyncs, the world resets and her minions will have been attacking enemies on the server despite her seeming desire to run into a wall or count the number of buckles on her new belt. She may have to make up for lost time and cast a few more spells. When the Shadow, Duelist, or Templar desync, whatever it was they could have killed, had they known it was even there, has been whacking away at them. Whatever it was they were running from gets a few extra hits.

I think it's safe to say that when you can't count on being able to move when you want, being able to hit when you want, or even being sure that the enemies are where you screen shows them, staying far enough away that this won't result in being mobbed and killed is safer than diving into battle.

What's the solution to this? Easy. Prioritize player position. Whenever the client and the server disagree on the player's position, a desync has occurred and should be addressed immediately. I don't imagine too many people will be upset if some monsters run the wrong way, so long as they don't wind up standing next to them. When the client and the server disagree on where someone is, trust the client. There are far smarter ways to prevent malicious client modifications than to make the client status periodically irrelevant. I'm not demanding an offline mode, but if that's too dangerous, maybe don't penalize players if they die within a few seconds of serious desync. Let them keep their health and mana, or maybe just reduce the exp penalty.

In addition to this, the monsters of Wraeclast are designed to punish even a second's indiscretion. Mobs of ranged attackers, teleporting heavy-hitters, and (my favorite) the augmented multiple splash projectile spammer are all designed to make quick work of someone who can't make up their mind. If you find yourself in the thick of battle standing still, you're usually lucky to be alive for much longer. GGG has filled the game with monsters that explode, monsters that waste no time casting as many spells as they can once they see you, and enemies that can hit you practically from off screen, and this makes the game exciting... so long as you're around to enjoy it.

There are ways to create enemies that don't shoot three point-blank projectiles four or five times while you find yourself swinging mindlessly at the big stone statue that has (without your knowing for a few more seconds) placed itself between you and your spell-spamming priority target. There are ways to design mobs so that they don't move so fast they practically teleport through desyncs. Most importantly, there's a very good reason not to design bosses that deal huge spikes of instant damage, because without fast response times the only viable strategy is damage mitigation. When you can't be sure you can run in, do your work, and then get out, your best bet is to make it so that you don't have to run in, or you don't have to run out, and you're left either avoiding damage through distance, or through thick damage reduction armor.

I've spent way too much time watching enemy mobs take advantage of desyncs to be able to say that GGG rewards playing smart when it's smarter to play safe. I'd really like it if enemies ignored players that weren't providing input of any sort, and new damage was negated or reduced until players got a chance to react.



What puzzles me the most is the fact that people seem to believe that reducing frustrating desync is some monumentally expensive process. GGG could have easily designed the game to be less punishing around desyncs, or better yet designed a synchronization protocol that minimized player disadvantage. As often as the servers can handle, check player positions. Just the players. If the server and the client place the player too far apart, immediately start a resync. If the player is running up against walls, or within some range of enemies, sync more often. I can't imagine how a lossy hash of game state to check desync could be much more expensive than whatever it does right now, so it wouldn't be too unrealistic to compress player positioning, nearby enemy positioning, and health/conditions into a short string that could be compared frequently, as well as a longer string that could check for desyncs with a low probability of false positive. I have no idea how GGG has implemented its system, but I'm rather concerned by the amount of server bandwidth they'd seem to need to make the gameplay they're trying to enable anything more than a pipe dream.
Last edited by thepalatinepoet on Dec 24, 2013, 4:45:11 AM

Report Forum Post

Report Account:

Report Type

Additional Info