Approaching damage in first person shooters

Hi devs,

I’m currently working on an FPS game, (with multiplayer) but I’m not sure what the best way to approach damage would be.
The bullets use LinearVelocity and AngularVelocity, which means they will have to be created on the client, and then have a copy on the server. (which is impossible, so it will need to be replicated to every other client) This means that the damage will have to be it’s own RemoteEvent, but that would make it susceptible to hacking. Other than creating the bullet entirely on the server, I’m not sure how to improve this. (Making it on the server would make it laggy and the velocities wouldn’t work properly)

Is there a good way to improve this?

You can set it up so hits are initially check on the client, then a table describing the hit is sent to the server. The server checks this event using the current state on the server and decides whether to issue damage. I would advise against using real physics for the bullets in this case as it will be hard to do this verification. You can use raycasting (hitscan) and then “fake” the bullet travel time by introducing a delay before hits are checked on the server, similar to a lot of fps games. You should also look into the FastCast module which is specially designed for this kind of system, to see if it would work for you.

In simple terms, just call TakeDamage of their humanoid.

But if you want it more professionally, you’d have an assist/kill system to allow players to get assists by helping their teammate kill somebody.

I never made an FPS game yet so maybe I misunderstood what you’re asking.