I’m reasonably certain that the issue we’re facing is this:
We make fairly heavy use of animation notifies and so the firing of them being unreliable is something of a major blocker. We are unlikely to have the option to upgrade to 5.8 in time for launch; is there a fix we can apply locally for this issue?
Yes, most likely this is the same issue. The reason this happens is because of a function in the character movement component, UCharacterMovementComponent::MoveAutonomous. This function ticks the skeletal mesh animation while handling network corrections to handle when a correction happens while playing a montage. The issue is that UCharacterMovementComponent::MoveAutonomous doesn’t perform a complete update and evaluation of the anim instance which has a cascading effect to where the queue for notifies contains both start and end data on every frame.
I’ve attached a patch file that should help with the issue. Could you try it out and see if it helps? It copies UAnimInstance::ActiveAnimNotifyState before MoveAutonomous updates the anim instance, and reapplies it after the notifies have been dispatched. Between copying and re-applying, it also strips out any non-montage notifies from the anim instances’ ActiveAnimNotifyState buffer since MoveAutonomous only cares about notifies from montages.