Replication issue

Sure, basically if you set a variable to “replicated”, that means that if the server thinks that this variable has a different value on a client, then the server will send an update to this client. So for example if the “Controlled Character” variable would be set to replicate, then if it changes on the server, it will also automatically change on all relevant clients (in this case on the owning client only).
So that would mean you only need to set this on the server and it will be automatically set on the client and you would not need to use a RPC to set it.

But if you want to execute some logic as soon as the variable changes, then you would use “repnotify”. If you set a variable to be “repnotify”, than that is the same as if you would set it to be “replicated” plus a function gets called on the server and the client every time the server issues an update.
So if you set a variable to be “repnotify” than that will automatically create a new function. So for example if you would set the “Controlled Character” variable to be “repnotify” and it changes on the server then the server will also execute the function. Also as soon as the update arrives on the client, this function will also get executed on the client.
[HR][/HR]
I suggest you watch this video here https://www.youtube.com/watch?v=a8ukx6nPub0

Further you could take a look at the content examples for networking (under the learn tab of the epic launcher you can download the project), here’s the doc to that Content Examples Sample Project for Unreal Engine | Unreal Engine 5.3 Documentation

And as always (this is/might be too much at the beginning though) Multiplayer Network Compendium | An Unreal Engine Blog by Cedric Neukirchen
[HR][/HR]
And if you’re doing a multiplayer game, then you will need to make use of replicated variables and repnotify =)