Technical solution to eliminate desync in single-player sessions

"
qwave wrote:
"
So if I have the seed, even if the client is sending snapshots every second, I could calculate the best move every second by calculating the outcome for every variation before I send the snapshot.


The seed can change hundreds of times per second. There is not a feasible way to predict the outcome of your actions. Since any action you have will take time to execute, the seed will have rerolled before your action even completes. ;-)


I'm sorry, but you're wrong. If you give me the seed, I can calculate the outcome which is best for me 1,000+ times a second. The client cannot be trusted.
"
adghar wrote:
"
qwave wrote:
Rhys definitely has one of the hardest jobs in game development. He has to consider countless factors that may impact gameplay. That being said, I think the GGG development team needs to spent more resources on this effort. I think some huge gains can be made.


I can't deny that I've often wondered why GGG doesn't just hire a few more codewarriors with lots of experience in the industry and/or with client/server synchronization and just hammer out some better code. It feels kind of ridiculous sometimes how much desync can happen on 60 ms stable ping and no movement skills. Sure, it's more complicated than just converting time into good code, but the layman's impression is that there's got to be a better way.
'


Hopefully more people support GGG through the shop or future support packs.
AMD Ryzen 7 5800X
MSI RX 2080
Samsung 980 Pro SSD
32GB GSkill Trident-Z
Last edited by Eep#5463 on Nov 18, 2013, 11:44:50 PM
It would be nice for GGG to come out and say they are devoting significant resources to this problem and willing to do whatever it takes to fix it. Instead I'm reading things like they are hoping to improve the sync in the future, that is not the kind of thing the gives people lots of faith. That fact that other small balance related items and additions seem to be taking precedent over this gaping hole is disconcerting.

A purity nerf is small potatoes next to an unplayable-at-times game.
"
Malero wrote:

I'm sorry, but you're wrong. If you give me the seed, I can calculate the outcome which is best for me 1,000+ times a second. The client cannot be trusted.

Praise RNGeesus. You have seen the light.
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
"
SkyCore wrote:
"
Malero wrote:

I'm sorry, but you're wrong. If you give me the seed, I can calculate the outcome which is best for me 1,000+ times a second. The client cannot be trusted.

Praise RNGeesus. You have seen the light.


Just think about it. If you know how to make a snapshot that will be validated, even if it's validated very frequently, you can run simulations for a large number of snapshots to find one that yields the best outcome and send that one to be validated.
Last edited by Malero#2160 on Nov 18, 2013, 11:23:25 PM
Thx GGG you replay in this thread too.


People learn to live with it and adapt your gameplay to the engine. You have adepted to so much in your live already. I did it and have no trouble with desync. Ofc if i try to rush things i get desynced if I do not care and I do not use /oos
Why you should try Harcore http://www.pathofexile.com/forum/view-thread/209310/page/1
Last edited by tadl#0113 on Nov 18, 2013, 11:23:11 PM
"
qwave wrote:
This is where you are not understanding. The seed is used to generate each new outcome. If a player moves to a new location, it reseeds the data, which means the mob's movement is now using the new seed.


Well, I'm pretty sure I have a firm grasp of what seeds are and how they are used. Ever willing to be told differently however.

Let's imagine a 3 second slice of time, with seeds (snapshots) generated every second. We'll use the first digit of each seed to determine movement of mob.

Second 1
Seed: 1492
Movement: North

Second 2
Seed: 4563
Movement: South

Second 3
Seed: 8342
Movement: SSE

Simply put, there is no way to use constantly random data to move a mob in any particular direction (say towards the player). I see what your trying to say, but it's just not possible - random data makes for random movement.

"
qwave wrote:

The seed is not used for 'prediction'. It is used to generate random numbers. The server does not need to perform any sort of prediction.


I'd be curious to see how you solve projectiles and moving targets without prediction.

Don't feel the need to respond quickly (or at all if you don't want to), just the musing of of a random stranger.

EDIT:
Okay, well I see a dev answered qwave, so now I feel silly for pushing him (qwave) for more answers. That's all I was trying to do, flesh out his responses so a dev wouldn't have to. (You were a little light on the details :P )
Last edited by MeltingPoint#1763 on Nov 18, 2013, 11:35:58 PM
this threads makes me feel very lacking in technical knowledge.
IGN: Arlianth
Check out my LA build: 1782214
"
Rhys wrote:
As the programmer responsible for maintaining the client/server synchronization of the random level generation, I can tell you that this sounds like a nightmare, for a few reasons.
...

Just my 2c.


Great post Rhys, with excellent points. It's great to see such a thorough response from GGG.
IGN: SplitEpimorphism
"
MeltingPoint wrote:
"
qwave wrote:
This is where you are not understanding. The seed is used to generate each new outcome. If a player moves to a new location, it reseeds the data, which means the mob's movement is now using the new seed.


Well, I'm pretty sure I have a firm grasp of what seeds are and how they are used. Ever willing to be told differently however.

Let's imagine a 3 second slice of time, with seeds (snapshots) generated every second. We'll use the first digit of each seed to determine movement of mob.

Second 1
Seed: 1492
Movement: North

Second 2
Seed: 4563
Movement: South

Second 3
Seed: 8342
Movement: SSE

Simply put, there is now way to use constantly random data to move a mob in any particular direction (say towards the player). I see what your trying to say, but it's just not possible - random data makes for random movement.

"
qwave wrote:

The seed is not used for 'prediction'. It is used to generate random numbers. The server does not need to perform any sort of prediction.


I'd be curious to see how you solve projectiles and moving targets without prediction.

Don't feel the need to respond quickly (or at all if you don't want to), just the musing of of a random stranger.



It wouldn't be random because GGG would have to give the client the ability process what their server processes now: the enemy AI. The client would basically be running it's own server and sending in a snapshot of what happened to the real server to be validated. It wouldn't work. The client cannot be trusted.

Report Forum Post

Report Account:

Report Type

Additional Info