Setting the server-authoritative-movement property to client-auth creates several issues that impact gameplay.
Creative mode:
1. Placing a block against an interactable block (such as a hopper) while “fly-crouching” creates a ghost block instead of placing the block.
Survival mode:
1. Tridents cannot be thrown.
2. Travelling between dimensions causes the player to fall through the world.
Linked issues
is duplicated by 1
Comments 5
I can confirm that my own server [BDS 1.21.62] is also experiencing every single one of the described issues, except for dimension travel causing player falling, and switching from client-auth to server-auth fixed things
I did have some weird behavior similar to that that after dimension travel with client-side-chunk-generation-enabled=true , if that happens to be in @ForestOfLight ‘s server config ?
I’m less sure it’s related to server-authoritative-movement as a result
I am having issues with being unable to throw tridents. I never realized the other things were related but now that you mention it I never notice my elytra taking damage or having to eat. Haven’t had problems with players falling.
This issue affects basically everything. The way packets are handled should be optimized.
The following problems are caused by desync bugs:
random teleportation
random damage out of nowhere (fall damage, normal damage)
blocks placing out of order (example: while briding, server movement calculation is prioritized (or received first) and since server thinks ‘no block below feet’ the player starts to fall)
server-dependent actions (like throwing throwables, hitting players) not happening
How can desync issues be ‘fixed’ (as well as is possible) ? It’s difficult to say, because for some reason the bedrock edition source code isn’t public. But without seeing the source code, I have some potential considerations to suggest:
Packets should have id or date attributes and be executed in the correct order, with timeouts, of course.
If packets are verified and corrected on the server side, then the verification of the packets should obviously take the packet ids/dates into account. Placing 20 blocks in 1 second - for example - is only potentially unfeasible, if latency isn’t regarded, but if there were 4s of latency, then all packets should be accepted (not as black and white as this example, of course).
The server should verify packets from the client, but not - ever - override them if they are within a threshold of “credibility”.
If latency exceeds a certain threshold, all packets sent should simply be canceled. While this rewind ultimately impacts the gameplay fluidity greatly, that happens with large lag spikes regardless. It is better to rewind to a ‘safe’ state (which is what happens by canceling the packets) than to execute them later at the wrong speed, in the wrong order, or just at the wrong time.
Biggest and most important suggestion: Server authoritative movement should not be on by default on singleplayer worlds. It makes no sense to introduce lag and latency to the singleplayer experience in the name of an anticheat. If people want to cheat in their singleplayer world, it’s ultimately their choice. The experience of the majority shouldn’t be worsened drastically due to the few.
I would hope these suggestions could be helpful. I doubt this message will be seen.
This also affects elytras not taking durability damage in survival, and the player gets hungry far less often – perhaps only when they take damage.