Technical solution to eliminate desync in single-player sessions

"
Mark_GGG wrote:
"
qwave wrote:
Scrotie:

You can already currently do these things in Path of Exile. You can 'speed hack' during the period of latency since your last packet based on movement speed. The server will validate it and not desync you. Every MMORPG works this way. The paper was describing basic position prediction against latency.
No. You can't. All you can acomplish by this is getting out of sync with the server. Ther server does not "validate" your position from the client in any way, it accepts input that you issued a movement command at a certain time and knows how fast you can move. If you make yourself move faster on your client, that won't affect the server at all, and if you get too far apart, it will resync you when this is noticed.

The majority of Scrotie's criticism of this concept is correct. This is not remotely feasible to implement on the scale of something doing as many calculations on PoE due to bandwidth, and if it was, opens the door to incredibly easy hacks for simple things like the "stop sending data to fake disconnect when you die" so that the server never knows you died and thinks you disconnected just before then, and over time, more and more of the consequences of the seed would be mapped out, allowing more sophisticated hacks.

Furthermore, this entire thread is based on a false assumption:
"
qwave wrote:
I. PoE is not an MMORPG, it's a fast-paced action RPG

The client currently acts as a 'dumb terminal' which is continually streamed the game state from the server. The client's only responsibility is to render the game state and send input to the server. The client performs very little actual calculations, and instead relies almost 100% on the server to validate the game state. This means that the server is likely running an ongoing simulation of the game instance and is continually notifying the client of changes to the state based. Even introductions of small amounts of latency can cause desyncs (forcing the game client to the current authoritative game state).
Nothing here is correct with regards to the functionality of the game. The PoE client is not a dumb terminal.

If you want to know more about how PoE actually communicates between the client and server, I would recommend Chris's manifesto post (link here) as a good starting point.



who cares how it works. it still desyncs all the time :9 but what do i care :)
@Stodderkonge
"
MackTheKnife wrote:
eating by validating the snapshot. Both sides win, and half the bandwidth is used.


That isn't a rebuttal. I said that you do play some parts of the game on the server. What I also said is that some parts of the game are played on both the server and your client to make the game feel more responsive. Your client does not need authorization before your character can take each step, your character does not need authorization to attack and here's some examples of that:[/quote]

The point was that the step doesn't count unless the server retroactively okayed it. The attack doesn't count unless the server retroactively okayed it. Playing the animations the client already does, it knows how to do all the actions, and displays them, but it has to call back for any of it to count. The proposal offers a possible way to allow the server to retroactively correct it's state, instead of forcing the client to play catch-up with the server all the time.

Not that any of it matters, the devs disagree with the premise.
"
DestroTheGod wrote:
"
qwave wrote:
Mark, it's clear that you have not read my proposal, or you do not understand the manner in which Path of Exile's synchronization works at a technical level. This may further explain the root cause of these desync problems.


Shit. Just. Got. Real!

I think it's great to see the true champions of desync come together on this issue. Deep down, this tickles the CS major in me :3

I must say, this is quite a fascinating read. KEEP GOING GUYS!

I'm getting the popcorn.


ROFL I was thinking the same, shit just got real! What's funny is that OP was extremely civilised throughout this whole thread I think (I read almost all of it but maybe I missed something)... but the moment a dev set foot on the thread he went all "agressive muthafuka mode ON". ROFL. Popcorn here too bro.
IGN: ZiggyStar
Last edited by ZiggyStar#0834 on Nov 18, 2013, 6:14:58 PM
I'm offended that Mark_GGG would reply in such a way that was clearly some copy-pasta that indicated a gross misunderstanding of the entire desync situation. Even the link he pasted does not work.

The community as a whole is extremely passionate about getting desync solved. I spent numerous hours gathering the information and proposing a proven solution that works. It's clear that desync will not get fixed due to sheer ignorance at this point.
Last edited by qwave#5074 on Nov 18, 2013, 5:22:58 PM
"
qwave wrote:
The client would still be sending the same amount of data.
NThe client would need to send everything it already does, as well as a lot of extra data about monster rolls in combat/ai and so on that it currently doesn't. By definition, that's more.

"
qwave wrote:
"
Mark_GGG wrote:
and if it was, opens the door to incredibly easy hacks for simple things like the "stop sending data to fake disconnect when you die" so that the server never knows you died and thinks you disconnected just before then
I have addressed this by saying that there would need to be a Town Portal / Log Out timer of 3-4 seconds in order to prevent this sort of activity.
Chris has already posted in other threads why that's not desirable. We really don't want to do this.

