Wanted to share this tutorial for the benefit of anyone who is using Greenworks or Greengrinds for Steam integration but is looking for slightly more functionality. Thanks to Mikal for pointing out Steam's Web API to me when I got stuck.
Steam's web API can be used to get info beyond that is available through Greenworks and Greengrinds, specifically global stats.
These include:
- Get Global Achievement Percentages
- Get Global Stats
- Get Number of Current Players
- Get User Stats (for any user, not specific to current player)
- And more..
The documentation for the web API can be found here: https://partner.steamgames.com/doc/webapi/ISteamUserStats
Example call
An example call for my project is: "https://api.steampowered.com/ISteamUserStats/GetGlobalStatsForGame/v1/?appid=1559620&count=1&name[0]=GooperAttemptsGlobal"
If you copy and paste the example call in your browser, you'll see that the return includes an integer, representing the total stat value for all my players. This currently reads:
"{"response":{"globalstats":{"GooperAttemptsGlobal":{"total":"319"}},"result":1}}"
Using AJAX to call Steam's web API in your project
To access the web API in your project, you can use an AJAX request.[Note this won't work in preview, see AJAX documentation for cross-domain requests]
Use cases
Example 1
Using GetGlobalStatsForGame (as in the example request above), you can return the aggregate stat value for all players of your game. In my case, I use this to track the number of players deaths and in my main menu include a "Test Subject: {return}" for a bit of thematic flavour.
Example 2
Using GetGlobalAchievementPercentagesForApp you will return the % acquisition for each achievement in your game. You can then use this to show your player how their progress compares to the player base as a whole.
Example 3
Calling GetNumberOfCurrentPlayers returns the number of active players at that time. This can be useful if your game has a community aspect, or matchmaking etc.