Desync is a situation where the game client on your computer and the PoE server don't agree on what is happening in the game, specifically with the position of players and monsters. Obviously the server's decisions take precedence over the client, so a heavily desynced player may actually be standing next to monsters when they appear to be safe from the player's point of view. This is different from network lag (high latency), and desynced clients can still have low ping.
Dealing with Desync
Small amounts of desync aren't noticeable and don't affect gameplay, but large desyncs can make playing frustrating or even unexpectedly kill players. Some clues can alert you to desync:
- One enemy standing still near you and not attacking while others attack. The enemy is actually somewhere else, where it has no reason to attack you.
- Walking into a room full of enemies and they don't start attacking you. Your character is in a different location (probably running into a wall, close to where you were a few seconds prior.). If the reverse happens the enemies will attack you when you appear to be safe, and this is usually the cause of desync death.
- Area of effect skills like not hitting enemies in range or hitting enemies slightly out of range.
- Enemies dropping items far away from where they died.
The chat console command /oos will manually synchronize you with the server. Some players bind this command to a macro using software like autohotkey. Using a macro that sends /oos for you when you press one button (with AHK or some other tool) is legal and not against GGG's rules.
This forum thread explains desync in full detail. Notable sections are quoted below (bolded text in original):
- Let me begin by saying that absolutely every game that is played online has to deal with desync. Every single game without exception. This is because that information does not travel over the internet instantaneously. Data traveling between two different machines, it could be a client and a server or even two clients directly connected to eachother, takes a typically very small amount of time. [...] Half a second may not sound like a lot but in a game like PoE where dozens of things are happening on screen at once and you need to react within a fraction of a second, a whole half second can quickly be the difference between life and death.
- To combat desyncs, some games choose to use a game architecture that rigidly forces every game state to stay synchronized at all times. Obviously this has the benefit that the different game stats on the various different machines are never out of sync with each other. This has the downside that any action you want to take (pressing a key or clicking your mouse) has to travel to the game server and be confirmed and then that server confirmation needs to travel back to you before you're actually allowed to take that action. If you have very low latency, then you won't notice this delay between you pressing a button and the corresponding action occurring on screen. If it takes half a second between when you press a button and when your character takes an action then you're definitely going to notice. This sort of synchronization scheme works very well for slower games where not a lot is happening at once and the player doesn't need to make split second reactions (strategy games and MMOs for example).
- In games like PoE where the action is happening very quickly and the player needs instant feedback, enforcing this rigid synchronization is impossible. The combat would be unresponsive and the game would simply be unplayable. What you need a scheme that allows the player's actions to occur instantaneous on the player's computer and then synchronization occurs after the fact behind the scenes. This is exactly what most games do to varying degrees, including games like Diablo 3. Basically any online game that requires instantaneous player feedback. The result is that these games are always at least slightly out of sync with the server but they give the player instantaneous feedback and feel very fluid. There's no way to avoid that. The goal becomes to cover it up so players don't notice it and to hopefully keep it from becoming a big issue.
- The issue really comes up when you have dozens of these actions all occurring at once. Your character is moving and attacking, a whole bunch of enemies are moving and attacking. All of this information needs to go back and forth between the server and the client. Both the server and the client are running simultaneously game state simulations and the goal is to keep these two game states as synchronized as possible even though both game states only have a fraction of the information they need, the information they do have can be hundreds of milliseconds out of date, and the information is constantly changing. [...] This is where more pronounced desyncs occur (what players typically refer to when they talk about desyncs). When one side is lacking a piece of information and continues to run it's version of the game state simulation using out of date and incorrect data.
- Desync wouldn't be a big issue if you could synchronize the entire game state on both sides a few times per second. Bandwidth isn't free, though. In fact, it's quite expensive. If GGG tried to synchronize the client and server even just once every second across all the clients currently playing it would overwhelm their available bandwidth by orders of magnitude. [...]
- Desyncs are much more likely to occur in situations where many things are going on at once, when there are many monsters are screen, if they're moving quickly, if they're in a confined space, when you use skills that cause you to move and attack very quickly (whirling blades for example).
- So what can be done to help alleviate desync? As I already said, synchronizing the entire game state regularly is too expensive no matter how big the game or rich the company. It's also unnecessary. Desync is perfectly fine as long as it doesn't affect the gameplay. For example, if you're attacking a zombie that's standing to the right of your character but on the server that zombie is actually to the left of your character, what does it really matter as long as your attacks are connecting and dealing damage and the zombie will be dead in another second anyway. The vast majority of desyncs between the client and the server are of this sort. They have absolutely no impact on the gameplay and the player never even knows about them.