"
qwave wrote:
The PoE client IS a dumb terminal. and its only role is to send input and update the game state received from the server. It does not perform any of the calculations locally
Yes it does. When you perform a skill, that happens on the client immediately, and on the server as soon as it receives that input. The client doesn't handle damage, but it does do pathing, targeting, and so on, so that we can have immediate feedback on what you're doing (as discussed in chris's post), as opposed to giving an input and then waiting for the server to tell us we've started the skill.
I have been writing the skill code that executes and does calculations on the client and on the server for nearly three years now. If the client is a dumb terminal that does no calculations, then probably half the work I've done in that time never happened.

"
qwave wrote:
Mark, it's clear that you have not read my proposal, or you do not understand the manner in which Path of Exile's synchronization works at a technical level. This may further explain the root cause of these desync problems.
I have read your proposal (but not the entire thread yet, so may have missed some later updates to it. However, I have been working on skills and fixing thei bugs with them that cause sync issues for some time now, and based on your comments here you have some misunderstandings about the way PoE works under-the-hood with regard to client-server communication. I am not an expert in the field, and my contributions are limited to stuff where skills operate differently on client and server because of bugs (for example, the check for an action being executed from too far away was happening a second time ont he client in some cases of charging rhoas - fixing that reduced the amount they got out of sync by quite a lot).
"
qwave wrote:
Mack, by definition you've described a dumb terminal. It has no ability to perform these calculations on its own. The client DOES need authorization to take each step. This is why you desync when trying to walk through doors.

Mark_GGG has clearly demonstrated that he does not have an understanding of how the game client works. I would like to know ONE thing that the game client is able to perform on it's own accord.
Pathfinding and targeting all occur on the client, as well as simultaneously on the server. In the case where they disagree, the server is treated as authoritative because it can be trusted, but those things all still happen on the client, and mostly they agree with the server, and don't get corrected.
Last edited by Mark_GGG#0000 on Nov 18, 2013, 7:08:44 PM
"
qwave wrote:
Mark_GGG has clearly demonstrated that he does not have an understanding of how the game client works. I would like to know ONE thing that the game client is able to perform on it's own accord.


Oh naw he di-int! Someone'sa bout to get served. Who will it be? Only Randy Marsh knows.
Current IGN: TheBearerOfLight
Gizoogle Chris: "Da State of Exile muthafuckas axed mah crazy ass ta post a reminder dat they podcast is dis weekend, as usual. It aint nuthin but tha nick nack patty wack, I still gots tha bigger sack."
I, for one, don't know and don't care how the game network is coded. As a simple user, I have issues during gameplay, issues that I haven't encountered in other games (desynchronization).
I wish the devs would fix it instead of giving explanations on why it's not working...
"
Mark_GGG wrote:
No, it wouldn't. The client would need to send everything it already does, as well as a lot of extra data about monster rolls in combat/ai and so ont hat it currently doesn't. By definition, that's more.


The server would use the same deterministic seed to reproduce the client's interaction without the client needing to inform it of this extra data. That's the entire point of the seed in the first place. The server is able to reproduce the client's state without the client providing the full state.


"
Mark_GGG wrote:
When you perform a skill, that happens on the client immediately, and on the server as soon as it receives that input.


Not true, the skill does not 'happen immediately'. It must perform a full round-trip to receive the results of the skill. This is because the client does not have a deterministic seed to produce the same simulation as the server. The client does not have the intelligence to perform the same simulation. Again, you are not understanding the architecture.


"
Mark_GGG wrote:
I have been working on skills and fixing thei bugs with them that cause sync issues for some time now, and based on your comments here you have some misunderstandings about the way PoE works under-the-hood with regard to client-server communication.


There should not be any synchronization issues in the first place. The client should be using a hash to reproduce the same state. The server does not need to do constant sanity checks, it only needs to do a single sanity check at the end of the session using the deterministic snapshot history.

If you think that you are fixing desync issues by modifying the skill code, you are traveling down the wrong path. The desync has absolutely nothing to do with your skill code, so why would you even remotely suggest that?



Mark_GGG, this architecture is in the 'dark ages' of network synchronization. Please explain to me why the client cannot use a deterministic hash to generate a valid state without the server's authoritative response.
Last edited by qwave#5074 on Nov 18, 2013, 5:35:02 PM
I too wonder about the self-confidence that outright brushes off one of the most verbose and demonstratively knowledgeable developers of the game as not fully understanding how the very same game works.
Have you made a cool build using The Coming Calamity? Let me know!
"
qwave wrote:
"
Mark_GGG wrote:
When you perform a skill, that happens on the client immediately, and on the server as soon as it receives that input.


Not true, the skill does not 'happen immediately'. It must perform a full round-trip to receive the results of the skill. This is because the client does not have a deterministic seed to produce the same simulation as the server. Again, you are not understanding the architecture.


I don't know why you are trying to argue the toss with someone who has far more experience in how the game works, if he tells you that you are wrong about these things you can bet yout bollocks that he's right about it, your problem is that your to thick to realize the problem with you "bright" idea and refute anything that anyone might say because you couldn't possibly be wrong....welp, you are...totally.
Ancestral Bond. It's a thing that does stuff. -Vipermagi

He who controls the pants controls the galaxy. - Rick & Morty S3E1
Last edited by lagwin1980#2224 on Nov 18, 2013, 5:32:58 PM

Report Forum Post

Report Account:

Report Type

Additional Info