Why was ReplicatedScriptService cancelled and what are the alternatives?

About a year ago Roblox added ReplicatedScriptService for running both server and client logic in a single container, but it was later on removed with Roblox staff stating that they decided not to ship it. I am wondering on what was the reason behind it’s removal as just now I found a use case for it but since it was removed I can’t use it.

Also if there are any alternative places for storing both server and client logic, please let me know.

3 Likes

replicatedstorage

2 Likes

That isn’t the case.

image

Both server and client do not run under ReplicatedStorage.

2 Likes

I don’t know their reasoning, but it seems like it might be unintuitive to use and there are existing alternatives so it would add confusion for users.

ServerScriptService for server scripts, StarterPlayer.StarterPlayerScripts for client scripts.

Both server and client scripts will run if they are descendants of a player’s character. That may be the only place they share, but I’m not certain on that.

3 Likes

I am pretty sure that they do both run under character however there is an issue with that as their existence relies on a player character which is not ideal for my use case.

2 Likes

If you described your use case, maybe we can find a good solution.

4 Likes

My use case is that I have objects like doors, swords, etc that have a controller module, a server replicator, and client replicator, together they make those objects functional and smooth without noticeable delay caused by latency.

Door:Toggle() → Opens/Closes a door

When player interacts with the door, the local replicator calls the module to :Toggle() the door and sends request to server replicator, the server replicator sends request back to all players except the sender, a local replicator on different client receives the request and calls :Toggle() ultimately resulting in unnoticeable delay as the player that toggled the door will have their door opened immediately while others will have the door toggle like about 120ms later which makes the interaction seem instant since there is no way for the player on other side of the world to notice any delay as they’re not the ones that are interacting with the object.

2 Likes

The latency happens either way if you’re using both types of script, unless I’m misunderstanding you. This seems like it’s only a cosmetic difference to me.

3 Likes

In that case, where the scripts are physically located doesn’t matter

Put the server side script in ServerScriptService

Put the client side script in StarterPlayerScripts

Put the remotes that they communicate with in ReplicatedStorage

3 Likes

Yeah I understand, it’s just it would be more convenient to have them together rather than in 3 different locations.

2 Likes

This seems like a new object to me but it feels like another gate for exploiters to execute scripts, Not sure if the scripts are hidden like ServerScriptService but I don’t think they’re being hidden.

2 Likes

It’s no different than any other location, the only difference was that both scripts could run under the same container.

2 Likes

How? What does your current structure and ideal structure look like? Are you creating a new remote event for every client?

1 Like

I’m really not sure what the benefit of this would be.

1 Like