Networking "Run on Server" won't trigger

I have not tried reproducing this in a blank project yet, here’s what I am doing:

  • Character has an array of Actors (replicated)
  • Character’s ‘on Begin Play’ triggers a Run on Server event that Spawns the Actors and adds them into the array
  • In stand-alone I’m able to see that both Server and Client have the appropriate objects by doing the console command: getall MyCharacter_C MyAbilities (this was run on both client and server with the same results showing for both)
  • The Actor MyAbility has an ‘Activate’ (non replicated) which calls ‘Server Spawn’ (Run on Server) that is supposed to spawn a particle effect through ‘Play for All’ (Multicast)
  • Calling the ‘Activate’ from the Host plays everything as intended, both the host machine and client machine see the particle effect
  • Calling the ‘Activate’ from the Client will not play anything, either on the Host or the Client
  • I have a couple of print string at the beginning of ‘Activate’, ‘Server Spawn’ and ‘Play for All’.
  • On the Host, all print string trigger, with the Play for All triggering on both host and client
  • On the Client, only the ‘Activate’ print string triggers

Why is that?

The problem stemmed from not properly assigning the owner of the spawned Actor.

Even though the server is the one responsible for spawning the Actors, you need to make sure each player owns their respective objects for “Run on Server” calls to work properly.