Technical solution to eliminate desync in single-player sessions
" Current implementation has the server assert gamestates, your design in effect has the client assert gamestates and the server checks it. HUGE difference. 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
|
![]() |
" You could not possibly be more wrong with that statement. 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
|
![]() |
" The client does not send game state in my proposal, it sends the actions it performs. Believe me, I know my own system. It sends the exact same data that the PoE client currently sends. Look at the code. Last edited by qwave#5074 on Nov 21, 2013, 4:16:22 AM
|
![]() |
" I never said that it sends gamestates. Your argument is invalid. 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
|
![]() |
" The code requires some interpretation, as you've mentioned. (which is bad, because code should just run. But the code posted has a big if-branch that main() never calls, as main() only simulates sending one packet) The main difference between the code you've posted and what PoE does right now is that under your system the client has full predictive power, and so you can "solve" the game. (Also there's some syncing issues that PoE has where the server's clock is authoritative [I think?].) Earlier in the thread you outlined some ways that the server can stop that kind of manipulation. The code doesn't reflect those ideas at all. I actually think the posted code hurts your argument as is, because it makes the idea look less fully developed. IGN: SplitEpimorphism
|
![]() |
" I'm not sure "assert" is a proper word for what you described then. IGN: SplitEpimorphism Last edited by syrioforel#7028 on Nov 21, 2013, 4:23:39 AM
|
![]() |
qwave, as people were saying, you can not fully trust that approach. It increases the complexity quite nice I must admit.
Your function "var rng = (seed.Next() % timestamp)" and then using "Random(Convert.ToInt32(rng)).Next(1, 10)" increases the complexity of finding favorable situations, but it does not eliminate the possibility. What I can do is this: for(i = 0; i < [ammount of actions to rearange]; i++){ array = seed.Next(); } for(j = 0; j < [ammount of actions to rearange]; j++){ for(i = 0; i < 1000; i = i + 10){ arrayRNG[j] = array[j] % i; } } simulate the "Random(Convert.ToInt32(rng)).Next(1, 10)" with all the values of rng from arrayRNG, pick the best outcome for each action you want to arrange in the best order, use that i as timestamp delta. Your approach does increase the complexity massively, but it's still now impossible. However this might be expansive enough not to make it possible in real time. |
![]() |
" This is easy to do in my example, but with the PoE client, this is going to be nearly impossible. This is because any permutation you calculate are not necessarily 'optimal' (it may have other effects, such as getting you insta-killed). Anyway, please read my main post on this particular topic. I provide more information in it. Last edited by qwave#5074 on Nov 21, 2013, 4:28:24 AM
|
![]() |
" Congratulations, you just summarized the entire point of the thread. |
![]() |
" I wrote the code in 20 minutes as an example to demonstrate seed determination and how the server performs the simulation. What else do you want me to code for you? I'll do it. Last edited by qwave#5074 on Nov 21, 2013, 4:30:28 AM
|
![]() |