Reliability of montage notifies and whether it's ok to use them to execute gameplay logic

Hey, I’ve recently came across two threads ( 1, 2 ) that made me question whether I’m doing things in a correct way, or bug-prone way that will cause issues in the future.

Quick summary of my setup:

  • I am using Unreal Engine 5.3.2
  • I have an Animation montage which fires two notifies:
    • ANS_HitTrace which is a custom blueprint class inheriting Anim Notify State.
    • Continue which is a Montage notify (Right click → Add notify → Montage Notify → typed “Continue” in the details panel under the “Notify Name” field, left everything else at default values).

ANS_HitTrace overrides Received_NotifyTick method and does standard sphere traces to detect whether an enemy has been hit or not.

Continue is used by dragging the On Notify Begin pin from the Play Montage node, and checking whether the notify name is equal to “Continue” or not. If so (or if the montage has been interrupted before playing that notify), the actor that triggered the montage is free to interrupt it, perform another action and move around.

Now, the threads linked at the beginning of this question suggest that notifies are not guaranteed to trigger. I was unable to find anything in the current Unreal Engine documentation on that matter. Should I worry about that and use other means instead of these notifies to execute my code?

If so, what are the alternatives?

Although this question was posted a year ago and went unanswered, I recently encountered the same issue and found the solution myself. I hope this information can be useful to someone else.

First, the answer is: it’s perfectly fine to use animation notifies if you are developing a standalone game or using them in server-side gameplay. Notifies only get lost if you are controlling a client-side character in a multiplayer game (for example, running Play In Editor (PIE) in Client mode).

I have read through all the threads on this forum and Reddit regarding animation notify issues, and I am confident that most of the answers are incorrect. I ran several tests and examined the source code to confirm my findings. According to the source code, all notifies within the timeframe from the previous update to the current one will be dispatched. However, the dispatching logic is dependent on the owner actor. For client-side controlled actors, the dispatching logic is influenced by the movement’s autonomous network update logic. Since this involves network logic, it is subject to network latency and framerate. As a result, notifies with timestamps shorter than 1/Min(fps, latency) may be lost because the next animation update resets all notifies, even the undelivered ones. I believe this is a bug in Unreal Engine, but I am unsure if it will be addressed in the future.

In summary, it is safe and reliable to use notifies for whatever you need. Just avoid using them for client-side controlled characters. Alternatively, you can create a non-player character (NPC) and control that NPC with the true player actor.