๐ฃ๏ธAdvanced Profiles
Public rich profiles available all the time
Last updated
Public rich profiles available all the time
Last updated
Support us as a GitHub Sponsor and get instant access to all our assets, exclusive tools and assets, escalated support and issue tracking and our gratitude. These articles are made possible by our GitHub Sponsors ... become a sponsor today!
Rich public user profiles can be significant to social games
To be effective these profiles need to always be available any time a player sees another player's name so as an offline friend, as an entry in a leaderboard, as a teammate in a match, as an opponent that stomped you in a match, etc. The profile needs to always be accessible to every user who might see it without needing to be a friend or actively in a lobby or server with that player.
This means that you can't depend on Steam's rich presence alone though that can be of use, notice the Main Menu text under that user's name. That is from Steam's rich presence but would only list people who are you or are your friends.
All of the rest of that data is stored in a profile object, this being DOTA it's likely stored on the account after all DOTA has access to so much more than we as regular Steam developers do. That said we can do nearly the same using Leaderboards to house profile data.
In summary, the idea is to create a publicly accessible rich account profile as you would see with DOTA and similar games where users can show off their in-game accomplishments, favourite builds, top stats and more.
Leaderboards are used since anyone can query a leaderboard and fetch the data contained in it. Leaderboards can be easily written by anyone and can contain more than just a score and rank. The key to this use case is the use of a leaderboard details array and leaderboard attachments.
The examples shown here are written in C# but would be similar in C++ or via Unreal Blueprints
Your first step is always to decide what data you want the users to store on/in their public profiles. You will also need to create a serializable struct or object that can house that information.
Example serializable