A little late but I highly recommend this thread for simulating projectiles: Modeling a projectile's motion
The post is a great starting point featuring gravity influence and it goes into further detail down the replies with things like ricochets and properly rotating the projectiles according to their path.
Once that’s set up, you can easily incorporate hitreg through Raycasting or even GetPartsInParts/Radius directly within the main Renderstepped function that handles the movement. The caveat is that you have to do everything on the client, otherwise it won’t be as accurate and/or efficient.
If you find all this too inefficient as it is, your best bet is to just hitscan by Raycasting and adding a Beam with Attachment0 at the muzzle and Attachment1 at the target and altering it’s interpolating properties to make it seem like there’s a bullet. Games like Counter-Blox do this.