Technical solution to eliminate desync in single-player sessions

Yeah, I believe there are a few solutions to the well-known floating point issues. However, I think the leniency solution is doable either way. =)
"
SkyCore wrote:
ridiculous.
I pity anyone who thinks you have the faintest idea of what your proposing.

I retract this statement as the error was mine in saying determining rather than validating. And i will grant myself a pardon for at the time you were proposing that the server validate gamestates without running a copy of the game.
Such things have been cleared up since then.
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 think the leniency solution is doable either way. =)


Maybe, but it is too dangerous. IEEE math is very strange: for example (a+b)+c =/= a+(b+c).

I f different compilers or different platform moves data form the CPU to memory in different way, or if multithreading do those moves automatically, things could go messy. For some unknown evil reason the intel FPU is 80 bit, which is not standard.
Roma timezone (Italy)
Last edited by HellGauss#6525 on Nov 20, 2013, 11:30:34 AM
The tiny rounding errors won't cause a problem probably, but the equality like you suggest may. I would hope that GGG is not testing equality on floating point values though, haha.

SkyCore: Sorry if I explained it poorly, its been a long day.
Last edited by qwave#5074 on Nov 20, 2013, 11:35:13 AM
"
Mysterial wrote:
This seems like an awfully large thread just to suggest the game be changed to run in lockstep.

"
LogoOnPoE wrote:

Well, not quite. It depends on what you consider running a copy of the game. Let's say when an RTS game allows you to watch a match playback, is it running a copy of the game?


Almost certainly it is. Many games implement replays as either network or input streams that execute the normal game logic in lockstep (using frame deltas stored in the replay data). The majority of the game code has absolutely no idea that it is a replay.


Practically yes, it's a lockstep, where server provides the seeds for random numbers, the client runs it's game and passes the actions and outcome to the server, and then the server runs the game in lockstep to verify the outcome.
"
qwave wrote:
The tiny rounding errors won't cause a problem probably, but the equality like you suggest may. I would hope that GGG is not testing equality on floating point values though, haha.

SkyCore: Sorry if I explained it poorly, it's been a long day.


Actually even tiny rounding errors can cause a serious problem if there are many steps in the calculation that are rounded to integer, and if I remember correctly from some Marks posts on skils, that is the case.
I thought that lockstep implied that the client would be waiting for a validated response before continuing. But I suppose this could be called 'asynchronous lockstep'. Not sure.
Actually no, I don't think it's lockstep. Lockstep implies that each system runs the simulation in parallel. In this proposal the client runs the simulation and then the server verifies it.

I actually think that Rhys_GGG thought the same thing. My intentions were for the server to perform the simulation when receiving a snapshot just to verify it. It's up to GGG really.
Last edited by qwave#5074 on Nov 20, 2013, 11:46:51 AM
"
qwave wrote:
Actually no, I don't think it's lockstep. Lockstep implies that each system runs the simulation in parallel. In this proposal the client runs the simulation and then the server verifies it.

I actually think that Rhys_GGG thought the same thing. My intentions were for the server to perform the simulation when receiving a snapshot just to verify it.


As I understand lockstep can be run both in parallel, and in delayed, and to either provide redundancy or to verify the output, as long as both machines operate on the same input.
"
qwave wrote:
Actually no, I don't think it's lockstep. Lockstep implies that each system runs the simulation in parallel. In this proposal the client runs the simulation and then the server verifies it.

I actually think that Rhys_GGG thought the same thing. My intentions were for the server to perform the simulation when receiving a snapshot just to verify it. It's up to GGG really.


What happens when the server comes back and says the client is wrong?

Report Forum Post

Report Account:

Report Type

Additional Info