Technical solution to eliminate desync in single-player sessions

"
qwave wrote:
"
The server is attempting to validate client data using logs submitted by the client. But in doing so it assumes the log submitted by the client is correct.


It validates the same way as the server does now. If you send a movement command to the server, it validates whether it's possible. My system does the exact same thing.

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
"
qwave wrote:

I can't understand how nobody recognizes that the server in my proposal validates stuff in the EXACT same manner as PoE currently does.

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
"
Current implementation has the server assert gamestates, your design in effect has the client assert gamestates and the server checks it. HUGE difference.


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
"
qwave wrote:
"
Current implementation has the server assert gamestates, your design in effect has the client assert gamestates and the server checks it. HUGE difference.


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.

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
"
qwave wrote:
"
Current implementation has the server assert gamestates, your design in effect has the client assert gamestates and the server checks it. HUGE difference.


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.


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
"
SkyCore wrote:
"
qwave wrote:
"
Current implementation has the server assert gamestates, your design in effect has the client assert gamestates and the server checks it. HUGE difference.


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.

I never said that it sends gamestates. Your argument is invalid.


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.


"
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.


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
"
WormholeHillbilly wrote:
dunno about anyone else, but even if he's wrong about some stuff, i'm still on team qwave lol.

Congratulations, you just summarized the entire point of the thread.
"
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.


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

Report Forum Post

Report Account:

Report Type

Additional Info