Avatar dies on other people's clients but not on server or player's own client


#1

Just in the past several hours this started happening a lot but I haven’t updated my game since yesterday.

To some players it will appear as if an avatar has died - their limbs fall apart and they lie on a heap.
To other players and the player whose avatar it is the avatar has not died - they can still move or play. To the clients where the avatar appears dead it is as if the player is invisible - the blue dot moves on the minimap and they can be attacked out of nowhere.

I managed to reproduce this on my machine in client-server testing:

I discovered that the avatar in question still has health left. If I query the humanoid’s state from the command line, the client where it has fallen apart reports it as dead but the server reports it as RunningNoPhysics.

  • How often does the bug happen (Everytime/sometimes/rarely)? What are the steps that reproduce the bug? Please list them in very high detail. Provide simple example places that exhibit the bug and provide description of what you believe should be the behavior.

It used to happen infrequently but seems to happen on almost all of my game servers now as I play.

  • Where does the bug happen (www, gametest, etc) Is it level-specific? Is it game specific? Please post a link to the place that exhibits the issue.
  • When did the bug start happening? If we can tie it to a specific release that helps us figure out what we broke.

Like I said, although it happened rarely before, it seems to be happening very frequently as of this afternoon 12/4 pacific time.

  • Anything else that you would want to know about the bug if it were your job to find and fix it.

The avatars in my game change costumes frequently - the code I started with to do this was here: https://www.roblox.com/library/544389456/R6-R15-Compatible-Package-Giver
The code disables the death state on the client of the avatar but not on the other clients - my theory is that some clients are deciding that the avatar is dead when it is having its parts replaced and don’t seem to care what the server thinks. (FWIW, I don’t actually replace the avatar’s head, I replace its mesh and various properties.)
I’m happy to let you guys poke around in my project if you’d like.


#2

Do you have Players:CharacterAutoLoads?


#3

A setting affecting Humanoid death detection was reverted ~30 minutes ago. Do you still have this issue?


#4

Played 3 times, didn’t see the issue recur. Not a guarantee but pretty promising.


#5

Do you have a repro case for this from yesterday?

Ok, I see what is happening here and possibly why this happens in other rare cases. This seems like a case where some of the game engine behavior probably should be in lua, but currently isn’t.

When a character is placed into the “dead” state, a timer starts. Previously, a health regen script would normally give the character health before the timer expired. The simulation would incorrectly allow the character to transition from the dead state to another state for Humanoids other than yourself. This means that a dead character would tend to not be dead at the end of the timer and the respawn logic would not be triggered.

However, in some cases the Humanoid would still have 0 health, be in the dead state, or have no neck. In such a case the respawn logic would run. With FE and possible desync, some users would attempt to valiantly respawn someone else’s character but the server would reject this update. Basically one client saying to another “you’re dead to me.”

You may want to disable Players:CharacterAutoLoads and handle this in Lua if this problem persists during normal gameplay. I might try to enable the logic that prevents a transition from the dead state to non-dead state on the server later today. This is not ideal though as it might make studio testing difficult.