two good ways to handle this:
- make the projectile on the server, and move it on the server.
- fire a remote to the server, which fires a remote to ALL clients, and each client makes its own projectile (that only they can see), but they all have the same destination/speed, so it will be pretty well in sync (except someone with 500ms ping will see projectiles from half a second ago).
With method #2, you can ensure that the client firing it doesnt have any latency by immediately doing the projectile for the person who fired it, then telling the server to fire a remote to the OTHER clients, as it doesn’t really matter if they are seeing it in sync.
However, if this is a weapon projectile, it should probably be handled on the server-side otherwise people can tell the server they are shooting X player from Y position even if they aren’t even in that area. Or, you can still do it client-side (which I recommend), but do security checks on the server-side (i.e raycast) to verify it is possible to shoot that location from where that player is. That way, people don’t make “aimbot” scripts that just shoot through your walls and such.
If you’d like I can explain in better detail if this is unclear. Just remember, NEVER trust anything a client sent from a remote. Always do validation and security checks. Even just cosmetic stuff can be abused in major ways