EOS Stats

Functions

Complete reference for every Blueprint node and utility function provided by EOS Stats.
EOS Stats handles everything for you. No need to call EOS_Initialize, EOS_Platform_Create, or manage the ticker manually. The plugin takes care of the rest automatically — including auto-triggering Connect Login from any Stats node.

Overview

All async nodes 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. Cache-related nodes (Get Cached..., Get All...) are synchronous — no network round trip.


Blueprint Node Preview


Core Subsystem (EOSCoreStats)

UEOSCoreStatsSubsystem is a GameInstanceSubsystem — accessible from C++ with GameInstance->GetSubsystem<UEOSCoreStatsSubsystem>().

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] (falling back to the OSS Artifact if configured) 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 Initialize EOS has succeeded and the platform handle is still valid.


Is Player Logged In

Is Player Logged In → bool

Returns true if the local player is considered logged in (valid credentials + cached player info).


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, including Stats) as a string, or empty if Connect Login has not completed.


Get User Info

Get User Info → FS_PlayerInfo

Returns cached local player info populated after Query User Info:

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

Clear Icon Cache

Clear Icon Cache → void

Clears cached player icon textures. Does not cancel pending downloads already in flight.


Authentication

EOS Auth Login (Epic Account)

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

Logs the player in with their Epic Games account.

Parameters:

ParameterTypeDescription
PrimaryLoginTypeEEOSLoginCredentialTypeLogin method to use (see table below)
PolicyEEOSAuthLoginPolicyFallback behavior if primary fails
bDeletePersistentAuthBeforeFallbackboolIf true, deletes the cached persistent token before attempting fallback — recommended to avoid stale token issues

Login Types:

ValueUse case
AccountPortalOpens the Epic browser portal. Best for testing without the launcher.
ExchangeCodeGame launched from Epic Games Launcher (production). Requires ?AUTH_TYPE=exchangecode argument.
DeveloperEpic's Dev Auth Tool — ideal for in-editor testing (see EOS Login With Dev Auth Async below).

Policies:

ValueBehavior
PersistentThenPortalTry a saved persistent token first, fall back to AccountPortal on failure. Recommended for dev/testing.
PersistentThenExchangeCodeTry a saved persistent token first, fall back to ExchangeCode on failure. Recommended for production.
NeverFallbackOnly tries the PrimaryLoginType. No automatic retry.

Output — FEOSAuthResult:

FieldTypeDescription
EpicAccountIdFStringEpic Account ID on success
ErrorMessageFStringEOS error code on failure
Recommended default for production:
  • PrimaryLoginType = AccountPortal
  • Policy = PersistentThenPortal
  • bDeletePersistentAuthBeforeFallback = true

EOS Login With Dev Auth Async

EOS Login With Dev Auth Async
  ├─ WorldContextObject
  ├─ localhost   [FString, default: "localhost:8080"]
  ├─ credencial  [FString]
  ├─► OnSuccess  →  FS_PlayerInfo, FString Error
  └─► OnFailed   →  FS_PlayerInfo, FString Error

Logs in via Epic's Dev Auth Tool — a small local server you run alongside the editor for testing without opening a browser or using the Epic Games Launcher. Convenient for PIE / in-editor iteration.


EOS Auth Logout (Epic Account)

EOS Auth Logout (Epic Account)
  ├─ WorldContext
  ├─► OnSuccess  →  FString ErrorMessage
  └─► OnFailed   →  FString ErrorMessage

Logs the current Epic Account out.


EOS Connect Login (ProductUserId)

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

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

  • If the player is new (first launch), creates their account automatically and fires OnSuccess.
  • The Blueprint never needs to handle the "new player" case separately.
  • Auto-triggered by any Stats node (Query Stats, Ingest Stat) if the Product User ID is missing — you rarely need to call this manually once Auth Login has succeeded.

Output — FEOSConnectResult:

FieldTypeDescription
ProductUserIdFStringProduct User ID on success
ErrorMessageFStringEOS error code on failure

Why two logins? Auth Login = Epic identity (cross-game). Connect Login = your game identity (per-deployment). This separation allows EOS to support Steam, PlayStation, and Xbox accounts alongside Epic accounts in the future.


Identity

EOS Query User Info

EOS Query User Info
  ├─ WorldContext
  ├─ TargetEpicAccountId  [empty = local player]
  ├─► OnSuccess  →  FS_PlayerInfo Result, FString ErrorMessage
  └─► OnFailure  →  FS_PlayerInfo Result, FString ErrorMessage

Fetches a player's public info (display name, nickname, country, preferred language) via the EOS UserInfo interface.

  • Leave TargetEpicAccountId empty (unwired is fine) to query the local player — this also refreshes the cached info returned by Get User Info.
  • Pass another player's Epic Account ID to look up their public info.

Stats

EOS Query Stats

