Sending gameplay event to actor on server isn't triggering an ability call for client characters.

I’m having trouble using a send gameplay event to actor call to activate an ability with a passed in payload in multiplayer. My setup runs all abilities server side, and one of the abilities has a wait event that ultimately leads us to this stage.

Since this is all in an ability, I’ve verified that this is firing on the server side. However, the gameplay ability tied with the gameplay event is not firing at all, and only fires if the owning actor is controlled by the server, it seems. I’m not sure where to start by fixing this - I saw this other thread on what seemed to be a similar issue Project Lyra SendGameplayEventToActor not triggering ability on clients even when calling from server , but I’m still a bit new to UE5 so I couldn’t make heads or tails of the answer there.

I’ve issued a fix where instead of sending gameplay event to actor within the function, I essentially just created an event on the character itself that replicates to owning client that just.. sends the gameplay event. That way, I know at least one call is being called on the owning client. However, i dont know if this is best practice, so if theres a better implementation please feel free to add it to the end of this thread.

The owning-client hop works, but it is the wrong side of the network for a server-authoritative setup.

Send Gameplay Event to Actor does not replicate. It only activates abilities on the Ability System Component of the actor you pass in, on the machine where you call it. From a server ability that reaches client pawns only when the server itself owns that pawn, which is what you saw. Sending the event on the owning client afterwards starts the ability on the client ASC. If that ability is Local Only or Local Predicted you now have one combo step running on a different machine from the rest, and any payload the client builds is not the server’s.

For “everything runs on the server”:

  • Keep the ability that should start as Server Only (or Server Initiated), granted on the server ASC. Local Only will never activate from a server event.
  • From the server ability, send the event to the pawn itself, the actor whose ASC is running the ability. Not the player controller, and not a client-side copy.
  • The trigger source on the listening ability has to include Gameplay Event, and the event tag has to match exactly. A parent tag will not start it.
  • If the client has to supply the payload, send that through a Server RPC into the server ability, then send the gameplay event on the server. Do not send the event on the client and expect the server ability to hear it.

Use the owning-client RPC only to play the montage. Leave the actual ability activation on the server.