We have been suffering from major network lag issues in Bad Business for the better part of a month now. The entire server tends to freeze up at times and players get teleported around, harming the core gameplay of the game severely.
The following example is something I grabbed 3 minutes after joining into a random match while writing this post.
The example below is from a community member. We’ve seen countless examples of clips like these over the last month.
We have attempted to address the issue throughout multiple patches but have been unable to find the cause / fix it. Because of this we are unable to diagnose whether this is an issue caused by an update of ours or on Roblox’s end.
I didn’t notice much of a correlation between lag spikes and microprofiler frame time spikes when I was testing in game which tells me its server sided.
To see these lag spikes you may have to capture a server profile
Understanding microprofiler would help diagnosing this issue greatly
I just did a test to verify, here’s running the game (non studio)
For this test I did an unnecessary amount of math on both the client and server, creating lag on both.
I can only see the client lag when in game, unless I do a MP recording
I used debug.profilebegin(“Server Lag”) and debug.profilebegin(“Client Lag”) on each respectively so I can see where the lag is coming from.
Hiii i work on bad business
We were able to deduct that the issue lays in replication of player data. We handle player data by building a structure of folders and values parented under ReplicatedStorage, and we have discovered that, based on the size of player’s data, it would take upwards of 100 ms of server time to process and replicate the data to all clients when the structure gets built initially. I can only assume we are hitting a certain threshold of data size after which it just takes much longer to process it?
Our WIP proposed solution is instead of relying on automatic replication, send the data to the client initially to build the folder structure locally, and then selectively send pieces of info whenever they’re updated from the server.