How does Roblox replicate instances when a client joins?

I’m not sure where to post this, LMK if it needs to be somewhere else.

So my question is this: Does Roblox send over every single part when a client joins? For example, if I have 100 tree models, does the server send over every single part’s data of every single tree, or does it send one tree, and then the CFrames of all tree models, which would be significantly more efficient, but only if all tree models were the exact same.

I’m making a large game, which will have many copies of the same model, trees, rocks, maybe houses. I don’t want the server to choke sending over thousands of models, and I don’t want the client to have an absurd amount of data to receive either. The game will have a large amount of players, 50 or so, so replication and bandwidth are crucial.

If Roblox sends over every single instance, I’m going to have to go through the hassle of creating my own game loading replication system and I don’t particularly want to do that.

I know this is kind of a technical question, so any response is helpful, if possible any source would be great too.

5 Likes

If you used StreamingEnabled the client will only load the trees within the player’s stream distance.
https://create.roblox.com/docs/workspace/streaming

2 Likes

I really want to avoid StreamingEnabled, due to the fact that you can’t see the whole map, areas far away just end. I have already created a LOD system for models, as well, so I’m just wondering how Instances replicate when a player joins.

well, if StreamingEnabled is turned off it will basically download everything at your workspace hierarchy the moment they join your game, which is not a good thing…

Hallo! When a player joins a server the roblox engine automatically sends the current state of the game’s replicated date from the server to the client this includes EVERYTHING in places like Workspace & ReplicatedStorage that clients are allowed to see. It doesn’t send some server only containers like ServerStorage or ServerScriptService because those are never meant to be seen by clients.

You can refer here : https://create.roblox.com/docs/projects/data-model

Each client gets their own copy of the instances in the replicated parts of the DataModel so if you have like 100 trees in workspace the client will receive all of those trees and keep them in clients local DataModel. Roblox replicates the full instance data for every object the client should know about.

1 Like

Right. I suppose I could do basic hitbox models in server workspace, and then when the client loads in, they places the real models down based off of the LOD and hitbox models? The server send over 1 copy of each model to the client, and then the client puts them down where the hitbox models are. So that way, a large portion of the replication cost is gone?