Deferred Triggers break execution order
complete
CyanLaser
When network traffic is unsettled, it is possible for triggers to be deferred. This can happen mid execution of any trigger when activating a custom trigger. Deferred custom triggers then will execute out of order. This breaks the assumption on triggers and can happen differently on each client, unsyncing them even when things appear to be setup correctly. The most noticeable form of this is when buffering events that call into custom triggers. When a new player joins, these buffered triggers tend to execute everything on the trigger itself and defer all custom triggers, causing them to execute on a later frame. This makes it impossible to buffer triggers properly if you never know if the trigger will execute the same frame or on later frames.
Example world: wrld_37443b7e-2bc5-4f1b-82e1-7c81f384b601
While this world does not show deferred events in the log, it shows some triggers executing out of order. There are a large number of boxes with text. Each box does the same thing. They have an OnInteract AlwaysBufferOne that first calls into a local custom trigger to set the text to 1 and then outside of the custom trigger sets the text to 2. Clicking them in the world will show 2 for everyone. Clicking all the boxes and then having someone else join will then show some with 1 instead of 2, proving the custom trigger ran out of order. It is also possible for the entire buffer event to fail but that is a different canny post.
Log In
Aev
complete
Fixed in VRChat 2019.2.1!
Tupper - VRChat Head of Community
in progress
This is fixed in VRChat 2019.2.1, which is currently in Open Beta.
Tupper - VRChat Head of Community
tracked
danly
Now what did I break when I fixed this...
danly
Hmm. HMM.
This is harder to fix. But I'll take a look today.
danly
Yup, hard fix.
CyanLaser
Updated the world by adding a single button to press all the other buttons. Clicking it and having someone else joins results in 96 of them being deferred (Showing 1 in the right side of the screenshot below) and the rest (160 other triggers) simply being ignored by not buffering the trigger at all. So... if your world has more than 96 buffered triggers, late joiners are guaranteed to not be synced!
CyanLaser
Here are pictures of the trigger setup