EOS Query Stats
  ├─ WorldContext
  ├─ StatNames   [TArray<FString>, empty = all stats with a value]
  ├─ StartTime   [int64, POSIX timestamp, -1 = ignore]
  ├─ EndTime     [int64, POSIX timestamp, -1 = ignore]
  ├─► OnSuccess  →  FEOSStatsQueryResult
  └─► OnFailure  →  FEOSStatsQueryResult

Fetches the local player's stat values from Epic's servers.

EOS Query Stats only returns stats that already have a value ingested for the player. A stat created in the Dev Portal but never ingested will not appear here — use EOS Get All Stats (With Defaults) if you need to show it anyway.

Successful results are automatically pushed into the local cache — subsequent Get Cached Stat / Get All Cached Stats calls don't need to re-query.

Output — FEOSStatsQueryResult:

FieldTypeDescription
StatsTArray<FEOSStatInfo>Stat values retrieved for the local player
ErrorMessageFStringEOS error code on failure

FEOSStatInfo fields:

FieldTypeDescription
StatNameFStringStat name, matching the Dev Portal
Valueint32Current value
StartTimeFDateTimeStart of the time window this value covers (invalid if undefined)
EndTimeFDateTimeEnd of the time window this value covers (invalid if undefined)

EOS Ingest Stat

EOS Ingest Stat
  ├─ WorldContext
  ├─ StatName       [FString]
  ├─ IngestAmount   [int32, default: 1]
  ├─► OnSuccess  →  FEOSIngestStatResult
  └─► OnFailure  →  FEOSIngestStatResult

Sends a stat increment to Epic's servers for StatName.

Parameters:

ParameterTypeDescription
StatNameFStringExact stat name configured in the Dev Portal
IngestAmountint32Amount to add — how this combines with the previous value depends on the stat's Aggregation Type in the Dev Portal (Sum, Max, Min, Latest)

Output — FEOSIngestStatResult:

FieldTypeDescription
StatNameFStringThe name of the stat that was ingested
IngestedAmountint32The amount that was sent to EOS
ErrorMessageFStringEOS error code on failure
EOS_Success only confirms the server received the request — the value may take a moment to be processed. This node does not auto-refresh the cache; call EOS Query Stats again afterward to see the updated value.

EOS Query Stat Definitions

EOS Query Stat Definitions → TArray<FEOSStatDefinition>

Synchronous. (Re)loads the stat schema declared in Project Settings → Plugins → EOS Stats into the local cache. No network call — EOS has no server-side stat-definitions API.


EOS Get Cached Stat Definitions

EOS Get Cached Stat Definitions → TArray<FEOSStatDefinition>

Returns the schema last loaded by Query Stat Definitions.

FEOSStatDefinition fields:

FieldTypeDescription
StatNameFStringMust match the Dev Portal name exactly
DisplayNameFStringHuman-readable label
DescriptionFStringOptional description
DefaultValueint32Value assumed before this stat has ever been ingested

EOS Clear Cached Stat Definitions

EOS Clear Cached Stat Definitions → void

Clears the locally cached stat schema.


EOS Get Cached Stat

EOS Get Cached Stat
  ├─ StatName
  └─ Return Value  →  bool, OutStat (FEOSStatInfo)

Reads a single previously-queried stat value from cache. Returns false if the stat has not been queried yet.


EOS Get All Cached Stats

EOS Get All Cached Stats → TArray<FEOSStatInfo>

Returns every stat value currently held in the local cache — only stats that have actually been queried or ingested during this session.


EOS Get All Stats (With Defaults)

EOS Get All Stats (With Defaults) → TArray<FEOSStatInfo>

Returns every stat declared in Project Settings, merged with queried values.

  • If EOS already returned a real value for a stat (via Query Stats), that value is used.
  • Otherwise, the stat's configured DefaultValue is used instead of the stat being absent.

Use this node to display a complete stat sheet (e.g. "Kills: 0", "Revives: 0") before the player has any data yet.


EOS Clear Cached Stats

EOS Clear Cached Stats → void

Clears the queried-value cache. Does not affect values stored on Epic's servers.


Data Structures Summary

StructFields
FEOSStatInfoStatName, Value, StartTime, EndTime
FEOSStatsQueryResultStats[], ErrorMessage
FEOSIngestStatResultStatName, IngestedAmount, ErrorMessage
FEOSStatDefinitionStatName, DisplayName, Description, DefaultValue
FS_PlayerInfoDisplayName, Nickname, Country, PreferredLanguage
FEOSAuthResultEpicAccountId, ErrorMessage
FEOSConnectResultProductUserId, ErrorMessage

Error Codes

Common EOS error codes you may see in ErrorMessage fields:

CodeMeaning
EOS_NotFoundStatName does not exist in the Dev Portal, or no value exists yet for this player
EOS_InvalidUserProductUserId is invalid or missing
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.