As a Roblox player it can be very frustrating to join a full server due to how the join retry system currently behaves. Yesterday I was rejoining a friend in an experience that became full because I was switching into VR mode. Because the server was so tightly packed, it took me around 20-30 minutes to actually get back into the experience.
The problem right now is that Roblox doesn’t keep a queue of who is trying to join the server. When a slot opens up, it will accept the next received request to join the server, regardless of how long another person has been waiting in the retry buffer to join.
This wouldn’t be such an issue if the retry counter had a ceiling for the amount of time it backs off from retrying. As of right now, it just keeps waiting longer and longer for each retry. By the time you reach 10 retries, it becomes very likely someone else will slide into the server before your client has a chance to retry.
In attempting to prove this is how the system works, I performed an experiment with 3 accounts on a 2-player server.
After leaving the left instance retrying for a couple dozen rounds, I leave and quickly rejoin with the right instance. The right instance gets accepted in immediately. I do get in the second time because the retry happens before the other account can rejoin, but the point is moot when compared to a 40 player server that has more than a few people trying to join.
Instead of having clients blindly keep retrying, they should instead be put into a queue where the server keeps pinging back their position in line, and they are let into the server once they reach the front of the line. This would better communicate to the user how busy the server is and would also be a more fair system for people who stay in line to join.