Client
.NET/Unity C++/Unreal/Cocos2d-x JavaScript/Cocos2d-js Godot 3 Godot 4 Java/Android Defold cURL REST Swift Dart/Flutter
Server
TypeScript Go Lua
Leaderboards Read more about the Leaderboards system in Hiro here .
The methods below require Hiro 1.33 or later. If you are on an earlier version, see
Hiro 1.32 and earlier .
Get all leaderboards
# List all available leaderboards.
1
2
3
4
5
6
7
8
9
10
11
12
Hiro :: LeaderboardListRequest request ;
hiroClient -> leaderboardList ( session , request ,
[]( const Hiro :: LeaderboardList & leaderboardList ) {
for ( const auto & leaderboard : leaderboardList . leaderboards ) {
std :: cout << "Leaderboard: " << leaderboard . id << '\n' ;
}
},
[]( const Nakama :: NError & error ) {
std :: cout << Nakama :: toString ( error . code ) << ": " << error . message << '\n' ;
}
);
Filter by category:
1
2
3
4
Hiro :: LeaderboardListRequest request ;
request . categories = { "Tournament" };
hiroClient -> leaderboardList ( session , request , onSuccess , onError );
Get a leaderboard
# Get a specified leaderboard by ID.
1
2
3
4
5
6
7
8
9
10
11
Hiro :: LeaderboardGet request ;
request . id = "GalacticChampions" ;
hiroClient -> leaderboardGet ( session , request ,
[]( const Hiro :: Leaderboard & leaderboard ) {
std :: cout << "Leaderboard: " << leaderboard . id << '\n' ;
},
[]( const Nakama :: NError & error ) {
std :: cout << Nakama :: toString ( error . code ) << ": " << error . message << '\n' ;
}
);
Submit a score
# Submit a score to a leaderboard.
1
2
3
4
5
6
7
8
9
10
11
12
13
Hiro :: LeaderboardUpdate request ;
request . id = "GalacticChampions" ;
request . score = "1500" ;
request . subscore = "0" ;
hiroClient -> leaderboardUpdate ( session , request ,
[]( const Hiro :: LeaderboardScore & score ) {
std :: cout << "Score: " << score . score << '\n' ;
},
[]( const Nakama :: NError & error ) {
std :: cout << Nakama :: toString ( error . code ) << ": " << error . message << '\n' ;
}
);
List scores
# List scores on a leaderboard. Pass ownerIds to retrieve scores for specific owners.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Hiro :: LeaderboardScoresListRequest request ;
request . id = "GalacticChampions" ;
request . ownerIds = { "userId1" , "userId2" };
request . limit = 100 ;
hiroClient -> leaderboardScoresList ( session , request ,
[]( const Hiro :: LeaderboardScoreList & scoreList ) {
for ( const auto & score : scoreList . scores ) {
std :: cout << score . ownerId << ": " << score . score << '\n' ;
}
},
[]( const Nakama :: NError & error ) {
std :: cout << Nakama :: toString ( error . code ) << ": " << error . message << '\n' ;
}
);
Filter by region:
1
2
3
4
5
6
Hiro :: LeaderboardScoresListRequest request ;
request . id = "GalacticChampions" ;
request . region = "EU" ;
request . limit = 100 ;
hiroClient -> leaderboardScoresList ( session , request , onSuccess , onError );
List scores around owner
# List scores centred around a specific owner.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Hiro :: LeaderboardScoresListAroundOwnerRequest request ;
request . id = "GalacticChampions" ;
request . ownerId = session -> user_id ;
request . limit = 10 ;
hiroClient -> leaderboardScoresListAroundOwner ( session , request ,
[]( const Hiro :: LeaderboardScoreList & scoreList ) {
for ( const auto & score : scoreList . scores ) {
std :: cout << score . ownerId << ": " << score . score << '\n' ;
}
},
[]( const Nakama :: NError & error ) {
std :: cout << Nakama :: toString ( error . code ) << ": " << error . message << '\n' ;
}
);
Hiro 1.32 and earlier
# Prior to Hiro 1.33, leaderboardsConfigGet was the only way to retrieve available leaderboards, returning a LeaderboardConfigList with basic configuration data. This method is deprecated in Hiro 1.33 and later. Use leaderboardList instead.
1
2
3
4
5
6
7
8
9
10
hiroClient -> leaderboardsConfigGet ( session ,
[]( const Hiro :: LeaderboardConfigList & leaderboardConfigList ) {
for ( auto it = leaderboardConfigList . leaderboardConfigs . begin (); it != leaderboardConfigList . leaderboardConfigs . end (); it ++ ) {
std :: cout << "Found leaderboard: " << it -> id << '\n' ;
}
},
[]( const Nakama :: NError & error ) {
std :: cout << Nakama :: toString ( error . code ) << ": " << error . message << '\n' ;
}
);