What's the most effective method of making hits feel more responsive on high ping?

yea i know it’s unavoidable for everything to be decently unresponsive, but i really want to figure out a method that will make my game feel better for players with +200 ping, while staying secure, since i know how horrible games can feel past that point

i just want to know if there’s some obscure method out there to somewhat do this

2 Likes

Simulating hits on the client is probably the most responsive you can get.

i’ve seen untitled boxing game do something like that but i can’t wrap my head around how exactly it works

The way most games do it is having the animation and particles play on the client, and having the hit register on the server.

Then the client can approximate if someone was hit on their end, and play some hit effects.

If other players have to see particles, they can be sent a RemoteEvent to play hit effects at that location

This does mean that sometimes the client will think they hit someone that didn’t get hit. But it’s better to feel like you hit someone immediately than wait and see.

Here’s a pseudocode explanation of it

--Client script pseudocode
function OnAttack(attackData) --AttackData is whatever information is needed for your attack (animations, particles, etc)
     attackData.Animation:Play()
     clientFX(attackData) --Sounds, attack particles, anything the player should hear immediately for feedback
     serverAttack:FireServer(attackData, workspace:GetServerTimeNow())  --Use GetServerTimeNow to sync hits on the server better
     local hitRegister = checkHits() --Clientside Hit detection
     if hitRegister then
          hitFX(hitRegister) -- Play hit particles
     end
end

 --Serverside Pseudocode
function onServerAttack(player, attackData, timeStamp)
     if attackData.Particles then
          sendClientParticles:FireAllClients(attackData, player)
     end

     local serverHit = checkHits()
     if serverHit then
          damageHit()
          hitParticles()
     end
end

A practical application to explain this would be in FPS games - instead of waiting for the server to check if a person was hit, you can check on the client as well. While the server does get final say on things like damage, you can apply hitmarkers on the client even if the server disagrees with whether a hit was successful. This is what I mean by “Immediate feedback vs being correct” and is the trade off you have to balance when doing any sort of multiplayer game

1 Like

that gives me a great idea

i could give the player specific fx/sfx as the client detects the hit, to sort of build up to the real hit if possible, so it feels better either way, although that way if they miss they get to blame the game which is a problem but i’ll think about it

thank you! :+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1::+1: