Gameplay Cue Notify Actors "On Become Relevant" never triggers for Clients if added through a Gameplay Effect when the actor spawns.

In a Listen Server environment, when an actor has a Gameplay Cue applied to it via a Gameplay Effect right after it spawns, the client (with a sufficiently poor connection) will never trigger the Gameplay Cue’s “On Become Relevant”. This appears to be caused by the fact that the Client hasn’t finished spawning the actor when the Cue/Effect is told to replicate.

[Attachment Removed]

Steps to Reproduce

  1. In Blueprint, make a Gameplay Cue Notify Actor and put some logic in its “On Become Relevant” function.
  2. Make a Gameplay Effect that adds this Gameplay Cue. (Components, Modifiers, and Executions can be left empty.)
  3. Make a Gameplay Ability (that runs on Server Only) that adds this new Effect to its owning Ability System Component.
  4. Give that ability to a Bot when it spawns and have it activate immediately.
  5. (Optional) Enable Network Emulation mode, set the Emulation Target to “Everyone” and the Profile to “Bad”.

In a Listen Server environment, the Host will trigger the Cue’s “On Become Relevant”, but the client will not.

[Attachment Removed]

I should probably include that this does not seem to always happen, but it does happen frequently enough that it’s fairly easy to repro with bad emulation settings.

[Attachment Removed]

Hi, Would be able to elaborate on your set up a bit? I’m not able to repro at all on my end so I think I’m missing something. I’ve got it set up to call Add Gameplay Cue (Looping) immediately on the ability, which is activated as soon as it’s added and added when the actor spawns.

[Attachment Removed]

Bumping because I think this question was auto-closed before a solution was found.

Also going to update the original post to reflect the actual issue/repro.

[Attachment Removed]

Hey Cody,

My apologies for the confusion. It seems like my original post is misleading - adding Gameplay Cues from the ability seems to work perfectly fine.

The issue occurs when adding a Gameplay Cue via a Gameplay Effect. So my setup is:

Gameplay Ability -> ApplyEffectSpecToTarget

The Gameplay Effect has “Require Modifier Success to Trigger Cues” and “Suppress Stacking Cues” both set to true. In the “Gameplay Cues” array, there is one element, with the attribute set to “None”, Min/Max level both set to “0.0”, and the Gameplay Cue Tag set to my desired Gameplay Cue.

I call Add Gameplay Cue “A” from the ability, then apply the effect (which adds Gameplay Cue “B”) from the ability, which is where I got confused.

The “Components”, “Modifiers”, and “Execution” arrays can all be empty.

Hope this helps!

[Attachment Removed]

Thanks for the update. I was able to reproduce the issue exactly as you described. I’m continuing to investigate a fix and just wanted to confirm that it’s actively being looked into.

[Attachment Removed]

Hi! Apologies for the delay. I’ve been digging around at this off and on for a while now only to find knock-ons and other replication issues with every fix I try. Because of this I think it’s best that this get rolled into another ticket I have, a bit of an overhaul to Gameplay Cues in general, as a proper fix is going to have to be more systemic than initially hoped. Unfortunately in the meantime I think that means that for instances like this the best short term solution may be to ensure the actor has finished replicating to the client before applying the desired GEs and GCs.

[Attachment Removed]

Thank you for the reply! That’s a bit disappointing to hear, but I’m sure it’s a complex issue to solve.

I think waiting to apply the GE from the host only after the client has finished replicating could be dangerous and lead to undesired situations (especially on clients with poor connection), but we’ll investigate a way to bypass this issue.

Thank you for taking a look at this!

[Attachment Removed]