Fix Desync

"
agbudar wrote:
desync is simply something you have to deal with with any game.

even with big games from big game companies.

granted the desync in PoE is quite bad but thats to be expected from an indie company.
as much as some people have payed for with this game (i shudder to think how much a certain person put into this game) it simply is not the same as what these other big companies get for funds and servers and whatnot.

anyways i don't think GGG can keep saying that they are an indie company for much longer.
regardless of all the PoE is dead threads out there the popularity of the game is growing.


Factually incorrect. Desync is NOT something you have to deal with in every game. There are ways of dealing with it.
my evasion is so high i only insta rip sometimes
-----
Bug Fixes:
People were using cyclone for actual melee builds, so we nerfed it and made blade vortex. Also, we went ahead and made cyclone great for CoC casters while we were at it.
"
ScrotieMcB wrote:
I've said this before. I'm saying it again. Going to try to make this as clear as possible.
Definitions

* impetus: phase in an action when it is determined an action will happen, ex: player clicks mouse or monster AI process
* exposition: the action carried out in terms of visuals and movement data, ignoring other effects
* results: numerical data changes caused by an action, such as damage or crit yes/no; can be an impetus for a new action, ex: damage freezes
* wait on server: client does not proceed until it gets data from server; server has valid info first
* trust client: server depends on data from client and does not (or cannot) verify on its own; client has valid data first
* independent: both client and server perform same calculation separately, using shared PRNG seed if necessary to ensure identical RNG rolls; client and server have valid data simultaneously
Here is a security briefing:
Trust client: hackers can do anything within the scope given; only acceptable if scope is "player clicks here"
Independent: hackers cannot write values but can forecast future values
Wait on server: most secure

This is how most games in the genre work:
Impetus - wait on server
Exposition - independent
Results - wait on server

This is how PoE currently works. You can test this yourself by disconnecting from network then advancing on unaware monsters before timeout:
Player impetus - trust client
Monster/damage-based impetus - wait on server
Exposition - independent
Results - wait on server
Minimap/monster positions - independent

Massive amounts of desync are caused by having players react immediately on client, while monsters wait on server for AI; on server, player-characters wait on client input, after which players and monsters act simultaneously.

Independent client minimap allows maphack vulnerability.

Solution is:
Player impetus - trust client
Monster impetus - independent
Damage-based impetus - wait on server
Results - wait on server
Minimap, position of idle monsters - wait on server

The tricky, but not impossible, part is giving client the ability to rollback its own simulation when damage-based impetus occurs such that PRNG seed used for matching results is not corrupted, maintaining independence.


Your security briefing is quite informed and true. However it is possible for movement to be trusted on client and others wait on server or be independent.

Ironically, map hacking already enables cheating that would occur by trusting the client on movement (and only movement). Which is speed of clearing and crossing areas. In some cases it also reveals mob location which allows damage prevention simply through foresight.

Also ironically, movement outside the bounds of what is possible by your characters move speed is easily detectable by checking his movement speed on gear and buffs (all still on server) and throwing exceptions when attacks are launched or dodged outside the limits of what is physically possible by using that move speed value mathematically with the position being reported by the client. So even if hacked, detection would be a REALLY SIMPLE process that would result in detection extremely quickly in 100% of cases.

So basically we have a situation where hacking that is currently already occurring is corrupting the game already in ways that putting movement actions would not even enable, while that same change would disable desync in its entirety leaving only action lag in the actual game.

If I were to guess I would say this system is probably already in use in many games that don't have desync issues.
my evasion is so high i only insta rip sometimes
-----
Bug Fixes:
People were using cyclone for actual melee builds, so we nerfed it and made blade vortex. Also, we went ahead and made cyclone great for CoC casters while we were at it.
"
NeverPlaysRarelyPosts wrote:
If desync is Lightning Thorns, then PoE has 7% life leech, 20% increased leech rate, 20% Lightning resistance, and keeps dying. The more PoE tries to do at once, the faster it dies.

If the PoE playerbase is Twitch chat watching PoE die over and over again to Lightning Thorns, then what Twitch chat is saying is "needs moar leech." Without the appropriate ironic Kappa. The few voices suggesting improved Lightning resist are drowned out in the spam.

Yet more resynchronization is not the answer. Many of you already have /oos on macro and even that amount of "healing" cannot combat the massive amounts of incoming "damage." Rather than trying to stack even more resync, GGG needs to work more on preventing most desync from even happening in the first place, reducing the rate of gamestate divergence to the point which currently available methods of recovery can keep up.
Wow. Great post.

Legatus is kind of off saying "games don't have to deal with desync." In fact, it is precisely something that must be dealt with, by those making the game. It never gets eliminated completely, but the point is it needn't run rampant.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
"
ScrotieMcB wrote:

Legatus is kind of off saying "games don't have to deal with desync." In fact, it is precisely something that must be dealt with, by those making the game. It never gets eliminated completely, but the point is it needn't run rampant.


