Here's a video showing the bug:
Video description:
Quote:
I have found a sequence of "waypoints" that results in a bug in the Silkroad server. There are many incarnations of this bug, this is a demonstration of a single instance.
Here are the movement steps:
- I start at position 1023, 878 (region coordinates within region 69, 101).
- I tell the server that I want to move to 1019, 881.
- The server responds that I am moving from 1023, 878 (confirming that I am starting from where I think I am) to 1019, 881. All is good so far.
- I wait for this movement to complete.
- I tell the server that I want to move to 960, 913.
- The server responds that I am moving from 1019, 881 (again, confirming my expected position) to 960, 913. Everything is still as expected.
- I wait for this movement to complete.
- I tell the server that I want to move to 951, 1084.
- The server responds that I am moving to 951, 1084. This time the server does not respond with a source position due to its usual behavior. This is still normal behavior.
- I wait for this movement to complete.
- I tell the server that I want to move to 951, 1085.
- The server responds that I am moving to 951, 1085. Again, no source position from server. This is still normal.
- I wait for this movement to complete.
- I tell the server that I want to move to 881, 1422.
- The server responds that I am moving to 881, 1422. Again, no source position from server. This is still normal.
- I wait for this movement to complete.
- I am interrupted by the server telling me that I have collided with something at position 937.904, 1073.75!!
This is quite unusual. Looking at the collision, it seems like my movement requests from step 8 and 11 were ignored. That is, this collision would happen if I were to take a straight path from 960, 913 to 881, 1422. The server responded that the movement requests for step 8 and 11 were successful though. You can see that the client understands these movement responses from the server as well. The client continues to run forward following the expected sequence of waypoints until he snaps backwards to that point of collision.
This bug seems to happen independently of the character's speed. This bug happens independently of the whether or not the server responds to my movement request with a source position. In the case when the server does respond with a source position, I can catch this error case because I notice that the given position by the server and my expect position are different.






