I've had many problems in the past dealing with modders and exploiters. So, as of late, I've been using Filtering to make sure things are nice and clean at all times. Under normal circumstances, I'd be using Rays to make sure that things connect quickly, but I've found myself stumped when it comes to projectiles that, as the name suggests, have travel time.
Normally I'm content having a projectile be anchored and moving along using CFrame, but there seems to be something off about it. I can't help but feel there's a disconnect between the player and what they're shooting. Now I'm not exactly going for something matrix-like, but I do want all players to see the projectiles being fired at one another.
At the moment I'm using tools connect to the server through a RemoteEvent that creates the projectile, but are there any other ways I could go about this?
One problem you may be running into is problem talked about by this article: Fighting Lag. Specifically, this is the fact that there is time between the player pressing "fire" and the server knowing about it. You might try to fix this by making the projectile appear as a "Local" projectile, at least until the server creates it -- but you'll need to delete the local projectile when the server creates the correct one, and they are unlikely to be in the same place, which will cause a jump.
An improvement is that all projectiles will be animated by the client. The strategy is this:
RunService
to update the position of the projectile smoothly. Keep in mind that the server only updates the physics up to 30x/sec, whereas the RunService's Heartbeat can run up to 60x/sec. ie, don't just do "visibleProjectile.CFrame = serverProjectile.CFrame" -- use lerp, or - if you can - predict where it will go (which is better for users if they might dodge the projectiles -- it's better to see the projectile where it will be because that's where it'll be by the time their reaction gets back to the server). If the prediction is off, you'll have to animate it or teleport it to the correct position.