Technical solution to eliminate desync in single-player sessions

"
HellGauss wrote:

the gameplay is defined in a cristalline a-temporal universe.

Time is a fundamental all reaching aspect of any reality. I think one of us is confused as to the meaning of a-temporal in this context.
As for your overall scheme =edit= whoops reread it
For years i searched for deep truths. A thousand revelations. At the very edge...the ability to think itself dissolves away.Thinking in human language is the problem. Any separation from 'the whole truth' is incomplete.My incomplete concepts may add to your 'whole truth', accept it or think about it
Last edited by SkyCore#2413 on Nov 20, 2013, 3:50:08 PM
Hi Rhys,

I appreciate you taking time to respond to all of us. I have an honest inquiry my friends and I have been debating. I understand desync happens in online games because of the inherent latency issues. I play PoE with a consistent (mostly) 60 ping. However, I do encounter 1-4 seconds of major desync fairly regularly. (You know, the whole warping to another room, surrounded by enemies.) I’m trying to wrap my head around how this 1000-4000ms “dead zone” can happen.

It seems that if my latency is 60ms, then every 60ms my game should be updated by the server to adjust to the correct “hash state” or whatnot. We could even round up to 100ms, to give 40ms for the server to do all the complicated computations you have figured into PoE, as opposed to how Diablo 3 uses some clever (but compromising) workarounds. 40ms for processing time seems exceptionally generous for server and client calculations, but fair enough.

So how can a 1000-4000ms desync ever occur? With a 100ms round trip, my machine should be updated 10-40 times over that large desync “dead zone”. It is as if the server just shuts down from time to time and refuses to properly send data to my machine. The server “allows” me to continue playing as almost a bad joke. As everyone knows, 1-4 seconds of desync means almost certain death against rares or bosses and such.

I hear you saying PoE doesn’t use sort of clever hacks like D3, but I literally cannot fathom how PoE can allow 1-4 seconds of desync to happen. This literally is about 10, 20, 30, or 40 times longer than should ever happen (barring physical disconnection), in my non-technical understanding.

I love PoE. I hate desync. It ruins Hardcore, and for now I’ve quit playing Hardcore. I sincerely hope my questions gives you more ideas on how to solve this issue. In honesty, I’ve been telling people I believe PoE has some serious miscalculations or lack of safety checks because I cannot fathom this 1-4 second massive desync. I mean no offense by my statements. I know you work very hard on PoE. Thank you for the game.
"
ScrotieMcB wrote:
I don't believe a failure to predict character position is the cause of most problems. For example, the most famous desync example — teleporting into a room — is a failed character position prediction caused by a failed monster position prediction. I believe stunned-in-transit desyncs account for a very small percentage of the big picture.


It's true that most often you notice desync when you're trying to attack the monster, who's location is predicted incorrectly. But it's possible that the monster location prediction is incorrect, because player location was predicted incorrectly. Let's say there are a bunch of monsters in a room, and one outside the room. you attempt to go into the room and then out, to lure some of them outside. But on the server the monster that was outside of the room stunned you, while on the client it did not. Now the client predicts that you went into the room, got out, and the monsters in the room are coming out. But on the server you never entered the room because you were stunned on the way in, and when you try to attack one of the monsters that are coming out of the room, you are actually moving into the room on the server.
"
Brumbek wrote:
Hi Rhys,

I appreciate you taking time to respond to all of us. I have an honest inquiry my friends and I have been debating. I understand desync happens in online games because of the inherent latency issues. I play PoE with a consistent (mostly) 60 ping. However, I do encounter 1-4 seconds of major desync fairly regularly. (You know, the whole warping to another room, surrounded by enemies.) I’m trying to wrap my head around how this 1000-4000ms “dead zone” can happen.

It seems that if my latency is 60ms, then every 60ms my game should be updated by the server to adjust to the correct “hash state” or whatnot. We could even round up to 100ms, to give 40ms for the server to do all the complicated computations you have figured into PoE, as opposed to how Diablo 3 uses some clever (but compromising) workarounds. 40ms for processing time seems exceptionally generous for server and client calculations, but fair enough.

So how can a 1000-4000ms desync ever occur? With a 100ms round trip, my machine should be updated 10-40 times over that large desync “dead zone”. It is as if the server just shuts down from time to time and refuses to properly send data to my machine. The server “allows” me to continue playing as almost a bad joke. As everyone knows, 1-4 seconds of desync means almost certain death against rares or bosses and such.

