Greeting Developers,
There are some more changes coming to non-ReplicatedFirst loading order, and we want to explain the potential impact they may have on your games before they go live.
After the previous update, child instances sent during game join will arrive on the client in the correct relative order, but there may be an arbitrary number of other instances sent between each child.
Now, child instances sent during join will no longer have an order guarantee on the client: they will arrive in arbitrary order, and the order of children will be arbitrary.
Here’s a basic example that illustrates this change:
Server Workspace structure
Workspace
→ Part1
→ Part2
→ Part3
What the client might see
Workspace
→ Part2
→ Part1
→ Part3
We have updated existing engine logic (like that in the UI code) to compensate for this, but there is still a potential for disruption to your scripts.
Script
local superImportantPart = workspace:FindFirstChildWhichIsA("Part")
Before this change, this script would find Part1 reliably on the client. After this change it might find any of the parts, depending on what order they arrived at the client. If your script needed to find Part1 specifically for some specific game logic, that logic may break.
Similarly, some Scripts which call functions such as Instance:GetChildren() may break if they depended on the instances being reliably in the same order.
Pre-Launch Studio Testing
In order to help you determine if your game has a bug like the above example, we will once again be enabling this behavior for a period in Roblox Studio only before enabling for all live games. We have worked with our internal QA team to try out this new feature on a representative sample of games and have found no issues yet, so we expect most games to not be negatively impacted.
To make it easier to find bugs related to child order we have added a new studio setting that aggressively randomizes the order clients receive instances during join, and this setting will be enabled by default.
Advanced developers can toggle this behavior under File → Studio Settings → Network → Advanced → Randomize Test Join Order. Unchecking this box will make it harder to find any bugs in your game related to this change.
We intend to enable this on Studio on March 3rd, and will wait ~3 weeks to give you a chance to fix any lurking bugs before enabling this on Production.
Thank you, and please let us know if you have any questions regarding this change!