Hello, I’m RJ and I’m one of the Gameplay Programmers for the Math Obby by BrainySpinach Math. Our obby is currently made up of a few courses, each of which are procedurally generated (and regenerated every 60 minutes).
Our process for doing this is to randomly select an obstacle from our storage folder and add it to the course. Originally, this folder was located in ReplicatedStorage.
When we tested the obby on a live server for the first time, players and admins noticed an issue with the courses after regeneration. (Edit: this does not happen on the first courses that are generated when the server opens). Some of the parts of certain obstacle would not load for some clients, whilst loading for others.
The images below show what I mean by this (collected from a test with 4 players on a local server in Studio):
The hexagons load fine on the top client, but are missing on the bottom client:
The squares load fine on the top client (again), and are (again) mostly missing on the bottom client:
Another example:
The only correlation I have noticed between the parts that aren’t loading is that they are either a MeshPart themselves, or in a model with a MeshPart. I don’t believe this issue has been reported with any of the obstacles using just parts and union operations.
After considering that there may be some inconsistency in client replication of the courses after the server regenerates them, I decided to try moving the folder containing obstacles to ServerStorage, as opposed to keeping it in ReplicatedStorage. There was no reason for these obstacles to be stored in ReplicatedStorage anyway, they were only ever used by the server. I noticed an apparent reduction in the frequency of the issue, however, I cannot confirm whether this was a direct result of the location change – the issue still persisted, even if it appeared, in the few iterations of testing I did, to be less frequent.
The specific process for generating a course is: clone an obstacle from storage, change it’s name and register it’s checkpoints. Parent the obstacle to the new course after changing its position so it is added to the end of the so-far generated course.
We’ve reviewed our code and found no indications of what the problem here could be, and it makes it so much more bizarre that not all clients are experiencing this issue. In the tests I completed on a local server, the first connected client did not experience the issue, but this has not been confirmed in a live server test.
Edit: the screenshots shown are of simultaneously connected clients in a Studio local server test (4 players).