Server Authoritative Dmg Popups

Hello. Looking to collect thoughts from those with more experience.

I’m making a game with a lot of enemies and a lot of damage number popups. My idea was for a server authoritative game, but I was curious what you guys thought about this issue:

If a client casts an ability, I would assume it would be server-auth with client prediction/reconciliation. So the player experiences the ability being cast right away. Okay, but what about damage numbers? Should the client wait for the server to send those back before displaying? Or would that be too much delay for a fast paced game?

Note: Each client would only see their own dmg numbers.

So what are the options?

  • Server Authoritative: the server decides the damage numbers and client has to wait to present them (would the delay hurt the “Umphf” factor of ability presentation?)

  • Client simulates the dmg numbers> server trusts but verifies the results are not outside expected ranges.

  • Server generates pre-rolled damage numbers for each ability or some similar buffering technique? (not sure how to keep that in sync though)

Thoughts? Ideas? Am I overthinking this? I’ll work on this and try to update it with what I’ve found.

1 Like

Hmm, no edit button for fixing format :confused:

Hey @Travis_Miller, try now!

Interesting question! I think in general it would depend on a variety of factors, including how much you value the responsiveness vs. a potential “seeing the occasional wrong value”.

You could also go this way (which is similar to your second): both server and player calculate the damage value. The player just uses it to visualise this damage label on top of the enemy, instantaneously and without network delay. Server uses its own calculation to decide on the fate of the enemy, whether it’s killed or not, etc.
If the player were to cheat, well, they would only see the wrong number - it’s not in their interest.

I guess you’ll only know what looks best for your game by running a few tests. Try using the coherence cloud and spin up a server in a different region, so you can get some real delay!