I’m creating a fighting type game and for each move I have some sort of effect. I’m using FireAllClients to replicate these effects onto other clients and the effects for other mechanics such as block breaks. I’m wondering if this would have a significant effect on performance especially on a server with 15 players and if it does are there any solutions. One solution I have is to fireclients to anybody in a certain range, but I’m not sure if it would do too much.
Is there a reason these effects can’t be done on the server?
If they can be done, then you’re potentially overcomplicating it. Otherwise, no, it doesn’t really matter.
You could maybe try to make settings where the player can disable particles - or anything which can increase their average FPS.
Also, depending on the case, it might be better to use client to server communication. Though, I’m no expert on choosing between client to server communication and server to all clients communication.
Some of the effects are complicated and lags the server
It does matter, by giving the clients information necessary to render effects, latency can be reduced and the effects can feel more responsive. This is why movement is also handled on the client.
I’m grasping at straws without knowing what these effects constitute, however it’s pretty standard to just replicate to those in a sensible range (as you suggested) then. Network bandwidth is always more valuable than client memory or client processor utilisation.
Ok thanks ill just go with that then
Latency will remain regardless in this situation, because the packets will always be replicated. The only difference is if the packets are replicated by you (via Remotes) or by Roblox (through internal comms). In regards to responsiveness, yes - however it depends on what the “effects” constitute. Some effects (such as particles, or sounds) have no performance impact on the server and are entirely handled on the clients - so in situations where the effects are limited to things like Particles or Sounds, it’s advisable to just handle them on the server.
You can find out more about how this process works in this article: Roblox Client-Server Model
You’re right my bad, based off of previous experiences I found it more responsive to replicate my effects on the clients opposed to the server (Meshes, Particle Emitters, Beams)