Technical solution to eliminate desync in single-player sessions
" Proof that PoE is a dumb terminal: When you swing your sword in an attack, your client is unable to calculate whether it hit. It requires a full round-trip from the server in order to validate whether the hit landed. With my proposal, the client would use a deterministic seed to determine if the hit would land, and the server could approve this action WITHOUT sending a response. Therefore the client stays in sync without the server's input, and the server can prevent cheating by validating the snapshot. Both sides win, and half the bandwidth is used. Last edited by qwave#5074 on Nov 18, 2013, 5:48:16 PM
|
![]() |
iam a dumb terminal too
##becouse i dont understand a fuck you guys talking about but its still entertaining keep it up |
![]() |
Thanks, Mark. This guy is stubborn and I could use some yellow border.
And yes, you're right, PoE isn't a "dumb terminal," because it has this whole GGPO thing it's trying to do. But I think what he was trying to get at is that we believe rather strongly in not trusting the client around here, keeping things on-server to ensure a secure environment. "In other words, you have no qualms killing the characters of the innocent victims of power and internet outages. I actually would like to see a brief delay added to the menu logout function. Here's how it would work: the client plays dead. Utterly, just as if the victim of an outage; low-grade firewall if necessary. After a brief delay, the server reads the client as disconnected and logs him out, quickly and with any additional delay, as is the only way to treat the innocent victims of power and internet outages; despite this, it sends one last message to the client, just because it's a program and it's been told to. Upon receiving this message, the client says "psych!" resumes communication, and proceeds to the character selection screen. Notice the theme there, however: innocent victims are suffered absolutely no delay, only people manually logging out are given any delay at all, and the delay is always uniform: it's the amount of time it takes the server to believe the client has disappeared. Any kind of further logout/disconnection/alt+F4 delay is unethical and should never be implemented. Thankfully, GGG has made it clear that they don't intend to. When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted. Last edited by ScrotieMcB#2697 on Nov 18, 2013, 5:54:39 PM
|
![]() |
The 'dumb terminal' simply means that it contains no authority or means to produce calculations on its own. It relies 100% on the server for all actions. I have never suggested trusting the client. I am suggesting that the client be validated at the end of the session. It does not need to be validated in realtime, as all we gain from it is desync.
People that disconnect may die in hardcore, that is more forgiveable than dying due to desync. Last edited by qwave#5074 on Nov 18, 2013, 5:58:24 PM
|
![]() |
"A moot point, since your solution doesn't fix it. When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
|
![]() |
My solution eliminates desync completely, but does not fix death due to disconnects.
|
![]() |
" I think this thread is based on the true fact that desync is extremely annoying. Roma timezone (Italy)
|
![]() |
" That isn't a rebuttal. I said that you do play some parts of the game on the server. What I also said is that some parts of the game are played on both the server and your client to make the game feel more responsive. Your client does not need authorization before your character can take each step, your character does not need authorization to attack and here's some examples of that: You attack a rhoa, your whole attack animation goes off an your arrow hits the rhoa. The rhoa however doesn't take any damage, because your client needs to ask the server how much damage it did and the server doesn't even see how you could have attacked that rhoa since it was behind a wall. At this point you can tell that you are desynced. You chug a mana flask and cast fireball at a rhoa. All this happens but it doesn't take damage. Turns out your connection hiccuped for a second, your computer and the server begin communicating again and your flask refills because you never actually told the server you drank it and the rhoa still takes no damage because you never could have shot the fireball without drinking your flask. |
![]() |
Mack, by definition you've described a dumb terminal. It has no ability to perform these calculations on its own. The client DOES need authorization to take each step. This is why you desync when trying to walk through doors.
Mark_GGG has clearly demonstrated that he does not have an understanding of how the game client works. I would like to know ONE thing that the game client is able to perform on it's own accord. Last edited by qwave#5074 on Nov 18, 2013, 6:16:45 PM
|
![]() |
"No, it doesn't. The client does perform these calculations on its own; the server also performs them, and doesn't care one lick what the client's answers are, overwriting the client's answers in the event a disagreement is detected. No, your client does not need authorization to take each step; it does so without waiting on the server, but then the server reserves the right to resync the client's steps to another location; authorization and verification are not the same thing. When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted. Last edited by ScrotieMcB#2697 on Nov 18, 2013, 6:17:54 PM
|
![]() |