VRCObjectSync doesn't sync to late joiners in some situations with high network load
tracked
SenkyDragon
This issue seems difficult to reproduce in a controlled environment, since it seems to depend on high network load. It's also not noticeable in many instances, because if a marker or silly prop doesn't have its position synced, nobody would notice.
However, we run a weekly event in Kaleidosky, which has very high capacity, very high idle bandwidth (tens of VRCObjectSync objects moving constantly in the lazy river), and critical object sync positioning. Since the skybox is based on camera feedback, unsynced objects can cause vastly different sky experiences for different users (occasionally as far as seizure inducing).
We've temporarily worked around this issue by causing all users to call FlagDiscontinuity() on every VRCObjectSync they own, 5 seconds after any new player joins. This seems to force vrc to resync the VRCObjectSync's position properly every time, but is definitely a big waste of bandwidth in an already choked world.
Log In
StormRel
marked this post as
tracked
SenkyDragon
Two additional notes:
- Even without our patch, when a user picks up a object it (obviously) resolves the issue for the new joiner, and the object teleports from its spawn location to the owner's hand.
- Strangely, the issue seems to only impact specific object owners. It's not uncommon for all objects owned by a specific user to not properly sync to late joiners, but objects owned by other owners do sync to late joiners. The issue seems well divided based on the current object owner. I'm unsure if the issue only ever impacts one owner, or if there can be multiple. I'm unsure if the issue is related to if the object owner is the master.