Storing assets on client or server / replication issues

I think I read recently somewhere that having a lot of assets stored on the client (in replicated storage) can cause longer load times for the game . (Lets say that all of these assets are necessary for the client to view)

So , I was considering making a replication system, but I am wondering if it is a good idea for performance. Basically the server will be cloning items from ServerStorage to the player’s PlayerGui to replicate them.

However, would this cause any issues on the server regarding performance if it had all these cloned assets that were stored in multiple different client PlayerGuis? (And if it could, is this replication system even worth it then?)

I so far have not seen any significant performance impacts on the server with lots of parts, but I want to be sure. Also, to clarify, I am wondering about performance impacts of just having a lot of cloned parts stored in PlayerGuis, not about the cloning itself.

Thanks!

I think it would be correct to say that:

But i believe you should try it yourself, to ensure it does effect loading speeds.
How i see it is they aren’t being rendered, therefore the client doesn’t need to render it.
Same would go for a modulescript, I am most likely wrong here but if a modulescript isnt required the client wont compile it.

If you are worried about the performance issues you can simply make a folder and just reparent it into your desired location (Server)

I have definitely seen a bit of loading time increase if i put a bunch of things into ReplicatedStorage. They aren’t being rendered but I think the client needs to load them some other way

The problem with this is that the clients need to access the assets, so I was thinking of a replication system .

I see, I’d make it so you only give the player what they need, if you end up just slapping everything into RS the player may see a FPS spike aswell.

Otherwise load them into RS slowly

Yeah , that was my idea. The player requests what they need and the server clones it in. I am less worries about the clientside, but rather the load on the server of having all these items. I think it is fine though - I did more tests and there seems to be minimal performance impact

1 Like

youd be doing what roblox already does but at a far slower rate, just use streamingenabled and :WaitForChild() for your assets. if they’re in ReplicatedStorage, its fine, thats actually more performant than workspace by far – its what its made for.

as for cloning parts, im unsure why you’re storing them at all in PlayerGui, as that causes server build up (PlayerGui is replicated, you’re not “giving” it to the player, you still have the parts, which will jam up your server memory)

tldr do not overcomplicate this, be normal until you spot problems and then reconsider why you have so many parts in replicatedstorage in the first place, and assess from there

1 Like

tbh agreed.

Most large games are optimised, they don’t have a TON or parts but rather combined meshes, unions etc…

@RipPBB_TUD I think you should look more into reducing the amount of instances you have.

(cool name btw @InfiniteYield )

1 Like

It is the only way I know of to replicate an instance to clients individually

I was looking into this because I was curious what some alternatives might be to storing a lot of assets in the replicated storage . There are some occasions where storing them somewhere else simply isn’t an option

My thought was that maybe the client could clone the items once they recieve it, and then the server would just go and destroy it on their end to prevent any memory buildup. I also haven’t really seen any evidence of significant serversided memory increases due to a lot of assets being placed in the player guis, but I could be wrong

Yes, I am aware of that - but a lot of them also suffer from long loading times for weaker devices. I am wary of the amount of instances that I have but sometimes it is simply not possible to decrease the count further, especially as a game grows if the client needs to see various assets . .

1 Like

to replicate to individual clients and not cause server buildup, the clients need to do the :clone()'ing

as for the playergui thing, I’m just not gonna recommend doing that because its not scalable fundamentally. my point is really, without trying to sound dismissive, rather I’m trying to be reassuring; I think you have a non-problem. replicatedstorage wont jack up your loading time unless you’re cramming 200,000+ instances in there and doing :WaitForChild(). there’s nothing about replicatedstorage that’ll increase loading times on smaller devices unless their internet is crap or they’re somehow significantly CPU bound, because there’s nothing being rendered.