EOS Leaderboard

Functions

Complete reference for every Blueprint node and utility function provided by EOS Leaderboard.
EOS Leaderboard handles authentication for you. All leaderboard nodes detect a missing Product User ID and run Connect Login automatically — you do not need to wire Connect Login before every query.

Overview

All nodes are async Blueprint actions — they return immediately and fire their output pins when the operation completes (via EOS server callbacks). You connect your logic to OnSuccess and OnFailure pins exactly like other async Unreal nodes.


Blueprint Node Preview


Core Subsystem

UEOSCoreLeaderboardSubsystem is a GameInstanceSubsystem — you access it via Get EOS Core Leaderboard Subsystem or from C++ with GameInstance->GetSubsystem<UEOSCoreLeaderboardSubsystem>().

Initialize EOS

Initialize EOS → bool

Initializes the EOS platform. Must be called once before any other EOS node.

  • If OnlineSubsystemEOS is active and has a valid handle → borrows it (no double init).
  • Otherwise → reads credentials from DefaultEngine.ini [EOSCore] and creates its own handle.
OutputTypeDescription
Return Valuebooltrue if the platform handle is valid and ready
Call this in your GameInstance Init or the very first BeginPlay, before any login node.

Shutdown EOS

Shutdown EOS → void

Shuts down EOS cleanly. If the plugin owns the handle, it calls EOS_Platform_Release. If the handle was borrowed from the OSS, it only clears the internal pointer.

You rarely need to call this manually — the subsystem calls it automatically on Deinitialize.


Is Initialized

Is Initialized → bool

Returns true if InitializeEOS has succeeded and the platform handle is still valid.


Is Player Logged In

Is Player Logged In → bool

Returns true if a player has successfully completed both Auth Login and Connect Login.


Get Local Epic Account Id

Get Local Epic Account Id → FString

Returns the Epic Account ID of the logged-in player as a string, or empty if not logged in.


Get Local Product User Id

Get Local Product User Id → FString

Returns the Product User ID (used for all game services) as a string, or empty if Connect Login has not completed.


Get User Info

Get User Info → FS_PlayerInfo

Returns cached player info populated after Auth Login:

FieldTypeDescription
DisplayNameFStringPlayer's Epic display name
NicknameFStringPlayer's nickname if set
CountryFStringPlayer's country code
PreferredLanguageFStringPlayer's preferred language code

Authentication

EOS Auth Login (Epic Account)

EOS Auth Login (Epic Account)
  ├─ WorldContext
  ├─ PrimaryLoginType    [AccountPortal / ExchangeCode / PersistentAuth]
  ├─ Policy              [PersistentThenPortal / PersistentThenExchangeCode / NeverFallback]
  ├─ bDeletePersistentAuthBeforeFallback  [bool]
  ├─► OnSuccess  →  FEOSAuthResult
  └─► OnFailure  →  FEOSAuthResult

Logs the player in with their Epic Games account.

Login Types:

ValueUse case
AccountPortalOpens the Epic browser portal. Best for testing without the launcher.
ExchangeCodeGame launched from Epic Games Launcher (production). Requires -AUTH_PASSWORD= argument.
PersistentAuthReuses a locally saved token (silent re-login).

Policies:

ValueBehavior
PersistentThenPortalTry PersistentAuth first, fall back to AccountPortal. Recommended for dev/testing.
PersistentThenExchangeCodeTry PersistentAuth first, fall back to ExchangeCode. Recommended for production.
NeverFallbackOnly tries the PrimaryLoginType. No automatic retry.

Output — FEOSAuthResult:

FieldTypeDescription
EpicAccountIdFStringEpic Account ID on success
ErrorMessageFStringEOS error code on failure

EOS Connect Login (ProductUserId)

EOS Connect Login (ProductUserId)
  ├─ WorldContext
  ├─► OnSuccess  →  FEOSConnectResult
  └─► OnFailure  →  FEOSConnectResult

Exchanges the Epic Account token for a Product User ID — the player identity used by all game services.

  • New players are created automatically — OnSuccess fires in both cases.
  • Must be called after a successful Auth Login.
All leaderboard nodes call Connect Login automatically if the Product User ID is missing. You only need this node explicitly if you want to control the login flow manually.

Output — FEOSConnectResult:

FieldTypeDescription
ProductUserIdFStringProduct User ID on success
ErrorMessageFStringEOS error code on failure

EOS Auth Logout

EOS Auth Logout
  ├─ WorldContext
  ├─► OnSuccess  →  FString (empty)
  └─► OnFailure  →  FString (ErrorMessage)

Logs the current player out from their Epic Account. Clears the logged-in flag on the subsystem.


Leaderboards

EOS Get Leaderboard List

EOS Get Leaderboard List
  ├─ WorldContext
  ├─► OnSuccess  →  ErrorMessage (FString), Result (TArray<FEOSLeaderboardDefinition>)
  └─► OnFailure  →  ErrorMessage (FString), Result (TArray<FEOSLeaderboardDefinition>)

Fetches the list of all leaderboards configured in the EOS Dev Portal for this deployment.

