ID:2690420
 
Resolved
Gliding speed was incorrect in games using tile movement when the player's mob had a different object as the eye and no glide_size was assigned. There is also a server component to this bug in which servers did not send the correct eye information (for the new data sent from 514.1553 onward), so the server will need to be updated as well.
BYOND Version:514.1556
Operating System:Windows 10 Home 64-bit
Web Browser:Firefox 89.0
Applies to:Dream Seeker
Status: Resolved (514.1557)

This issue has been resolved.
Descriptive Problem Summary:

On Space Station 13 (/vg/station13), since the last few beta branch updates, perspectives issues occur when a player mob enters another atom such as a container/mecha/or other mob, and said mob then moves around. Instead of the camera smoothly following the entered atom, they will move tile by tile, and sometimes even not move at all, letting the player go out of view.

Numbered Steps to Reproduce Problem:

With 2 players
1. Boot the game
2. Enter the server with 2 players
3. Have one player enter a closet
4. Have the other player pull the first closet around

Alone
1. Boot the game
2. Enter the server
3. Spawn a Mecha and ride it around

In both case, when moving around the camera can be seen not moving smoothly, and sometimes staying behind. This seems to occur with any instance of a player being inside another moving atom.

Expected Results:

The camera follows the atom inside which the player mob is.

Actual Results:

The camera either stays behind, or moves by entire tiles instead of smoothly.

Does the problem occur:
Every time? Or how often?
Yes
In other games?
Maybe, this issue appears reminiscent of http://www.byond.com/forum/post/2689723
In other user accounts?
This only happens with clients on 514. Players with clients who are still on 513 do not encounter this issue.
On other computers?
Yes, as explained above.

When does the problem NOT occur?

On 513

Did the problem NOT occur in any earlier versions? If so, what was the last version that worked? (Visit http://www.byond.com/download/build to download old versions for testing.)

513

Workarounds:

None found, downgrading the client to 513 to login on the server after compiling the code on 514 seems to be the way to go for now.

The issue can be observed in this video: https://cdn.discordapp.com/attachments/851240749915045929/ 851240819741687838/2021-06-07_01-26-02.mp4

The player is inside a mecha. The camera moves tile by tile instead of smoothly horizontally, and not at all vertically. Players on 513 who entered the mecha did not have this issue.
I need a test case for this. Can you get me a demo that shows the problem in action?

I think this might be related to id:2689723 which is actually two different issues.
I've created a small project for the purpose of demonstrating this issue. This zip includes the source code, as well as the dmb/rsc compiled on both 513 and 514 each in their own folders. I have had the issue occur to me on this project on 514, while after downgrading to 513 and recompiling the camera moved smoothly even inside the object.

* Use the directional keys to move the player (blue).
* Click the mecha (green) to teleport inside, or leave it.

https://www.dropbox.com/s/whtsoov6mwstxvh/ testcase%20demo%20for%20perspective%20issue%20on%20514.zip?d l=0
Thinking back on it, my demo showcases the stuttering, but not the camera not following the player vertically. I'm not quite sure what causes it specifically. It might be related to the size of the map.
Lummox JR resolved issue with message:
Gliding speed was incorrect in games using tile movement when the player's mob had a different object as the eye and no glide_size was assigned. There is also a server component to this bug in which servers did not send the correct eye information (for the new data sent from 514.1553 onward), so the server will need to be updated as well.
The case where the client's eye is set to the containing object (as in the test case) is indeed fixed in 1557, but the case where the client's eye is the mob inside the object is not. You can use the same test case for this but remove the lines in /obj/Click() that set client.eye and client.perspective.
In response to Exxion
Hmm, I think that might need a new bug report then.