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.
Sender client already has the same data and it is able to call its own notify function by itself. Going to server and coming back is unnecessary.
Same problem occurs with the ‘Replicate’ option without notify, too. The screenshot above is just an example from my project.
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.
Hi Vaei, do you know how can I define a custom event with C++ that multicasts with SkipOwner condition, without variable replication?
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.