Multiplayer assigning and changing dynamic material parameters

Here’s the thing. BeginPlay fires on both server and client. That’s why you have SwitchHasAuthoirty which makes an execution path for the server (Authority pin), and one for client (Remote pin), though that statement is only valid if the actor is replicated. Also you shouldn’t need to use RPCs at all. You are already on server, why have ServerBeginPlay event as a server RPC? That will make it 100% drop on clients, as they don’t own WaterSplashes actor.

So here’s what you need to do:

  1. Make sure WaterSplashes actor is replicated.
  2. Make ServerBeginPlay event a regular non-replicated event.