Desync does not exist if the movement is handled entirely on the client, period. The worst thing you can have is some delayed response time for stuns or something in which case you just get stunned after moving, but the character and mobs will still be in sync always (because they are moved on your client).

In fact, any game where you aren't exclusively using a prediction model on the client doesn't suffer from desync. I know of like maybe 2 games that have actual desync, and a lot that suffer from a little bit of lag but are usually ok most of the time and don't really have desync.

POE on the other hand is the ONLY game that not only has desync, but has it so frequently and so badly that it completely ruins the entire game. You're forced to run with an /oos macro and familiarize yourself with desync mechanics as if they were just part of the game. You're forced to run with tankier builds than you should have to because you might die from desync. You're forced to skip content that would otherwise be skill-tanked because you might die from desync. I literally had vaal slam hit me from the OTHER SIDE OF THE ROOM once, and for no logical reason. I've had desync put my character through walls and doors into rooms I haven't even opened yet. You think you're going to run with a little less HP and risk dying to that kind of shit in HC?

You are LITERALLY being forced to grab HP nodes JUST because desync exists in any HC league in POE. Understand that people HAVE TO CHANGE THEIR BUILDS to be tankier because of it.
my evasion is so high i only insta rip sometimes
-----
Bug Fixes:
People were using cyclone for actual melee builds, so we nerfed it and made blade vortex. Also, we went ahead and made cyclone great for CoC casters while we were at it.
Last edited by Legatus1982#1658 on Feb 13, 2015, 11:37:08 PM
"
Legatus1982 wrote:
Desync does not exist if the movement is handled entirely on the client, period.
Um, no.

1. security issues. Let's just gloss over this one.

2. Big picture. Positioning is the main thing which messes up in desync but it's not the only factor. Damage can cause stuns or freezes which prevent movement. Delays in impetus can make the client not even realize a movement needs to happen. Etc.

3. Already status quo. Last but not least, animations and pathing actually use an independent model in PoE right now. Impetus is not independent, however.

So let's say there is a room full of monsters and none of them have seen you. If you disconnect internet then move in before timeout, what you will see is them standing still - their AI is not independent and waits on the server for instructions. But if you enter the room then disconnect about, oh, 0.2 seconds later, you would see the monsters advance even after disconnect - they wouldn't stop on a dime or anything, instead continuing on the lasr instruction received from server. This is because once they get the command "move (location)" or "evangelist AoE (location)," it is handled independently by the client without needing to check with the server mid-action.

The problem here is impetus, not movement itself; it is that the monsters move on a delay, which would be give except players *do not* move on a delay on the client, while they *do* move on a delay (same delay as monsters) on the server. If that delay was eliminated, the current pathing and skill animation systems should be sufficient.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
Last edited by ScrotieMcB#2697 on Feb 14, 2015, 1:25:17 AM
all the experts are back in town I see.

I remember scrotie explaining to me at length how monster targeting with movement skills didnt cause desync over a year ago, really interesting read it was too, very informative from a guy who knows so much about the technical side of the game.


To be fair, I've had plenty of "college of business" computing training, but not much of the "college of engineering" flavor. I could definitely imagine a coder telling me that the possibilities I describe aren't feasible for some reason or another. (Most of these translate to "might as well stsrt from scratch.")

What I do understand is process. The client-server communication model can basically get boiled down to a flowchart with some rather basic knowledge, from which point it is mostly a matter of looking for flaws in the flow.
When Stephen Colbert was killed by HYDRA's Project Insight in 2014, the comedy world lost a hero. Since his life model decoy isn't up to the task, please do not mistake my performance as political discussion. I'm just doing what Steve would have wanted.
Last edited by ScrotieMcB#2697 on Feb 14, 2015, 4:34:48 AM
"
ScrotieMcB wrote:
To be fair, I've had plenty of "college of business" computing training, but not much of the "college of engineering" flavor. I could definitely imagine a coder telling me that the possibilities I describe aren't feasible for some reason or another. (Most of these translate to "might as well stsrt from scratch.")

What I do understand is process. The client-server communication model can basically get boiled down to a flowchart with some rather basic knowledge, from which point it is mostly a matter of looking for flaws in the flow.


Ok, sorry for my brutal and direct questions.

1) Do you personally and professionally thinks that there is a technical sure way to eliminate, or at least reduce it to an almost nonexistence, desync but they choose not to?

2) If they had a 5.000.000$ budget would they be able to FIX DEFINITELY the desync issue?

Thanks.
I am Drakunia... and you are not! And I am also GFL (Gamer For Life)
"
Drakunia wrote:

Ok, sorry for my brutal and direct questions.

1) Do you personally and professionally thinks that there is a technical sure way to eliminate, or at least reduce it to an almost nonexistence, desync but they choose not to?

2) If they had a 5.000.000$ budget would they be able to FIX DEFINITELY the desync issue?

