I have done this exact thing, byt I didnt use multicast because it disnt need to be instant or reliable. I just set a variable (which is replicated) on the server and then every tick on every machine it sets the scalar param using that replicated variable. I have a timer which every 0.25 seconds sends a Server event from the client to update the variable.
This controls the engine glow on my hover tanks across all machines.
Your requirements are simpler and doesnt need to happen constantly, just turn on and off. And what you are describing that you are doing should work so please share your code or screenshots and maybe we can figure out what’s missing.
Sure, I have tried tons of things so I tried to clean all and place the main code in BP.
The thing is that Character BP starts empty with no Material associated to Mesh and pop up an Animal Menu. Once you select a Bear, creates a dynamic material instance of Bear_Material and Set Material to the Mesh. I can see the Material of the Bear on clients and server. The thing is that I can not replicate the parameter change value as I wanna to.
After SO many changes, maybe now Im missing something or any step but this could be a start point.
I would say, do t pass the MDI thrhough the RPC.
Let the server and each client make their own MDI and store it in their own NON replicated variable. Only replicate the variable that is used to set the material parameter.
So you will plug the actor’s OWN MDI into the setparameter node target rather than passing in another machine’s MDI through the RPC
This worked for me. Assigned a Material Instance to the Mesh, checked the box of my scalar paremeter and just this simple thing to make it get replicated using the multicast way. Now works fine and Material parameters opens me a new horizont to work and add scars, grey hair, dirt…
Finally, solution was much easier than what I was expecting.