Client-server Action Synchronisation

"
074 wrote:
"
wakko wrote:
I'm just curious... How does Diablo 2-3 do it? I havent played Diablo 3 myself, but when I've watched Kripp play it I havent really seen any desyncs or seen him complain about desyncs. Diablo 3 is always online too (for pc atleast) right? And I have never really had any desync problems in diablo 2 that I can remember right now.


They don't try to do "predictions" like PoE. You click, you send a command, you get server saying ok, and you get results, which ensures everything happens exactly as they should. They have fast servers around the world to ensure low ping. To conclude: 1. They don't have "predictions" to mess up. 2. They have much better ping which results in immediate response of clickings.


Then why wouldnt GGG do the same for PoE? That system sounds way better than PoE's system. Is it just a bad design choice or somehow limited to the engine or whatever?
Above content may contain traces of nonsense.

Reality is simply an unrealistic version of online gaming.
"
wakko wrote:

Then why wouldnt GGG do the same for PoE? That system sounds way better than PoE's system. Is it just a bad design choice or somehow limited to the engine or whatever?


For D3 system, you need fast servers with low ping to run smooth.

For whatever reason, PoE has poor ping (50-200ms, again, if you are used to any form of online games, is pretty bad). For PoE having such a high ping, "predictions" emulates the experience of low ping.

But in the end of the day, you can't escape lag, which messes up "predictions", aka desyncs.

TLDR:

Best system is "no prediction+low ping".

PoE is "prediction+high ping", although *feels* smoother than "no prediction+low ping", but you have desyncs as side effect.

So it's covering up the effects of the real problem without solving it: lag.

Why PoE is like this? I don't know, poor design choice from the creators probably.
"
074 wrote:
Everyone is talking about the EFFECTS of desync. But here is the real CAUSE of the problem.

So in short, desync happens when client prediction and server prediction doesn't match up during the latency (let's say 200ms which is typical, for the sake of this exercise).

So in short, the root of all the problems is latency.

I'm not going to explain why the typical 200ms is far too long a time. In a game like this, A LOT can happen in 200ms, which is 0.2 seconds, especially when fighting large number of mobs. Hell, your attack speed often far exceeds 0.2 seconds. But the point is, 50-200ms is a horrible latency for any online game in this day and age.

Other games don't have this problem, because they have good ping. If you have played any first person shooter, you will know anything ABOVE 50ms is unacceptable. PoE has an even worse effect from poor ping, because there is a lot more things going on in an action RPG then a first person shooter. You have path-finding, multiple skills going on at the same time, range detection and hit detection of many targets. In a shooters game, it is a lot simpler, because you only have the players position, and the point you are shooting at.

