Animator.AnimationPlayed Firing Unreliably

I’m trying to spawn vfx on clients using AnimationPlayed.

The way it works is that Client1 will connect to it’s own Animator.AnimationPlayed and then play vfx on its AnimationEvents.
Client1 also connects to Client2’s Animator.AnimationPlayed and plays vfx on their character.

However the problem I’ve run into is that Animator.AnimationPlayed fires differently on Clients that don’t own that Animator.

Let me provide a video that visualizes this:

Here Client1 is the one sprinting forward.
The left output tab is Client2 connecting to Client1’s Animator.AnimationPlayed (The Problem) and the right output tab is Client1 connecting to it’s own Animator.AnimationPlayed (The Expected Result)

What’s seen in the right output tab should ideally also reflect in the left output tab. However we see unexpected firing of the AnimationPlayed on Clients that do not own the Animator.

I don’t know why this happens, since my Animate scripts also use Animators instead of Humanoids. This mismatch in events should not take place.

I’m using this system to replicate vfx that is dependent on AnimationEvents rather than firing remotes everytime someone hits an event, making use of the pipeline that already replicates animations, however this problem makes it impossible to detect the animations on other players reliably.

Please let me know how to fix this!

1 Like