Steam stats and leaderboards

So I’m currently in the process of linking up Steam stats/leaderboards/achievements with our game and so far it’s been going okay. However, I have noticed a couple of little issues which lie in the Engine which I’m not entirely sure about.
Firstly, am I right in thinking that to send up Stats to steam, we go through the Leaderboards interface? Currently I use the ‘WriteLeaderboard’ function and pass in a bunch of stats within my own FOnlineLeaderboardWrite. However, I found that when I was writing/reading these stats, the Engine was calling the function ‘GetLeadboardStatName’, which for some reason was concatenating the leader board name with the stat name with an underscore.

So, in my Steamworks setup, I have a list of stats - Stat01, Stat02, Stat03… and I also have a leaderboard - Leadboard01. For some reason though, the function was forming my stat name to “Leaderboard01_Stat01”, which caused Steam API to throw an unmatched pair for the stat name. To get around this issue, I don’t add the leaderboard name or the underscore, which gives me a correct stat name of “Stat01”, when reading and writing stats. Now, I am not sure if I am doing anything wrong, but I can’t figure out why the ‘_’ is being added in the Engine or whether there is some Steam naming conventions I am missing.

Another problem I found was trying to write a stat to Steam that won’t increment and will simply use the value I pass it. Unfortunately, it looks like the Engine automatically increments the stat:



int32 OldValue, Value;
Stat.GetValue(Value);
if (SteamUserStatsPtr->GetUserStat(SteamUserId, TCHAR_TO_UTF8(*StatName), &OldValue))
{
	bSuccess = SteamUserStatsPtr->SetStat(TCHAR_TO_UTF8(*StatName), OldValue + Value) ? true : false;
}


I was wondering if there was something I was missing in order to set a Steam stat but not in an incremental fashion. For example, a user in my game can earn coins and use those coins to buy things. Now at certain points in the game I can send up how many coins they have to the Steam stats by using ‘SteamUserStats()->SetStat(…)’, but I am not sure how I would get this value to write to a leaderboard in the current method without it increment my values.

I have a feeling I may be doing something stupid somewhere in my setup so if anyone can shed any light it would be a great help.

Edit: For the values writing to the leaderboard ect, I have decided to implement my own function to set specific Steam Stats and then call the ‘WriteLeaderboards’ with a ‘FOnlineLeaderboardWrite’ that doesn’t actually contain any stats.