I have Steam Subsystem set up properly. I’m using beacons to create a party before starting matchmaking. When a client is joining the party, I have access to his UniqueId. This is where I wanted to read the player’s nickname and store it in the server’s version of the client beacon. However for some reason I can’t find a way to do this. The Identity Interface has a function called GetPlayerNickname, but it didn’t work (it returned the party host’s name). The party is working fine, the unique id is valid, as I can open the player’s steam profile with it.
Does anyone know how can I get the player’s nickname from his unique id?
Once you get the OnlineSubsystemSteam() < (OSS; Example) use it to point to the below code. One is using the LocalUserNum and the other uses FUniqueNetId.
@gamepainters As I’ve said in the post, the Identity Interface’s GetPlayerNickname function didn’t work. I have to read a remote player’s name.This function only returns the local user’s nickname.
The Steamworks SDK has these functions in the IStreamFriends
// returns the local players name - guaranteed to not be NULL.
// this is the same name as on the users community profile page
// this is stored in UTF-8 format
// like all the other interface functions that return a char *, it's important that this pointer is not saved
// off; it will eventually be free'd or re-allocated
virtual const char *GetPersonaName() = 0;
// returns the current status of the specified user
// this will only be known by the local user if steamIDFriend is in their friends list; on the same game server; in a chat room or lobby; or in a small group with the local user
virtual EPersonaState GetFriendPersonaState( CSteamID steamIDFriend ) = 0;
// returns the name another user - guaranteed to not be NULL.
// same rules as GetFriendPersonaState() apply as to whether or not the user knowns the name of the other user
// note that on first joining a lobby, chat room or game server the local user will not known the name of the other users automatically; that information will arrive asyncronously
//
virtual const char *GetFriendPersonaName( CSteamID steamIDFriend ) = 0;
The Steam OnlineSubsystem uses GetFriendPersonaName only in the leaderboard and friends interfaces. So maybe you can get it through FOnlineUser::GetRealName()/GetDisplayName() instead (although this may only work for players on the friendlist).
@UnrealEverything Hey, thanks for the help! I’m gonna take a look at how the Advanced Steam Sessions plugin does it, but to be honest, I might just roll with a workaround. I’m thinking that I can just ClientRPC down to the clients, gather data locally, then sending the data back to the server via a ServerRPC.