Hello, I have some questions about projectile attacks. When it comes to making projectile attacks like arrows, lasers, or a fireball. (Let’s just say a fireball for this case) What is the best way to go about it?

I’ve been struggling with this for a while now and there are 2 main issues I’m still very confused with.

- The first problem I have is whether I should use physics equations and raycasting or roblox’s mover constraints. I’ve tried letting the server do all the calculations and using raycasting every heartbeat on the server and letting every client update the attack on their own end based on the server’s calculation, but I’m concerned about creating lag. Is this the best way to go about it or is the lag a legit concern if I plan on having many projectiles?

I’ve also tried using mover constraints controlled by the server, but it seems to lag at the very start of every attack. Is there away around this so that the attack starts with speed from every player’s perspective?

- The second problem is I’m not sure whether to let the server do all the calculations or let the client which did the attack do all the calculations and then only check on the server for collisions. Is this a good way to go about it? My main concern with this method is other players seeing something way off than what it really is for all the other players. This is why I’m leaning towards doing the calculations on the server.

Anything at all to help point me in the right direction is really appreciated, thank you!