Is there a way to remove something from the client, then re-add it back to one single client?

Achieve

I want to be able to remove something from a client, then have the ability to bring it back without effecting any other clients except the one trying to add the item back to their world.

Further Explanation

There’s a community I’m in that relies on this client sided delag feature that simply removes whatever model is selected from that players client world, this varies on what the player needs but these could go all the way up to the entire place their at except the competition area.

Currently, the only way to bring back items that have been deleted is to rejoin; I would like to create a workaround where this rejoin isn’t needed to bring back the said items.

I have no true idea if having the ability to remove parts from a World on the client side is even worth doing but it’s a standard in the community to have one; else people boycott that place in a sense. If this is not beneficial by much; please let me know.

Note

This solution could be very memory and game heavy… only use this if you know what you’re doing.

3 Likes

Weird system!

Could you just move models outside of the workspace, like into Lighting or ReplicatedStorage, instead of deleting them, and then back into workspace to undelete them?

1 Like

No point, the whole idea of the delag is to remove the items fully from the client to improve how the game runs. Moving them to another service does nothing to help the client, I already tried that sadly.

As I said in my OP;

I’m only looking for this alternative so people don’t feel they have to avoid my part of the community.

Are you looking for selective replication?

If so, I made a system for this awhile ago based on Colbert’s method (below), but it can take a lot of server resources depending on how many instances you’re trying to replicate. Personally I haven’t had an issue with it though, having 20-person servers with over 30,000 instances to be replicated so I doubt it’ll be an issue for you either, the only impact I’ve noticed was slightly increased ping (which could be a placebo but it makes sense that ping would be increased with more data being sent to the client). Roblox is a multi billion dollar company so I’m sure their servers can handle expensive tasks as well.

Anyway, unfortunately there’s no way to do this natively, it relies on the player’s GUI which is one of if not the only instance that isn’t replicated to any other clients. However, you have full control over what is replicated to the client, personally I like it more than streaming enabled.

So essentially, just clone the instance from server storage into the player’s PlayerGui, I use a ScreenGui personally because I’m unsure as to how well it works without one when it comes to resetting, but you can try this out for yourself. Anyway, then on the client, when a child is added to this ScreenGui, use task.defer to parent the newly added instance to workspace. If you don’t use task.defer, you will get warnings in the output of something unexpectedly trying to set the parent of the instance.

colbert2677 made a demo awhile ago that does this, it is very effective for reducing client memory:

There’s a tutorial demonstrating this as well:

5 Likes