I’m making a multiplayer lobby system where each player’s character have a Widget on top of their heads that contains their name, pfp and wether they are ready or not.
GetPlayerController(0) will always be the local player controller. So for each client it will be different, but for each player character (on one client) it will be the same.
You probably want to have a look at player states or similar.
Do not replicate components. Replicate values from base types (enum, float, int, bool etc.)
Create a PlayerName variable in the player state.
Set the variable as Rep Notify. This will create a OnRep PlayerName function.
In the function you update your Widgets Player name text w/the Player Name value.