Multiplayer Performance (Blueprint) - Replications, Multicasts

I would like to know the best practices when it comes to creating a Multiplayer Game using Blueprints.
What should I avoid, what would cost performance and latency issues, what would affect the least/most amount of bandwidth when playing over a network?

From what I have read (I may be wrong) Multicasts costs more than using ‘Replicated Variables’ and should be limited. But what about having 30-50 Replicated Variables, would that be worse?

For e.g. if I had a player ‘block animation’ - should I use a ‘Run on Server’ with a ‘replicated variable’ to play this Animation from a Animgraph in the Animation Blueprint or
would it be better to use a Multicast to play the Animation Montage? Both would give the same result and everyone playing would be able to see it. But which is less costly?

If anyone could give me any do’s and don’ts, and anything else I could do to avoid cost in performance when it comes to Creating a Multiplayer Game?

Any advice would be appreciated.
Thanks

The choice between Multicast vs Replicated variables is not about performance.

Multicast events are events like instant sound effects or particle effects while Replicated variables are used for states like DoorOpened or EscalatorOn.

Performance is gained from controlling relevancy of the objects and you can also use the Replication Graph system.

RunOnServer RPC’s from clients could also be throttled so the Client can’t spam the Server with unnecessary requests.

Reliable Multicast RPC’s has more overhead than unreliable RPC’s and the Reliable events are rarely necessary.

Then there is the data-types of course.
Name is cheaper than String which is cheaper than Text.

The update frequency on any Actor can also be tweaked.

Watch all 6 videos of the series.

Thanks for your help. At least Im going in the right direction now, Thank you