Game Instances only exist on their own machine.
So you may be thinking “okay, I’ll just do a Server RPC and store all the players’ names on the Server’s GameInstance.”
That might work. I haven’t tried it myself though because I’m not sure how I would figure out whose name belongs to which player, AND get them assigned to them after they connect to the server after network travel.
The way that works best to handle this depends on whether the GameMode the players all go to uses Seamless Travel to get to the gameplay level after they set their names, or not.
If using seamless travel and their names are all assigned already, then you can store the names on the PlayerState class you’re using, and override a couple of functions in that playerstate class (they’re called copyproperty and overridewith) so that they copy or override (using old and new playerstates during level travel) the variables you want to persist (or override) from one level to another.
Now, these two playerstate functions are NOT used in NON-seamless travel, so if you’re doing it that way, then when the actor you stored the name on gets spawned into the level, you have to send the information from the client to the server, have the server set it, and make sure that setting replicates to all the clients. There are lots of wrong ways to do this because of race conditions between connecting to the server, opening the level, getting spawned in, possessing the pawn, etc. so even if client A’s stuff exists for the server, client B might not have fully connected or loaded yet, and might miss the nameplate getting updated (so for replicating to the clients I highly recommend using repnotify functions).
Finally, a 3rd way: Some online subsystems, such as Steam, will set the PlayerState’s built-in playername property based on the name the player has set in Steam. I have never used Steam so I don’t know how to make this one work, but I bet it’s a lot easier than the first two I mentioned (once you have your Steam thing set up for your Unreal project, that is).
The main thing that will mess you up is those race conditions, whatever method you choose. Even with repnotifies, there are race conditions not pertaining to networking, for example bout whether the actor containing the name has been spawned yet (it turns out for example that playerstates don’t exist until a few ticks after the level beginplay fires), that you’ll have to consider.
I’m sure someone on here knows a best practice to solve those when it comes to UE4. My approaches have been trial and error so far.
I recommend you show all the code involved at every step from creating a session through joining it all the way to when you set the nameplates, and show what class those are on, and what triggers them. This will help people on here help you troubleshoot.