Facepunch.Steamworks Wiki

Revision Difference

Leaderboards#526651

<cat>code.general</cat>⤶ <title>Leaderboards</title>⤶ ⤶ # Creating a Leaderboard⤶ ⤶ Creating a leaderboard is really easy.⤶ ⤶ ```⤶ using Steamworks;⤶ using Steamworks.Data;⤶ ⤶ ...⤶ ⤶ var leaderboard = await SteamUserStats.FindOrCreateLeaderboardAsync( "MyLeaderboard", ⤶ LeaderboardSort.Ascending, ⤶ LeaderboardDisplay.Numeric );⤶ ```⤶ ⤶ Here you've created a leaderboard named "MyLeaderboard" which is sorted in ascending (highest first) and is number based (high score etc) rather than time based (fastest lap etc).⤶ ⤶ # Getting a Leaderboard⤶ ⤶ You can safely get a leaderboard with the same function. If you only want to get one that exists you can use:⤶ ⤶ ```⤶ var leaderboard = await SteamUserStats.FindLeaderboardAsync( "MyLeaderboard" );⤶ ```⤶ ⤶ <note>FindLeaderboardAsync and FindOrCreateLeaderboardAsync return a nullable. If for whatever reason the board cannot be found - it'll be null. This means you should check it first via `leaderboard.HasValue` and then the real leaderboard is in `leaderboard.Value`.</note>⤶ ⤶ # Submitting a Score⤶ ⤶ ```⤶ var result = await lb.SubmitScoreAsync( 576 );⤶ ```⤶ ⤶ This function will only replace your last score if the new one is better. On success (`result.HasValue`) this function will return a <page>Data.LeaderboardUpdate</page>.⤶ ⤶ You can force your score to be replace, even if it's worse, using:⤶ ⤶ ```⤶ var result = await lb.ReplaceScoreAsync( 576 );⤶ ```⤶ ⤶ ⤶ # Getting Scores⤶ ⤶ ```⤶ ⤶ // Get top 20 scores⤶ var globalScores = await lb.GetScoresAsync( 20 );⤶ ⤶ foreach ( var e in globalScores)⤶ {⤶ Console.WriteLine( $"{e.GlobalRank}: {e.Score} {e.User}" );⤶ }⤶ ⤶ ⤶ // Get scores from friends⤶ var friendScores = await lb.GetScoresFromFriendsAsync();⤶ ⤶ foreach ( var e in friendScores )⤶ {⤶ Console.WriteLine( $"{e.GlobalRank}: {e.Score} {e.User}" );⤶ }⤶ ⤶ // Get scores around current user⤶ var surroundScores = await lb.GetScoresAroundUserAsync( -10, 10 );⤶ ⤶ foreach ( var e in surroundScores )⤶ {⤶ Console.WriteLine( $"{e.GlobalRank}: {e.Score} {e.User}" );⤶ }⤶ ⤶ ```