When desyncs will be fixed?

I wasn't playing PoE a few month due to desync problems. Somewhere on this forum I read devs will be fixing this problem before Open Beta. Well, there is approximately 1 month left. Tried playing PoE with Whirling Blades Shadow now. It didn't take much time to get desyncs. For online game this is no good at all. Will this game be 3-rd ARPG dissapointment this year for me? First, it was D3. Then it was TL2. While TL2 is good, there is a swarm of little bugs, game-breaking if you put them all together. Now there is PoE with still not fixed desyncs.

I'm sure desyncs aren't caused by my internet connection. I've turned on statistics and checked while getting desyncs: 18-22 ms per frame, 60 FPS (vsync), 48-66 ms latency, Europe Gateway.
First desync is not something you can 'fix' it will always exist in a game where all the (important) calculations are made on the server... It is beeing worked on, believe me GGG knows about the problem and they are doing their best to improve the situation (but as i said it is NOT something where you change one line of code and it magically dissapears).

Also before you come with the point that other content is beeing developed at the same time: not all coders can work on the network code (mind the saying "too many cooks spoil the broth", it is true in programming as well).
Proud 5th duelist in the Jul 1 2012 Ladder Race and in the Nov 3 2012 Solo Turbo Race :D
And even prouder 4th Templar in the Nov 10 Four-hour Party Hardcore Race :P
Current OB success:
top 20 Ranger in 105 Minute Turbo Solo (S4E9)
Last edited by Sony_Black#0112 on Nov 4, 2012, 4:24:11 AM
As far as I understand, desyncs in PoE are caused by predictions on client side not matching server-side calculations. You say desyncs everywhere where network is related? That's obvious lie.

Edit: As I stated in first post, my internet is good, stable, no lag spikes. As for examples, WarCraft 3 on this internet doesn't get any lags or desyncs, any other well-written game or application too. Only PoE does.

Edit 2: These things are called "predictions" because they can fail. As long as there are any predictions which might fail, there are desyncs.
Last edited by idarktemplar#1285 on Nov 4, 2012, 5:46:07 AM
"
idarktemplar wrote:
As far as I understand, desyncs are caused because there are predictions on client side which don't match server-side calculations. You say desyncs everywhere where network is related? That's obvious lie.

Edit: As I stated in first post, my internet is good, stable, no lag spikes. As for examples, WarCraft 3 on this internet doesn't get any lags or desyncs, any other well-written game or application too. Only PoE does.


Read my post again ;) There is a huge difference between this and WC3, firstly the number of calculations to be made, secondly a lot in WC3 even if you paly online is done client side, not nearly as much server side as PoE... Also can you imagine how much money Blizzard can give for hardware ?!
Any online game has some desync, the difference is only how good it is hidden...

EDIT: sorry i didn't see your first edit when i wrote the above

EDIT2: i've played e.g. World of Tanks for about 2 years and those devs have one of the biggest server clusters in Europe, a bigger cluster in Russia, and another in America and in Asia and there were still desync issues from time to time (and when the appeared they were really really bad...)

EDIT3: before we get to further misunderstandigs - i just wanted to point out that GGG knows about the issue and that it is very high on their priority list, but sadly evrything takes time and especially in programming stuff tends to take more time than you initially expect. I'm sure GGG will imrpove the situation and continue to improve it as llong as they support PoE :)
Proud 5th duelist in the Jul 1 2012 Ladder Race and in the Nov 3 2012 Solo Turbo Race :D
And even prouder 4th Templar in the Nov 10 Four-hour Party Hardcore Race :P
Current OB success:
top 20 Ranger in 105 Minute Turbo Solo (S4E9)
Last edited by Sony_Black#0112 on Nov 4, 2012, 5:59:57 AM
"
Sony_Black wrote:
Read my post again ;) There is a huge difference between this and WC3, firstly the number of calculations to be made, secondly a lot in WC3 even if you paly online is done client side, not nearly as much server side as PoE... Also can you imagine how much money Blizzard can give for hardware ?!
Any online game has some desync, the difference is only how good it is hidden...

EDIT: sorry i didn't see your first edit when i wrote the above

EDIT2: i've played e.g. World of Tanks for about 2 years and those devs have one of the biggest server clusters in Europe, a bigger cluster in Russia, and another in America and in Asia and there were still desync issues from time to time (and when the appeared they were really really bad...)

EDIT3: before we get to further misunderstandigs - i just wanted to point out that GGG knows about the issue and that it is very high on their priority list, but sadly evrything takes time and especially in programming stuff tends to take more time than you initially expect. I'm sure GGG will imrpove the situation and continue to improve it as llong as they support PoE :)


