Animations Do Not Replicate with Filtering Enabled (Cropped up again)

I literally just encountered this bug (I literally ran into this 15 minutes ago while working on my game.) Basically, if you have a local script that has an animation object (Ie: The default Roblox character animation script, or weapon animations), and the game is running filtering, the animations will NOT replicate to other players. They will play on the client that played the animation absolutely fine, but to everyone else, its as if the animations were never played.

This means that all games that have Filtering-Enabled on will not replicate animations (Character animations, emotes, weapon animations, etc.)

Conditions needed to recreate bug:
Game must be running FilteringEnabled
Local script playing animation loaded into a humanoid.

Video of the bug:

Copy of the place that I used to replicate this bug (Confidential):

Note: This bug can be replicated with any place that has filtering enabled on.

Hopefully this will be fixed soon, otherwise I’ll have to shutdown my game until it’s fixed.

1 Like

This is definitely a new bug to do with this week’s updates. ROBLOX animations were working fine before it.

This bug affects server-side ROBLOX animations as well. My NPCs are suffering the same issue.

Also, my animations aren’t loading either. They were working fine before the update.

I can confirm this has affected my horse game.

Actually broke all the horses at first, had to do a quick update to fix them.

I have experienced this bug several months ago. It is definitely not new. The only workaround I see is to use RemoteEvents/such to send a signal to ALL clients saying they need to load and play a specific animation. I did observe the different scenarios, having a client play the animation for a NPC, as well as having the server play the animation for a NPC - in both cases, it did not replicate. This was regardless of whether FilteringEnabled was on or not.

While the fix of this bug may cause some unexpected events on some of my places using that workaround, I would certainly like it to be fixed as soon as possible! :slight_smile:

The stock ROBLOX animations definitely used to work. They don’t now, so the bug is new.

Sorry we made a booboo. It should be fixed on new servers, let me know otherwise.

Testing now.

Animations are back to normal - thanks so much for the prompt fix :smiley:

Err… I have a fear that AnimationTracks played from the server still won’t replicate. Trying it out now.

yep, my fears were right - only when you join a server, the current pose of the character the server is playing the animationtrack on is replicated. Otherwise not.

Fix please?

so, I don’t know if this is related or not, but I create a model in the camera (not using FE this time, although I normally do), and create the AnimationController and Animation in the model. This is all from a local script. I then play the animation from the local script after waiting 5 seconds (have to do that sometimes), and it works fine in PlaySolo, however in online mode, nothing is animated.

This is the mother of all necro bumps (I know, deal with it :swag:), but this issue appears to have cropped up again. The animations play on the client that tries to play them just fine, but they won’t replicate to other clients.

Using a localscript, animations are located physically under the tool (Animations are loaded/played to the humanoid via a local script). I haven’t made any changes, and it’s doing the exact same behavior again. Animations load fine when the game isn’t running filtering.

Localscript: [spoiler]

[code]--------------------
–| WaitForChild |–

– Waits for parent.child to exist, then returns it
local function WaitForChild(parent, childName)
assert(parent, “ERROR: WaitForChild: parent is nil”)
while not parent:FindFirstChild(childName) do parent.ChildAdded:wait() end
return parent[childName]
end


–| Variables |–

local g_mouse = nil

local Tool = script.Parent

local ScytheEquipAnimation = WaitForChild(script, ‘ScytheEquip2’)
local ScytheIdleAnimation = WaitForChild(script, ‘ScytheIdle2’)
local ScytheSlashAnimation = WaitForChild(script, ‘ScytheSlash’)

local ScytheEquipTrack = nil
local ScytheIdleTrack = nil
local ScytheSlashTrack = nil


–| Functions |–

local function OnEquipped(mouse)
–Set the mouse icon to nothing.
g_mouse = mouse
mouse.Icon = “http://www.roblox.com/asset?id=18662155”
local myModel = Tool.Parent
local humanoid = myModel:FindFirstChild(‘Human’)
if humanoid then – Preload animations
ScytheEquipTrack = humanoid:LoadAnimation(ScytheEquipAnimation)
if ScytheEquipTrack then ScytheEquipTrack:Play() end

	ScytheIdleTrack = humanoid:LoadAnimation(ScytheIdleAnimation)
	if ScytheIdleTrack then ScytheIdleTrack:Play() end

	ScytheSlashTrack = humanoid:LoadAnimation(ScytheSlashAnimation)
end

end

local slash_debounce = false
Tool.Activated:connect(function()
if not slash_debounce then
slash_debounce = true
if ScytheSlashTrack then ScytheSlashTrack:Play() end
Tool.Handle.SwordSlash:Play()
wait(.5)
slash_debounce = false
end
end)

local function OnUnequipped(mouse)
– Stop all animations
–Set their mouse icon to the cursor.
g_mouse.Icon = “rbxasset://textures/ArrowFarCursor.png”
if ScytheEquipTrack then ScytheEquipTrack:Stop() end
if ScytheIdleTrack then ScytheIdleTrack:Stop() end
if ScytheSlashTrack then ScytheSlashTrack:Stop() end
end


–| Script Logic |–

Tool.Equipped:connect(OnEquipped)
Tool.Unequipped:connect(OnUnequipped)[/code]
[/spoiler]

Picture of the tool layout:

All the animations start with rbxassetid://, and are loaded via the localscript.

I hate to bump an old thread, however, I just want to clarify.

With FilteringEnabled, if the client begins an animation, it will be replicated to all of the other players?
(Without having to use RemoteEvents/RemoteFunctions)

If they play it on an AnimationController of a rig they possess the network ownership of, yes.

Players automatically receive the network ownership of their own characters, and therefore can run their own characters’ animations locally and have it replicated.

2 Likes