EOS Leaderboard

Setup

Configure your EOS credentials, Stats, Leaderboards in the Dev Portal, and DefaultEngine.ini to get EOS Leaderboard running.

Prerequisites

Before configuring the plugin, make sure you have:

  1. An Epic Developer Portal account — dev.epicgames.com
  2. A Product created in the portal with at least one Deployment
  3. At least one Stat configured under Dev Portal → [Your Product] → Stats
  4. At least one Leaderboard configured under Dev Portal → [Your Product] → Leaderboards, linked to that stat
Leaderboards in EOS are driven by Stats. You must create a Stat first, then create a Leaderboard that references it. Ingesting the stat automatically updates the leaderboard rank.
Don't forget to set your ClientPolicy to one that includes Stats and Leaderboards permissions in the Dev Portal → Clients settings.
EOS ADVANCED SESSION SETUP GUIDE

Step 1 — Enable the Plugin

In Unreal Engine:

  1. Open Edit → Plugins
  2. Search for EOS Leaderboard
  3. Enable the plugin and restart the Editor

Step 2 — Get Your EOS Credentials

In the Epic Developer Portal, navigate to:

Your Product → Product Settings → SDK Credentials

Collect the following values:

FieldWhere to find it
ProductIdProduct Settings → Product ID
SandboxIdProduct Settings → Sandbox ID (use your Dev sandbox)
DeploymentIdProduct Settings → Deployment ID
ClientIdSDK Credentials → Client ID
ClientSecretSDK Credentials → Client Secret

Step 3 — Configure DefaultEngine.ini

Add the [EOSCore] section to your project's Config/DefaultEngine.ini:

[EOSCore]
ProductId=your-product-id
SandboxId=your-sandbox-id
DeploymentId=your-deployment-id
ClientId=your-client-id
ClientSecret=your-client-secret

; Optional settings (defaults shown)
bAutoInitialize=true
bTickEOS=true
bEnableOverlay=true
bEnableSocialOverlay=true

Tip: If you already use [OnlineSubsystemEOS] or [/Script/OnlineSubsystemEOS.EOSSettings], the plugin will read credentials from those sections as a fallback. You do not need to duplicate your credentials.


Step 4 — (Optional) OnlineSubsystemEOS Co-existence

If your project already has OnlineSubsystemEOS enabled and set as the default platform service, the plugin will automatically detect and borrow its EOS platform handle.

[OnlineSubsystem]
DefaultPlatformService=EOS

In this case:

  • No second EOS handle is created — the plugin reuses the existing one safely.
  • No ticker is started — the OSS already ticks EOS.
  • You do not need the [EOSCore] section (though it is harmless to have it).

Step 5 — Configure a Stat in the Dev Portal

EOS Leaderboards are powered by Stats. To create one:

  1. Go to Dev Portal → [Your Sandbox] → Stats
  2. Click Create Stat and fill in:
    • Stat Name — the exact string you will pass to EOS Ingest Stat (e.g. score)
    • Aggregation Method — how EOS combines multiple ingests:
MethodBehavior
SUMAdds each ingest to the total (e.g. cumulative XP)
LATESTKeeps only the most recent ingest value
MAXKeeps the highest value ever recorded
MINKeeps the lowest value ever recorded
For a classic high-score leaderboard, use MAX. For a cumulative score board (total kills, total wins), use SUM.

Step 6 — Configure a Leaderboard in the Dev Portal

  1. Go to Dev Portal → [Your Sandbox] → Leaderboards
  2. Click Create Leaderboard and fill in:
    • Leaderboard ID — the exact string you will pass to EOS Query Leaderboard (e.g. leaderboard_score)
    • Stat — select the stat you created above
    • Sort OrderDescending (highest score first) or Ascending
    • Start / End Date — optional time window (leave blank for a permanent leaderboard)
The Leaderboard ID you set in the Dev Portal is the exact string you will pass to the EOS Query Leaderboard and EOS Query Leaderboard Range Blueprint nodes.

Step 7 — Verify Setup

In your game's BeginPlay (or GameInstance Init), call InitializeEOS and check the return value:

Event BeginPlay
  └─► InitializeEOS ──► (returns true) ──► Continue to Auth Login
                     └─► (returns false) ──► Log error / show error screen

If InitializeEOS returns false, check:

  • Your credentials in DefaultEngine.ini are correct (no trailing spaces)
  • The EOSCore section name is exactly [EOSCore]
  • Your Sandbox and Deployment IDs match your Dev Portal environment

Subsystem Persistence

UEOSCoreLeaderboardSubsystem lives as long as the GameInstance. It persists across level changes automatically — you do not need to re-initialize EOS on each level load.


Log Category

All plugin logs use the LogEOSCore category. To see verbose logs, add to DefaultEngine.ini:

[Core.Log]
LogEOSCore=Verbose

Next Step

Once InitializeEOS returns true, follow the Example Project guide for the complete login → query → ingest flow.