1) Ok, they make all calculations on server, This causes desyncs? No, this causes bigger latency. I can play with bigger latency. You can adapt to bigger latency. You can't do same with desyncs.
2) When hardware isn't enough to serve to number of players, you just get lags or disconnects, stress tests shown that.
3) Why WC3 got no desyncs if network is good and stable? Because there is NO PREDICTIONS, only calculations, even if part or all of them are made client-side. I was even playing WC3 through 56k-modem. With lags and high latency, sometimes disconnects (not due WC3, but modem loosing connection), but no desyncs.
3.b) Why PoE gets desyncs? They try to predict server calculations to reduce actions latency. What happens when these predictions fail? You get desyncs. You see yourself ran away while you're actually surrounded by mobs who're about to kill your HC character, for example.
4) Which online games get desyncs if network is stable? Except PoE. World of Tanks? My brother plays it from time to time. When internet is good, there is no desyncs. When internet was bad, all he got were lags. Maybe WoT developers do some predictions too, which just fail far less frequently? Are you sure WoT desyncs aren't caused by network problems? I don't know. Even if I count that as good example, it's 2 games from huge bunch of network games.
Latency causes desynchronisation, and latency cannot ever be removed (even LAN has latency, but it's too small to notice; this is because light (information) still needs to travel).

Two WC3 players, one Orc a piece. The Orcs are standing next to eachother. Both players send the Move command at the same time, moving an equal distance. Each player will see their own Orc move before the other Orc joins in on that sweet walking action, despite both being given the same command at the same time; they are desynchronised. This is because it takes time for the information to travel and be processed, as expressed in latency.

Rubberbanding then solves this issue. The Orc that moved second will catch up somehow; maybe the client shows the second Orc moving an imperceptible fraction faster than their own. Maybe the second Orc will just jump ahead a few tiles, if the desynch is really bad.

So, to answer your last question: every online game has desynchs if the network connection is good. Today's devs are just good at making it imperceptible.

Actually, reminds me of olden games, when this stuff didn't happen at all, or poorly. Even though you had a hitscan weapon (no bullet travel), you couldn't hit anyone by targeting their avatar. This is because the thing's desynched! You'd have to lead your hitscan shots to score hits.
Last edited by Vipermagi#0984 on Nov 4, 2012, 9:23:39 AM
Part of fixing desyncs is simply having stronger netcode that is more efficient in estimating and predicting. A big part of netcode is actually having the server predict the client's inputs over the next, say, 50 ms, and accounting for it to start calculating distances and such in advance. The other part is making sure the server notices a desync as soon as possible so that the desync lasts as short as possible. The latter is somewhat of an issue right now.

Sadly, desyncs are the most noticable in the most clutch situations. If you suddenly have to Whirling Blade out of danger and 50 ms can make the difference between life and death, it's very likely that the client will see life but the server will see death, resulting in anger. The best thing GGG can do is optimize the netcode to a point where the difference isn't 50 ms, but 20 ms. This is difficult. It takes some games several months of netcode optimization to reach that point, I know from second-hand experience.
"
Vipermagi wrote:
Latency causes desynchronisation, and latency cannot ever be removed (even LAN has latency, but it's too small to notice; this is because light (information) still needs to travel).

Two WC3 players, one Orc a piece. The Orcs are standing next to eachother. Both players send the Move command at the same time, moving an equal distance. Each player will see their own Orc move before the other Orc joins in on that sweet walking action, despite both being given the same command at the same time; they are desynchronised. This is because it takes time for the information to travel and be processed, as expressed in latency.

Rubberbanding then solves this issue. The Orc that moved second will catch up somehow; maybe the client shows the second Orc moving an imperceptible fraction faster than their own. Maybe the second Orc will just jump ahead a few tiles, if the desynch is really bad.

So, to answer your last question: every online game has desynchs if the network connection is good. Today's devs are just good at making it imperceptible.

Actually, reminds me of olden games, when this stuff didn't happen at all, or poorly. Even though you had a hitscan weapon (no bullet travel), you couldn't hit anyone by targeting their avatar. This is because the thing's desynched! You'd have to lead your hitscan shots to score hits.


Alright, I'll enlighten you.
1) There is no desyncs due to latency. There are lags due to latency.
2) What's wrong with your 2 orcs example? In your example both players are equal. And they are not. Games made mostly with client-server model. One of them is server. Or Battle.net provides one (if players use b.net in case of WC3). Two players order Orcs to move at same moment of time? Which order server obtains these commands, same order is used to execute them. And then server sends results to all players. And, I'll repeat, one of players can be both player and server. That's why server-player gets an advantage in game, due to latency. So, in tournaments there are almost always host different from players: so none of players would blame he lost due to other having no latency. There is no desync possible in this scheme. It can lag, it can disconnect, if network is unstable, but it can't desync. There is exactly one server in games. Yeah, it's possible to duplicate all data required to try to make new server from other player in case current host-player goes offline, but it's still one server (the way it was made in WC3).
3) FPS example shows heavy lags, not desyncs. You see, it's the way FPS are made. They require low latency so you can get actual data every second. If you can't, it most times doesn't predict where players will be next moment. It waits for new data. When game gets it - you see new players positions. Players look like they move discretly. All required to fix that is to make artificial extra latency (how it's sometimes made in strategies and RPG, for example there is such option in StarCraft 1), but this solution is very bad for FPS genre, or do nothing and live with these laggy motions. Try playing this older games today. Will you see same lag effects, which you by mistake call desyncs? No. Why? Because your internet connection became faster. If yes, then there are 2 most likely reasons: a) your internet to game server didn't become better. b) game just suffers from same shit net code problems as PoE.
"
0nin wrote:
Part of fixing desyncs is simply having stronger netcode that is more efficient in estimating and predicting. A big part of netcode is actually having the server predict the client's inputs over the next, say, 50 ms, and accounting for it to start calculating distances and such in advance. The other part is making sure the server notices a desync as soon as possible so that the desync lasts as short as possible. The latter is somewhat of an issue right now.

