Animation replication is different from all other replication IIRC. When you play an animation from the server multiple times, you actually get separate tracks each with their own animation object on the client.
As above, it’s not always as straight forward as you think, and it’s pointless to argue about engine internals since nobody knows. Focus on impact the issue has on you if you want it resolved more quickly.
We are working on improvements to the animation replication system that should resolve this issue. Unfortunately, those improvements are taking longer than expected as we don’t want to break any existing functionality. We are continuing to work on this, though and we hope to release it as soon as it is working well.
Core priority animations seem to replicate properly.
For anyone else if the animation doesn’t have to be a higher priority this seems to be the solutuion
I think Animations should be just handled clientside, why would the server (which no one plays on the server) handle animations? Who will see the server animations apart from only thing doing is sending the information to all clients which you can also do using OnClientEvent’s and FireAllClients() call in case you want it to replicate/sync with other clients, but i think just having the server fire a remote to all clients to update the animations for these is the best solution
But go ahead, flag this post because this forum is literally 1984
It’s 2023 and Roblox still hasn’t fixed this bug. The only solution to this is by using RemoteEvents, firing all clients and changing the loop but, the problem is that the server gets none of that code and it will remain dead. You sadly cannot send the loaded animation back to the server but better than nothing I suppose
That’s great because it’s also an issue via client side as well. Animations set to not loop via client do not replicate the behavior to the server. But a way around this issue would be to wait for the animation to complete then stop it. I guess Ill try that.
The solution would just be this.
anim.Looped=false
spawn(function()
local anim=anim
anim.Stopped:wait()
anim:Stop()
end)
I’d only use spawn function if you want to carry on with the code you have around it without making it wait for the animation to complete.
This looped property may not replicate but if you unloop the animation and wait for it to stop then stop the animation this does replicate across server client boundaries.
In this way, it’s necessary to stop it a little early (at least 0.1s or so) and fade it out smoothly. Otherwise, the next loop of the animation will play and get interrupted once the client receives the :Stop signal.
Roblox, I beg. This issue wasted an hour of development time, as I could not figure out why for the life of me some of my user-submitted emotes looped properly and some didn’t, and I didn’t get proper events. Please fix this, it’s been known for nearly 5 years now.
The solution is simply this. If you have an animations engine simply patch them with a spawn function variant. Or even something like this local function AnimBoundary(anim)
–this method replicates across server client boundaries
local anim=anim
local animhandle
animhandle=spawn(function()
anim.Looped=false
anim.Stopped:wait()
anim:Stop()
animhandle:Disconnect()
end)
end