Server -> Client & Client -> Server issues

Hello friends!

I am simply trying to replicate an explosion effect from the client to the server and then to all of the other clients. So I tried to set an RPC to run the spawn emitter function at the right location ran on the server when the client calls it. The issue is that the different replication types give different results, with none of them displaying the explosion on the server and ALL clients.

Here is what happens with each different replication type:

Multicast: Server to client works, client to server does not.

Run on Server: Client to Server works, server to client does not.

Run on Owning Client: Doesn’t work either direction(but that makes sense).

None of them manage to make it back to the 2nd client.

Here is the graph of my set-up. Spent the last couple days pouring through the answerhub and the forums as well as watching and rewatching the official youtube replication tut. Can’t seem to find what I am doing wrong.

Link for full res: http://imgur.com/3aN7de1

You could trigger a ServerEvent from the client and afterwards a Multicast event from the server. Like this (would spawn the emitter on client1, client2 and even on a listening server player if there is any):

Multicast only works from Server to ALL. Clients can’t call Multicasts.
RunOnServer is meant to be called from a Client and then executed on a Server.
RunOnOwningClient is meant to be called from a Server and then executed on the Owning Client of the given Actor.

When your Client is the one initiating the call to get explosions on other clients and server, then you need a “RunOnServer”
and afterwards a “Multicast”. This will make sure that you get from Client to Server and THEN multicast back to everyone.

Also, for a “RunOnServer” to not being dropped, you need the Client who calls it to be the Owner of the Actor.
This is normally the case for the PlayerController or a possessed PlayerPawn.

Thanks for the input! I didn’t think to have an RPC inside of an RPC, so now I am doing the line trace as RunOnServer and then generate the effect at the hit point and apply damage as a multicast. This replication stuff is tricky to wrap your head around. Glad to have you guys.