Sadly, desyncs are the most noticable in the most clutch situations. If you suddenly have to Whirling Blade out of danger and 50 ms can make the difference between life and death, it's very likely that the client will see life but the server will see death, resulting in anger. The best thing GGG can do is optimize the netcode to a point where the difference isn't 50 ms, but 20 ms. This is difficult. It takes some games several months of netcode optimization to reach that point, I know from second-hand experience.


Why??? WHY??? Why do you need to predict something? If you continue using predictions, you'll never get rid of desyncs! As I said some posts ago, people can live and adapt to latency, why do you introduce desyncs? Yeah, it lessens latency, but desyncs much worse then higher latency.
Last edited by idarktemplar#1285 on Nov 4, 2012, 10:22:02 AM
I don't think you understand the word desynchronisation. A dictionary might help you.


Look. There's two ways you can make an online game work.

1. The client does all the calculations, and sends them to the server. The server then applies these calculations to the gamestate.
2. The client send input to the server. The server does the calculations and applies them to the gamestate, and then sends that gamestate back to the client.

In option #1, there will be no desync on the client's side, because the gamestate calculated by the client and the server are exactly equal. Latency still slows down how quickly the gamestates are updated, which leads to slow reactions, and desync can happen when considering other players, since your client doesn't receive inputs from other players and thus the server itself has to tell your client about them.

The big issue with this option is simple: you must have all resources located on the client side (i.e. on your PC), which means players have access to all your code, which means your game can get hacked. Hacking ruined the online experience of Diablo 2 (or at least made it very different from intended), so Path of Exile does NOT want option 1.


In option 2, the client is unable to calculate anything until the server has responded, which means that, technically, you're ALWAYS desynced. When you do an input, it takes a time equal to your latency for your input to reach the server. It then takes the same time for the server to communicate its calculations back to your client. And by the time you've received back the calculations, your input has already changed.

This is obviously an issue. You can't just let this happen as is, the whole game would look weird and out of sync constantly. Therefore, you need to make the game understand that this desynchronization will happen, and make it calculate into the future. If the client's input is standing still attacking a mob, the server will assume the player will keep doing that until the next input reaches it. But what if you don't? The server can't predict that.


Imagine the following. My latency to the server is 100ms.

T0ms: I attack a target. My client assumes I can start attacking the target.
T100ms: The server receives my input and starts attacking the target for real.
T200ms: My client receives the calculations back, and I am indeed attacking my target.

If the client hadn't made that assumption, I'd have to wait 200ms to start attacking, while the server would've already attacked at 100ms. I'd have been out of sync. Luckily the netcode is smart enough to keep me decently synced up.

Now the problem:

T0ms: I'm almost getting hit by a big attack. I Whirling Blade away. The client assumes I'll be able to escape, and does so.
T50ms: The attack hits. I die on the server.
T100ms: The server receives my input to Whirling Blade away. Sadly, I'm already dead.
T200ms: My client receives the calculation that I am dead. I promptly die after the Whirling Blades animation has finished.


There's nothing that can prevent this from happening as long as I have 100ms. Had I had 20ms, I would've been able to deliver my input at T40ms, and lived.





Note that that's simply the math behind it as far as I understand it. I'm not a netcode programmer. It's probably far more complicated than this under the hood.
Last edited by 0nin#3548 on Nov 4, 2012, 11:19:06 AM

Report Forum Post

Report Account:

Report Type

Additional Info