Client-server Action Synchronisation
"This is something I've advocated in the past. Link. I still believe more thorough client-side prediction is the key to resolving the bulk of PoE's desync issues. 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 Apr 25, 2014, 9:20:09 PM
|
|
" Computer specifications: Windows 10 Pro x64 | AMD Ryzen 5800X3D | ASUS Crosshair VIII Hero (WiFi) Motherboard | 16GB 3600MHz RAM | MSI Geforce 1070Ti Gamer | Corsair AX 760watt PSU | Samsung 860 Pro 512GB SSD & WD Black FZEX HDD Last edited by Nicholas_Steel#0509 on Apr 26, 2014, 2:01:50 AM
|
|
" Presumably the use of non-deterministic RNG is to impede the development of well oiled automation software. Computer specifications:
Windows 10 Pro x64 | AMD Ryzen 5800X3D | ASUS Crosshair VIII Hero (WiFi) Motherboard | 16GB 3600MHz RAM | MSI Geforce 1070Ti Gamer | Corsair AX 760watt PSU | Samsung 860 Pro 512GB SSD & WD Black FZEX HDD |
|
I admit I have not read through all the posts in this thread, so I apologize beforehand if this has already been mentioned:
There will be times where I have a totem with an attack on it up, and a monster comes towards me. The totem does not attack. I attack and do nothing to it - it is clearly a monster that is out of sync. A different monster comes towards me and the totem starts attacking. I can hit it as well, so it is not out of sync, relatively speaking. So how is it that my client knows enough that a monster is not really there to not show the totem attacking it, but is unaware enough that it shows the monster there to begin with? It is like the client has two sections of code that keep track of what is where, and they are not communicating with each other. This also flies in the face of the explanation of desync we get at the beginning of this thread. The client as a whole does not have a different view of things than the server. If it did, the totem would attack the 'phantom' monster. So, what's is GGG's explanation for this? EDIT: Since making that post, I envisioned a mechanism by which this could happen. The routine that determines if there is a hostile entity within range and line of sight on the client could be sending to the server a query "Is there a hostile entity within attack range of computer controlled object 123456 (the totem)" without mentioned the position of said object. The server returns that there are none. Therefore the totem does not attack. If the client did a parallel check of its own and found that it considered object 654321 (desynced monster) to be within attack range of object 123456, it would flag it as a desync, then query the server for the location of object 654321 and move the object to that location. "phantom" monster disappears. Last edited by sacremon49#0124 on Apr 26, 2014, 8:19:05 PM
|
|
"This happens because the client does not use prediction on any actions other than the player's character's actions. This means: even the very predictable behavior of totems is something which the client is not trusted to perform on its own screen, instead having to wait for a message from the server to indicate the totem is using its skill. The totem only fires when the server says it fires. The same thing is true of monster attacks: the client doesn't show their attack animation unless they are attacking on the server, because it waits on a message from the server before starting that animation. However, this does not apply to monster movement; desync can cause a monster to be be displayed as being pretty much anywhere, moving to pretty much anywhere. This is not true of current-player skills. (I say current-player because other players in your party follow essentially the same display rules as your totems.) The client shows your skill animations immediately, prior to confirmation from the server. Additionally, the game interprets mouse commands on a particular monster as targeting that particular monster where it is on the server regardless of where it appears on the client, which is how you accidentally find yourself in a room you never intended to enter; the monster you clicked on which you thought wasn't in the room, actually was. One of the things I find funny about Chris' statement that "wait[ing] until data arrives back from the server before doing anything... does not work well for Action RPGs" is that the only two things which the client doesn't wait on is the current-player's skill animations, and completing the pathing of previously server-ordered monster movement. Absolutely every other type of display does wait on the server. Perhaps that's why things aren't working well. 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 Apr 27, 2014, 4:34:08 AM
|
|
I get the feeling that the latency-affected model (client-server confirmation-before-action) would be a vast improvement for those with low latencies. At some latency I guess the model POE currently uses (client-does-something, server-corrects) is better. The question here is, would the vast majority of players fall under the first or second model?
I know this wont happen because GGG have already stated it would take a lot of effort, it would be nice if the player was given the option of which model they wanted to use. Low latency players would almost certainly prefer the latency-affected model, while maybe those with high latency would decide to use the other one. |
|
" Probably when they started to write the game engine average latency was 2-300+ms. But nowadays most people have 70-ms latency connections and they would play game quite smoothly on a wait-on-server model. Of course it wont happen, because they would need to rewrite the engine. |
|
One thing I have asked for before that I think would improve the quality of life for casters specifically when it comes to desync is an advanced option to turn off the automated movement.
Example behaviors when right-clicking on monster with the movement turned off: Out of mana: Character does nothing until enough mana has regenerated to cast. Out of line of sight: Character does nothing until monster comes back in to line of sight. Monster moves out of line of sight: Casting is interrupted and character remains stationary doing nothing. Also, I really wish you would teach the client/server to re-sync (forcibly bypassing the /oos CD) when Vaal comes back up and force the client to never draw him walking. I know he can't walk, you know he can't walk, the client really should know this as well. In game contact @MajorAsshole Challenge T-Shirt: 4/6 | Full Challenge Totems: 21/27 Last edited by Redblade#3843 on Apr 28, 2014, 1:45:34 AM
|
|
"I'm not sure what you mean by this. The Vaal Oversoul both can and does walk around. | |
" #rekt. |
|