Why desync is fixable:
" Fighting games use AI? Just consider the stuff that is going on. A fighting game got 2! characters with a limited amount of what they can do. An action rpg got a lot more stuff going on, like 'if this AI does this how does it affect the movement the character should make? If it affect the character in this way and AI² does this it is also affected by action' etc. etc. The posibilitys in easy situations are nearly endless in a game like this and if you understand stochastic basics, you understand that the more possibilitys the more stuff can go wrong. That is why it may work there, but may not work here. I don't have any doubt that they can shrink desync by optimizing what they got, but they will never eliminate all of it. Last edited by DE3me#2347 on Sep 13, 2013, 3:05:42 PM
|
![]() |
" Because it is p2p. It works because clients can communicate fast and usually with *small* amount of data (there is no 'server' that have to handle thousands players). In the home page of ggpo, there is no mention of prediction code. I'm also very curious on how this generic 'prediction' algorithm can works with ANY game. I would not be surprised if the generic algorithm is 'perform the simulation as if the opponents give no commands, then, when you received the (timestamped) command from the opponent, roll back and recalculate again up to current time' or something a little bit more elaborate but similar (i do not think that it can go further to some very basic statistic, i.e. there is no AI involved). Maybe the lib provides some basic tools to write specific prediction code, which however must be written ex-novo for PoE. Last but not least GGPO is designed to work with two non-detemrinistic human player in a deterministic enviroment, not with a human and a server. However I agree with you that with better servers and more bandwidth desync could be (nearly) eliminated in PoE, even with current design. How much more? I do not know, but i think very much more. PS interesting link on how GGPO works: http://www.gamasutra.com/view/news/177508/The_lagfighting_techniques_behind_GGPOs_netcode.php Roma timezone (Italy)
|
![]() |
" A dueling fighter game is not only 2D, it's a deterministic simulation, something that PoE was never designed to be. In a deterministic game, the only unpredictable things that occur are player controller events. All other game events are generated by PRNG mechanisms that use a common random number seed. With this type of design, an entire gaming session can be precisely recreated by restoring the PRNG seed and playing back the recorded (and timestamped) data streams sent by each player's controller. Since the game is completely deterministic, synchronization is guaranteed by sending to each player's simulation the controller data stream from the other player(s). The recorded timestamps cause each simulation to recreate the session with exactly the same results, regardless of online latency. In practice, latency may cause perceptible rubber-banding effects, but will not affect the outcome of any action. Since PoE is not deterministic, it cannot rely on simply transmitting controller data streams to all players. It must instead calculate the positions and actions of all objects in the game, using predictions based on its current game state, combined with the actions of the local player. When client and server game states diverge, the server must eventually correct the client's game state with updated position and event data. Since the client does not have access to all controller events, it cannot recreate the processes that produced the client's game state. The client must instead replace its diverged game state with the server's, and use that as the basis for new predictions. If the divergence was too great, some of the client's predictions may be invalidated by those of the server, and produce transient discrepancies in the outcomes of events predicted by the client. |
![]() |
I think that should answer the question.
By the way, this was how an argument should look like and not this 'well we don't like it so we don't even try it' shit or this 'that will never work, because i can't play on 50ms' bla. |
![]() |
" This is probably the worst error GGG did. I hope that it is fixable. In spite of all, the simulation on their server is of course deterministic. Roma timezone (Italy)
|
![]() |
"While RogueMage raises some good points that a non-deterministic gamestate is indeed far more difficult to predict than one that is not, I don't believe that means a deterministic gamestate is necessarily a mistake. It just means it's harder to netcode. If they find a solution around it, then it's not a mistake anymore; if they never find a workaround, then I guess it is a mistake. 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.
|
![]() |
it is not only about netcoding. Quoting from the article I linked:
" and from the Roderick Hossack post (see the end of the article) " GGPO is based on determinism. " This is indeed tautologic. To solve or alleviate desync problem in PoE with current design, you have 1) to decrease the information needed for a correct representation of the game on the client and / or 2) to increase the bandwidth with new servers (EDIT: or to provide a better communication channel) Prediction code helps with point 1), but since the uncertainty is hidden in RNG rolls (i.e. combat results, monster movements, etc...), i think that you cannot predict too much. Better netcoding helps instead with point 2), but even with a perfect netcode (e.g. using udp packets) you would gain a few % with respect to the current situation, whereas desync needs a massive fix. The solution is to work on point 1), but since the problem is the RNG, the only way is to comunicate the RNG-seed(s) to the client (with some limitations as I described in another thread). This basically means that the game becomes deterministic. Roma timezone (Italy) Last edited by HellGauss#6525 on Sep 14, 2013, 2:08:03 PM
|
![]() |
" or you just take another approach. (like the one the thread suggests) |
![]() |
Exactly
|
![]() |
Stability of ping has nothing to do with desync (i mean the heavy desync like the room-teleport). The problem is that the client needs lot of informations to be updated, and GGG can send these information only once in a (long) while. You are complaining both with the aforementioned point 1) and 2).
PS I updated point 2) with a more precise description. Roma timezone (Italy)
|
![]() |