Originally Posted by
Roegadoom
At a fundamental level, they've chosen to synchronize tons of data between the client and server on a frequent basis, and while this makes it easier to avoid causing invalid states or duping glitches, it scales poorly. The usual approach would be to avoid synchronizing anything that both client and server can determine separately, and only synch what turns out to be necessary. This is more challenging to get right, but way more efficient. So SE took an approach that initially made their jobs easier, but causes its own set of problems that are difficult to work around. There are all sorts of cases where they limit the possible state transformations so that they can save on bandwidth, but make for a clunky user experience. Things like being unable to move items around in your inventory while crafting, or not being able to craft in inn rooms. They don't have to synch data that they know cannot change, because they've prevented you from changing it. The rest of the time, they assume they cannot know what has and has not changed, so they play it safe and synch it all.