If I replicate an owners variable to the server then to the clients, it replicates the same(received) data to the owner too. This unnecessary data flow wastes bandwith and cost increases linearly: O(avg call count per client*number of clients).
A variable option like “Replicate to everyone, except the owner” would solve this issue.
In C++ you can use DOREPLIFETIME_CONDITION( AMySomething, MyVariable, COND_SkipOwner ); , obviously this isn’t a solution for you since you’re asking to have it in BP, but main point is the functionality exists already if they are willing to extend it to BP… however if you have a C++ parent class you could declare the variable there and use COND_SkipOwner.
It would be good if they could bring all the conditions to BP variables, I’m unsure why they haven’t.
Not with UFUNCTION specifiers, you’d have to check the Role when the RPC is received for it to decide whether to execute the code. You could always have a virtual function that your blueprint can override that is called by your C++ code if the Role is correct.