I hear you saying PoE doesn’t use sort of clever hacks like D3, but I literally cannot fathom how PoE can allow 1-4 seconds of desync to happen. This literally is about 10, 20, 30, or 40 times longer than should ever happen (barring physical disconnection), in my non-technical understanding.

I love PoE. I hate desync. It ruins Hardcore, and for now I’ve quit playing Hardcore. I sincerely hope my questions gives you more ideas on how to solve this issue. In honesty, I’ve been telling people I believe PoE has some serious miscalculations or lack of safety checks because I cannot fathom this 1-4 second massive desync. I mean no offense by my statements. I know you work very hard on PoE. Thank you for the game.


PoE relies on lots of prediction and low frequency updates (as a whole), probably due to design/hosting considerations many years ago.

You are probably used to games with high frequency, high bandwidth UDP broadcasting (or something similar at least), PoE just doesn't work like that due to their insistence on relying on prediction to a rather frightening degree.

When prediction fails horribly (that is it crosses one of the error thresholds regarding temporal and spatial state) the game resyncs some of that state and you can get heavily discontinuous behaviour, the warping or teleporting people generally associate with PoE's desync.
"
HellGauss wrote:
There is no need of a 'realtime' running of instance on the server. Nobody is playing on the server and enjoying the game. The server should only check that the command of the client are legit. It is not the server that is moving monster, it is the client/server shared algorithm that do that.

The way to do that is determinism. As long as initial conditions are the same both on the client and the server and the command are legit, the gameplay is defined in a cristalline a-temporal universe.

LOL, dream on, keep imaging what the game would be like if every precisely identical simulation was running in perfect open-loop synchronicity via super-luminal instantaneous communication.

Yes, keep dreaming, until the day you receive that job offer from GGG...
"
SkyCore wrote:

As for your overall scheme, very similar to qwaves.
Could it be made to work: yes
Would it reduce security: yes
Would it cost millions: likely
Is it your decision to make: no


I see this on the other side, with respect to current implementation:

Could it make to work: No
Is it insecure/cheatable: yes
Has it costed millions: Likely
Is it my decision to make: no

You can argue that since it has already been spent for this system, it is better than nothing. But if a new system should be developed and it cost millions, i would like at least that it works.
Roma timezone (Italy)
"
SkyCore wrote:

Could it be made to work: yes
Would it reduce security: yes
Would it cost millions: likely
Is it your decision to make: no


I seem to unable to keep up with the thread, so I'll just say this:

The proposed solution is not a holy grail to solve desync, there's no such solution. It has it's flaws and it's strong points compared to other solutions. It is however better thought out than 95% other posts on the forums, and I would at least like to see that GGG, specifically Rhys fully understands what is proposed, before deciding whether it's flaws are too severe to implement or not. So far there seemed to be some miscommunication.
My mistake guys i deleted most of his quote while making that post. Remembered something about server is not running the game and jumped to, i could make that work.
Totally incorrect i know. im sorry
Unless of course we do get that holy grail of faster than light communication.
Actually....
The more times i read his original post the more im confused.
For years i searched for deep truths. A thousand revelations. At the very edge...the ability to think itself dissolves away.Thinking in human language is the problem. Any separation from 'the whole truth' is incomplete.My incomplete concepts may add to your 'whole truth', accept it or think about it
Last edited by SkyCore#2413 on Nov 20, 2013, 4:00:00 PM
"
Rhys wrote:
"
qwave wrote:
The server only needs to simulate the implicit values to arrive at the explicit values. Can you provide an example on what seems unreasonable? Again, the server's role is to arrive at the same values. The client's role is to produce the minimum state for the server to arrive at these values.

I don't see how the server can know where the error occurred. It has one start point, one (suspect) end point, but all you can do is run the simulation forwards and see that it doesn't match what the client has. You can't just switch over to the client's values and run it backwards. That doesn't tell you anything. Besides, some calculations CANNOT be run backwards, because there are multiple inputs with the same output, etc.

Also, I wonder why is your "lockstep synchronization" solution so different to what other games do? All the others seem to say that you need to sort out the FP determinism to make it work (unless you rely on resync packets). No-one else has error-correcting like this.


Nice explanation of why the PIE IN THE SKY solutions never work.

Fight censorship
https://www.reddit.com/r/The_Donald/
Come on guys, do not troll....

There is no need of a REALTIME representation of gamestatus on the server. There is only need of a not-so-much-delayed check of the integrity of commands sent by the client to the server.
Roma timezone (Italy)

Report Forum Post

Report Account:

Report Type

Additional Info