How ofter can I do RemoteEvent:FireServer() without causing issues?

Hello, everyone!
I am working on the gun kit and got to the of replicating movement.
I am replicating arms and neck movement (move up and down towards the mouse).
The question is, how often I can replicate that movement, or actually how often I can use RemoteEvent:FireServer() without causing issues?
Currently, I my rate is 0.01 second.

1 Like

Idk When i experienced issue is when I fired the event but the server isn’t handling it, 0.01 will be too much since its 100 time per second and the refresh rate of monitor is 60, So most of them is non used, Also 25 time per second is enough to create motion illusion

well, 25 times per second is still 0.04, but sounds like it has a good point, thanks

Should be below this limit, I recommend checking out performance stats as well for checking the data limit.

0.01 seconds seems a lot.

Mine is every 0.2 seconds for three Motor6D instances and that’s around 2 kb/s not sure why it’s higher than the JsonEncode measurement method, probably due to physics replication as well when measured from performance stats.

i dont think you need to use remote events if the client has network ownership of the neck and arms then you can just position them in a localscript and it will be automatically replicated to all other clients

That helps, thanks.
Also, I saw a few posts from you and your mechs are really cool and smooth. Keep it up!

1 Like

That doesn’t work with welds, only animations.

Are you sure about that because I do it with constraints all the time and it works fine for me

Try changing the welds cframe in a localscript if you have network ownership everyone should see the movement

Players have network ownership of their characters, but if you change weld C0 and C1 it won’t replicate for others.
That’s the reason why exploiters can easily do their dirty stuff

i just tested it and your correct

it never worked when i tested with a weld
but works when i did it with other constraints like hinges

here is a way you can do it if you don’t mind not using welds

-- script (ServerScriptService)
game.Players.PlayerAdded:Connect(function(player)
    player.CharacterAdded:Connect(function(character)
        task.wait() -- wait for the character parent to be set to workspace
        local part = Instance.new("Part")
        part.CanCollide = false
        part.Parent = character
        part:SetNetworkOwner(player)
    end)
end)
-- localscript (StarterCharacterScripts)
local runService = game:GetService("RunService")
local primaryPart = script.Parent.PrimaryPart
local part = script.Parent:WaitForChild("Part")
local i = 0
runService.HeartBeat:Connect(function(deltaTime)
    i += deltaTime
    part.CFrame = primaryPart.CFrame * CFrame.new(math.sin(i) * 4, 0, 0)
    part.AssemblyLinearVelocity = Vector3.new(0, 0, 0)
    part.AssemblyAngularVelocity = Vector3.new(0, 0, 0)
end)