[1058] Regression - synced objects teleported a long distance away lerp very slowly
bd_
This bug is a regression that was introduced sometime in the last month or so.
When an object is teleported a long distance away (~50m), and later teleported back, it interpolates very slowly, over the course of over 10 seconds. Subsequently detection of discontinuities seems to fail, and subsequent teleports also interpolate very, very slowly for that specific object.
Here's a video showing the behavior: https://www.youtube.com/watch?v=Xog-CALQLqE
Repro world: wrld_1dd0936b-3266-46a2-aec0-7140e18d9c46
Repro steps:
- Join two clients to the test world. Have the master looking at the shuffle button panel and the non-master looking at the mahjong tiles.
- (Optional) Enable the debug UI. It's mostly useful on the non-master client. Click the big vase to the right, then click 'tile debug' on the panel which appears. (This is enabled for all users in this test world)
- Initially, if you click 'shuffle' the tiles should shuffle and sync properly.
- As master, click 'new game', then 3麻 (this teleports a subset of tiles up 50m). Wait for shuffle to complete, then click 4麻 again (which teleports them back).
- Bug: Non-master will observe the tiles slowly interpolating into position.
Some notes about this world:
- Tile debug will show the position of the synced objects; during shuffling, a different set of local objects is substituted.
- The shuffle procedure teleports all tiles into position, then rotates them 180 degrees a few times (this appears to be essential for reliable syncing)
- If you load the world as master in the editor (or use the UdonInspector panel that is enabled by the debug switch), you can move the 'Void' object to adjust the position the tiles are teleported to. A local position of about Y=4 does not repro the bug.
Log In
bd_
Note: I believe this may be fixed in the UNU beta.
LefTonbo
The system of object syncing seems changed on 2021.1.3 update.
From this version, the maximum time of position interpolation became unlimited. That means any object teleportation are replaced interpolation movement that takes the time of last position update on non-owner sight.
This have severe issues if the object is not kinematic. On non-owner sight, if there is obstacle colliders between interpolation, the object will stack at the collider.
Example: If the position is updated after 30 second of last update, the object moves interpolate to synced position taking 30 seconds on non-owner sight. If the time is 60 seconds, the interpolation also takes 60 seconds.
bd_
LefTonbo: yes, that seems to agree with what I'm seeing. What's strange is that we seem to get discontinuous movement when the objects don't move too far, but once they start interpolating they're stuck that way.
bd_
One note: I tried various approaches for reducing bandwidth spikes to mitigate this - in particular, I slowed down the rate that the tiles were teleported significantly - but this did not seem to have any effect.
bd_
Here's where the Void object can be found in the UdonInspector UI
bd_
The bug occurs when Void Y=15, but not when Y=10, so the threshold is somewhere between those positions.