Nakama Leaderboards Sample Project #

The official sample project for the Nakama Leaderboards system. Built with minimal boilerplate so you can easily copy the code into your project and adapt the scripts and UI to suit your game.

Download Sample Project

Features #

  • Weekly and global leaderboards
  • Real-time score updates
  • Different ways to submit scores (Best, Set, Increment, Decrement)
  • Primary and sub-scores for tie-breaking
  • Built-in account switcher for testing
  • Copy-paste friendly code

Quick Start #

  1. For optimal display, set your game resolution to 1920x1080 if it isn’t already
  2. Open Assets/Scenes/Main.unity
  3. Hit Play and start exploring!

The project connects to our demo server so you can see leaderboards in action immediately.

Project Structure #

The directory may look slightly different depending on if you downloaded the project from Github or the Unity Asset Store.
Assets/
├── UnityNakamaLeaderboards/
    ├── HeroicUI/           # UI assets and styling
    ├── Scripts/            # Main leaderboard code
    ├── UI/                 # UI Builder files
    └── ...                 # Everything else

Code Overview #

Main Controller (NakamaLeaderboardsController.cs) #

Handles all core operations including calling the Nakama Leaderboards API.

Authentication

1
2
// Connects to Nakama server and authenticates with device ID
await AuthenticateWithDevice();

Leaderboard Operations

1
2
3
4
5
6
7
8
// Fetch leaderboard records
var result = await Client.ListLeaderboardRecordsAsync(Session, leaderboardId, ...);

// Submit a new score
await Client.WriteLeaderboardRecordAsync(Session, leaderboardId, score, subscore, ...);

// Delete player's record
await Client.DeleteLeaderboardRecordAsync(Session, leaderboardId);

Record View (LeaderboardRecordView.cs) #

Simple class that displays individual leaderboard entries:

1
2
3
4
public void SetLeaderboardRecord(IApiLeaderboardRecord record)
{
    // Shows player rank, username, score, and subscore
}

Account Switcher #

The project includes a handy account switcher for testing:

  • Create multiple test accounts
  • Switch between accounts to simulate different players
  • Great for testing leaderboard interactions

Find it under Tools > Nakama and use the dropdown to switch accounts.

Setting Up Your Own Nakama Server #

While this project works with our demo server, you’ll want to set up your own Nakama instance in order to create custom leaderboards with their own configurations, behaviours, and rules. Using Docker, you can get up and running in minutes.

Read the full setup guide: Nakama Installation Docs

Connect this Unity Project to your Server #

After installing Nakama and running it locally, edit these settings in the Unity Editor to connect it to your server:

  1. Select NakamaLeaderboardController from the scene hierarchy panel.
  2. Open the Inspector tab.
  3. Look for the field inputs under Nakama Settings and replace them with the following:
    1. Scheme: http
    2. Host: 127.0.0.1
    3. Port: 7350
    4. Server Key: defaultkey

In NakamaLeaderboardsController.cs, update the leaderboard IDs:

1
2
private const string WeeklyLeaderboardId = "your_weekly_leaderboard";
private const string GlobalLeaderboardId = "your_global_leaderboard";

Additional Resources #