Another reason is because these actions take place over a longer period of time in ARPG than FPS, so their effects compound. PoE path finding affects the whole journey of you walking from point A to point B, and if anything happens, your desync effects accumulate and stack. In an FPS it is only the immediate instant moment that is affected (you either hit or you don't).

So there is no way you can remove desync if you don't remove latency.

So now I am getting at my point.

Why the hell do you not sprinkle servers across the globe and make everyone have the best ping possible, like you would do with an FPS game? You can rent servers in every country and effectively run the game like Counter Strike or Quake Live where latency is king. This is especially more important for your game because of the reasons above you have even a greater interest in minimizing ping than pro-FPS games. You are aiming at below 10ms.

I don't understand why this is not the TOP priority of your company, because this is where your problem is. You blame everything on lightspeed, but you don't do anything to shorten this distance like what FPS games do.

Basically to solve desync, you need to rethink your attitude to your ping time (it is much more important than everything else), and you need to do it like you would with Counter Strike (sprinkle servers EVERYWHERE).

Your ping is now your king. There, REAL problem addressed. Now do something about it.

If I hear you say "50-200ms" and not "20ms" one more god damn time, I will quit and play D3.

TLDR: We counter strike now


Dont blame ping only. PoE desyncs far more, than it should for a given latency. Sometimes you "rubberband" after few SECONDS of desync, which means game data wasnt syncronized for SECONDS, and that's completely unacceptable.
IGN: MortalKombat
Molten Strike build guide: https://www.pathofexile.com/forum/view-thread/1346504

There is no knowledge
That is not power
Last edited by MortalKombat3#6961 on May 18, 2014, 9:12:53 AM
"
MortalKombat3 wrote:

Dont blame ping only. PoE desyncs far more, than it should for a given latency. Sometimes you "rubberband" after few SECONDS of desync, which means game data wasnt syncronized for SECONDS, and that's completely unacceptable.



Good ping + no predictions = smooth like butter (D3)
Bad ping + no predictions = laggy gameplay (D3 when lag)

Good ping + predictions = tiny desyncs (PoE sometimes)
Bad ping + predictions = desyncs (PoE a lot of times)

So the only fix will be to remove predictions (impossible sadly), and improve ping (impossible sadly too).

Game is dead?

----

Because predictions work like this: You click a mob, your client do a path finding and shows your character walking to the mob and swing. When you desync (when client and server's path finding or other calculations are different), it desyncs the ENTIRE DURATION of "you walking to the mob and swing the attack".

That is why it desyncs for SECONDS and you rubberband (when it tries to resyncronize).
So when everything considered, predictions are actually doing more harm than good when you have good ping, and are pretty useless when you have bad ping (because you die from rubberbanding anyway, because you are lagging AND suffering from the incorrect information your game is showing you).

So, predictions are bad.

The ONLY way to save the game, is to completely adopt the D3 system - no predictions AND good ping.

GGG needs to do:
1. Remove predictions (rewrite the game)
2. Improve ping (rent more servers like counter strike or any FPS game)

That is the ONLY way.
"
Chris wrote:
Suggesting we switch to a synchronous action model like RTS/MOBA games really isn't a good solution. I understand that RTSs/MOBAs don't have desync, but they do have lag after each and every click. When the semantic is that you're ordering a unit around, this lag is understandable, but if you *are* the unit, then it feels really terrible. Right now, our client-prediction allows users in obscure countries to play Path of Exile while under 200+ms of latency. This would be a much worse experience under that alternate action model. In addition, it'd require rewriting most of the game.


I want to simplify and reply to this, where Chris says these are the reasons why RTS/MOBA isn't good:

1. They have lag after clicks.
They don't! How often do you hear people complain about "click lags"? You are just making stuff up and blowing things out of proportion to make you sound convincing.

2. Right now, our client-prediction allows users in obscure countries to play Path of Exile.
What do you even mean by "obscure countries"? Don't blame your poor server placement causing lag on us "living in obscure countries"! This is insulting to our intellect. The fact is they don't have enough servers deployed to ensure good ping. Maybe it is GGG who shouldn't run their servers with "obscure connections".

3. This would be a much worse experience under that alternate action model.
Not really. A laggy game is just laggy only, but a laggy game that rubberbands and show incorrect gameplay is just unplayable.

4. In addition, it'd require rewriting most of the game.
That is the REAL reason, isn't it. You wrote a game based on a poor design decision. Now you have to deal with the consequencies of trying to patch something that is by nature unfixable.


TLDR:
If you lag, you lag. You can't "predict" your game away from lag. You are just creating more problems to patch, cover up, hide, resync.
If this game were to grow, this is the thing that will prevent it.

People will try this game, people will compare it to D3, and people will realise this "desync" is nothing but an unfixable poor design decision, and get frustrated and leave.

Too bad you built a very good game out of a shaky foundation. I want to enjoy it more, I want to love it more, but now I can't see a future in this game. Its gameplay is fundamentally flawed.
It is most likely the rewriting of code that scares them, yes. But I think it really would be rewarding in a long term. I myself, love this game. But I quit playing it because of the stupid desyncs. I wish they would fix this once and for all. I really want to play your game, I've played it a long time, mostly on and off. But the desync has gotten to me and I cant stand it anymore, I love this game. Please let me enjoy it without desyncs.
Above content may contain traces of nonsense.

Reality is simply an unrealistic version of online gaming.
Yes, but the whole prediction system is more them just lowlag emulator, they could just "trust" the client instead of having the server calculating everything, they dont want it cze it will make the game more vulnerable to hacks, but cmon, cheaters wont annoy me as much as the desync problem even in a thousand years, this is not a pvp based game anyway
On "cheating":

It is not even relevant. The server still do the calculations. Not matter how much you cheat (walking faster or swing faster), you won't actually walk faster and swing faster on the server, since the server already performs all the calculations.

I just don't understand why the effort to create such a huge "prediction" system with endless headaches and desyncs and mismatches and other problems, when you can have the simple and elegant system of RTS system where server does everything, and there is nothing complicated to mess up in the first place, because it is a simple and elegant mechanism.

The entire post seems to be a huge stream of excuses and cover ups for a badly chosen design decision of making it such a complicated prediction system. None of it stands a ground when you actually apply logic to them. You either lag or you don't. You trying to predict and hide the lag doesn't make it lag-free, it just creates desync. If you use the simple RTS system, there is nothing to desync in the first place. You won't have such a can of worms to deal with.

Report Forum Post

Report Account:

Report Type

Additional Info