Search code examples
c++steamunreal-engine4steamworks-api

Steam API getting persona name


I have been following the Steam documentation to a t, but I have gotten to the point where I need to retrieve player names based on the steam ID, and Steam has a function for this in their documentation:

const char *pchName = SteamFriends()->GetPersonaName(steamID);

However Visual Studio says that there is no function with that number of arguments. The only acceptable function is

const char *pchName = SteamFriends()->GetPersonaName();

Which is supposed to return the local player's persona name (which it does). I can make a way to get this from every user and store it on my server on login, but it sure seems like this should work. How am I supposed to get the persona name for a friend's uint64 SteamID? Did they change this function recently?

I am using Unreal Engine 4.7.6 from source with Steam API 1.30.


Solution

  • Apparently Steam is bad at updating their documentation. I opened up the isteamfriends.h header and found this function that is never mentioned in the Steam docs:

    // 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;
    

    Come on, Steam... I literally pulled this line directly from their live docs about 30 minutes ago, and it doesn't work.

    const char *pchName = SteamFriends()->GetPersonaName(steamID);
    

    So the correct way then is:

    const char *pchName = SteamFriends()->GetFriendsPersonaName(steamID);