Thanks.


Can you honestly not answer these questions yourself ?

1) Of course desync can be mitigated to acceptable levels. look at fps games, look at mobas, look at D3. All different implementations, but executed well enough that TRUE competitive ecosystems can be supported (not D3 though) Of course, 'competitive' in PoE means 'racing...' lel.

Just yesterday watching a LoL stream, a Lux snare clearly passed through an enemy champ, obviously desync, but the LoL netcode does enough to compensate for 10 players making dynamic realtime input over multiple pings and STILL maintain reasonable gameplay fidelity. GGG can't manage 1 player and server mobs.

2) The problem IS NOT money. Lets take hanging bridges, notorious in their early history for self destruction due to resonance in windy regions. Now say GGG is a bridge building company, no matter what the environmental conditions their answer is a hanging bridge. The engineers of the firm share a mindset on design principles, it is not changing. A five million dollar hanging bridge will get people across, and you have the money to try to combat wind as best as you can, but with the right wind conditions, there can be catastrophe.

Know what another company might do with 5 million dollars? windy region ? lets build a different kind of bridge.
desync is not a sacrifice made due to financial restriction. It is a design principle. It is not going anywhere because GGG believes in it.
"
ScrotieMcB wrote:
"
Legatus1982 wrote:
Desync does not exist if the movement is handled entirely on the client, period.
Um, no.

1. security issues. Let's just gloss over this one.

2. Big picture. Positioning is the main thing which messes up in desync but it's not the only factor. Damage can cause stuns or freezes which prevent movement. Delays in impetus can make the client not even realize a movement needs to happen. Etc.

3. Already status quo. Last but not least, animations and pathing actually use an independent model in PoE right now. Impetus is not independent, however.

So let's say there is a room full of monsters and none of them have seen you. If you disconnect internet then move in before timeout, what you will see is them standing still - their AI is not independent and waits on the server for instructions. But if you enter the room then disconnect about, oh, 0.2 seconds later, you would see the monsters advance even after disconnect - they wouldn't stop on a dime or anything, instead continuing on the lasr instruction received from server. This is because once they get the command "move (location)" or "evangelist AoE (location)," it is handled independently by the client without needing to check with the server mid-action.

The problem here is impetus, not movement itself; it is that the monsters move on a delay, which would be give except players *do not* move on a delay on the client, while they *do* move on a delay (same delay as monsters) on the server. If that delay was eliminated, the current pathing and skill animation systems should be sufficient.


1. Yes, let's. The game has been compromised repeatedly already by bots, maphacks, duping methods, exploits, and other issues that will continue to plague POE forever regardless of whether you know about their existence or not. Bots and RMT will never disappear no matter what you do and the sacred economy is a joke with people buying 6L shavs 3 days into a new league.

Additionally, the movement (and movement impetus) being handled client side doesn't change much about the security of the game, if anything at all. I've been over this a hundred fucking times. You can't generate loot by putting location and movement on the client. You can't increase your dps. You can't duplicate items. You can't add stats to your character or give him/her better gear.

In fact the only thing you can do IF YOU DECIDED TO CHEAT (3% or less of players) is move your character in ways you couldn't before which isn't saying much since maphacks moveskills and 60+ move speed already exists. Even then if you attempted to cheat the walk speed the server would detect this easily when an attack is reported from a position you can't physically reach in the time your character's move speed allows and would detect stuff like this easily with little effort.

Hell, just the fact that flame blast characters gather loot many times faster than viper strike characters by itself is enough to make the "economy" completely fucking moot in any discussion. What's the point in guarding an economy where all you have to do is reroll flame blast and roll face on keyboard?

The TLDR of this security argument which the ignorant have been throwing around for years is that it doesn't hold up in actual practice, whether it was well intended or not. Least of all for the position and movement control which would have almost no effect on the game aside from nearly eliminating desync.

2. Stuns can happen on a delay and not cause many problems if any at all. Perfectly acceptable to wait for server on stuns. Worst case is your character has been moving around for a second or two and suddenly gets stunned from a previous attack. Very preferable to what we have now, and you would never eat a stun from a character that isn't actually attacking you ON YOUR SCREEN. You would at the very least SEE the attack occurring before it actually stunned you in 100% of cases. Much less disruptive.

Using the word impetus all the time instead of simply saying "action initiation" or something the general public on these forums can read and understand doesn't make your argument sound when it otherwise isn't, btw. Looks like you're trying to justify your argument by making yourself sound smarter instead of by actually justifying the position you've taken.
my evasion is so high i only insta rip sometimes
-----
Bug Fixes:
People were using cyclone for actual melee builds, so we nerfed it and made blade vortex. Also, we went ahead and made cyclone great for CoC casters while we were at it.
Last edited by Legatus1982#1658 on Feb 21, 2015, 3:25:33 PM

Report Forum Post

Report Account:

Report Type

Additional Info