How should I do my hitbox detection system for a fast paced combat game?

So, I’ve been reading through many posts about client or server sided hitboxes, and I still don’t know which one is better for my situation. I have a fast paced fighting game with hitboxes that uses Spatial Query (GetPartBoundsInBox). My game goes from Client Key Input to Server, which then hitbox detects (server) to then loop through and use a damage module on each enemy. I also Fire to all Clients to do VFX, SFX, etc.

With a lot of testing, I’ve found that the server delay or server hitbox detection is not too bad when everyone is at good ping. Rarely hitboxes can be a bit wonky, and with high ping players they usually cannot hit well with delays and get hit more often, they are at a bit of a disadvantage.

My question is, should I switch to client side hitboxes in the future and will it boost performance, and how? This will also take time, as it will complicate and reshuffle my order of VFX SFX and attribute setting, as I would have to fire to the server around 3 times, one for setting attributes, one for client hitbox detection to server, and one with waits and endlags, and CDs.

I’ve also heard from people who side with server hitboxes say that doing client hitboxes will just benefit laggy players and cause fast players to suffer. If a high ping player cast a hitbox on a low ping player, wouldn’t the low ping player see the hitbox being inaccurate or reach way farther than it is? And if I do a sanity check on the server with magnitude or something, aren’t server positions delayed or inaccurate to the client positions, and wouldn’t doing server hitboxes be the same then? Wouldn’t fast players just suffer more in client sided hitboxes? I honestly don’t know what to do, people will probably just say do client hitboxes but I need to know how it would actually help with performance, and if it actually works. I haven’t found any reasons other than “client is faster.”

Chart I saw from stef0206:

I’ve also heard about Instant Feedback on client hitboxes which is nice, but wouldn’t SFX and VFX have to go to the server anyway to then fire to all clients so that everyone can see and not just the player?

I would rather do client hitboxes for better performance. You can send over a timer over to the server of how long it look to send and use it for distance. but I’m not gonna get in depth.

this is what happened when i used client hitboxes, it seems really accurate for me but then this is what the other player saw:


if i put a check from the server wouldn’t it just be useless because then it’ll just act the same as my current server hitboxes, and if i put a lenient magnitude check then the other player will still see this grab range or see it not hit

In most games like combat warriors is the same way with hitboxes and even Fortnite too. It always looks like it didn’t hit us from our screens. The best to make it not look broken is to either reduce the range or send over the game time in the parameter and use it to see how long it takes to send over.

Every remote event has a delay time. (even when moving)

Reduce the range of the client hitbox? But wouldn’t this incorrect visual still occur, as on my friend’s screen he saw me way farther than on my screen when I was close. We were both at around 50-80 ping.