Use the returned LeaderboardId values to call EOS Query Leaderboard or EOS Query Leaderboard Range.

Output — FEOSLeaderboardDefinition:

FieldTypeDescription
LeaderboardIdFStringUnique ID to pass to Query nodes
StatNameFStringEOS stat that drives this leaderboard
StartDateFEOSDateTimeStart of the leaderboard window (if set)
EndDateFEOSDateTimeEnd of the leaderboard window (if set)
Use this node in a settings screen or leaderboard selector to let players pick from multiple boards. For a single known leaderboard, you can hardcode the LeaderboardId and skip this node.

EOS Query Leaderboard

EOS Query Leaderboard
  ├─ WorldContext
  ├─ LeaderboardId  [FString]
  ├─► OnSuccess  →  ErrorMessage (FString), Result (TArray<FEOSLeaderboardEntry>)
  └─► OnFailure  →  ErrorMessage (FString), Result (TArray<FEOSLeaderboardEntry>)

Fetches all entries of a leaderboard, sorted by rank.

Internally:

  1. QueryLeaderboardRanks — fetches rank data from EOS servers
  2. CopyLeaderboardRecordByIndex — reads entries from the local cache

Output — FEOSLeaderboardEntry:

FieldTypeDescription
UserIdFStringProduct User ID of the player
UserDisplayNameFStringPlayer's display name (may be empty)
Rankint32Position in the leaderboard (starts at 1)
Scoreint64Raw stat value stored in EOS
For large leaderboards (thousands of entries), prefer EOS Query Leaderboard Range with a RankFrom / RankTo window to avoid fetching unnecessary data.

EOS Query Leaderboard Range

EOS Query Leaderboard Range
  ├─ WorldContext
  ├─ LeaderboardId  [FString]
  ├─ RankFrom       [int32, default: 1]
  ├─ RankTo         [int32, default: 10]
  ├─► OnSuccess  →  ErrorMessage (FString), Result (TArray<FEOSLeaderboardEntry>)
  └─► OnFailure  →  ErrorMessage (FString), Result (TArray<FEOSLeaderboardEntry>)

Fetches a slice of the leaderboard between two rank positions (inclusive).

Parameters:

ParameterTypeDescription
LeaderboardIdFStringLeaderboard ID from the Dev Portal
RankFromint32First rank to include (minimum: 1)
RankToint32Last rank to include (0 = no upper limit)

Range examples:

RankFromRankToResult
110Top 10
15Top 5
1020Ranks 10 to 20
500Rank 50 and above (no limit)

The node reads all EOS records internally and filters client-side by rank. EOS rows are sorted in ascending rank order, so the loop exits early once RankTo is exceeded.

Output: same TArray<FEOSLeaderboardEntry> as EOS Query Leaderboard, restricted to the requested range.


EOS Ingest Stat (Leaderboard)

EOS Ingest Stat (Leaderboard)
  ├─ WorldContext
  ├─ StatName  [FString]
  ├─ Amount    [int32, default: 1]
  ├─► OnSuccess  →  ErrorMessage (FString)
  └─► OnFailure  →  ErrorMessage (FString)

Submits a stat value to EOS. The leaderboard linked to that stat is updated automatically — no separate leaderboard call needed.

Parameters:

ParameterTypeDescription
StatNameFStringExact stat name from the Dev Portal (e.g. score)
Amountint32Value to ingest (combined with existing value per the aggregation method)

How amount interacts with aggregation method:

Dev Portal AggregationAmount = 50Effect
SUMPrevious: 100New total: 150
MAXPrevious: 200No change (200 > 150)
MAXPrevious: 30New value: 50
LATESTAnyAlways replaced with 50
Call this node at the end of a match or on any game event that should affect the player's leaderboard position. EOS processes the update asynchronously — the new rank will be visible on the next query.

Utility Functions (C++ only)

These inline helpers are available in the EOSHelpers namespace and used internally. They can also be used in C++ code.

FunctionReturnsDescription
EOSHelpers::GetEOS(WorldContext)UEOSCoreLeaderboardSubsystem*Gets the subsystem from any UObject
EOSHelpers::IsEOSReady(WorldContext)boolTrue if initialized
EOSHelpers::IsEpicLoggedIn(WorldContext)boolTrue if player is logged in
EOSHelpers::GetProductUserId(WorldContext)FStringReturns PUID as string
EOSHelpers::PuidToStr(EOS_ProductUserId)FStringConverts EOS PUID to string
EOSHelpers::TimestampToEOSDate(int64)FEOSDateTimeConverts EOS timestamp to date struct

Error Codes

Common EOS error codes you may see in ErrorMessage fields:

CodeMeaning
EOS_NotFoundLeaderboardId or StatName does not exist in the Dev Portal
EOS_InvalidUserProductUserId is invalid or missing (auto-handled internally)
EOS_NoConnectionNo internet connection
EOS_TimedOutEOS servers not reachable
EOS_Auth_InvalidTokenPersistent token expired — retry with Account Portal
EOS_InvalidCredentialsWrong ClientId / ClientSecret in .ini

For a full list, see the EOS SDK Result Codes reference.