Functions
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
OnlineSubsystemEOSis 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.
| Output | Type | Description |
|---|---|---|
| Return Value | bool | true if the platform handle is valid and ready |
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:
| Field | Type | Description |
|---|---|---|
DisplayName | FString | Player's Epic display name |
Nickname | FString | Player's nickname if set |
Country | FString | Player's country code |
PreferredLanguage | FString | Player'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:
| Parameter | Type | Description |
|---|---|---|
PrimaryLoginType | EEOSLoginCredentialType | Login method to use (see table below) |
Policy | EEOSAuthLoginPolicy | Fallback behavior if primary fails |
bDeletePersistentAuthBeforeFallback | bool | If true, deletes the cached persistent token before attempting fallback — recommended to avoid stale token issues |
Login Types:
| Value | Use case |
|---|---|
AccountPortal | Opens the Epic browser portal. Best for testing without the launcher. |
ExchangeCode | Game launched from Epic Games Launcher (production). Requires ?AUTH_TYPE=exchangecode argument. |
Developer | Epic's Dev Auth Tool — ideal for in-editor testing (see EOS Login With Dev Auth Async below). |
Policies:
| Value | Behavior |
|---|---|
PersistentThenPortal | Try a saved persistent token first, fall back to AccountPortal on failure. Recommended for dev/testing. |
PersistentThenExchangeCode | Try a saved persistent token first, fall back to ExchangeCode on failure. Recommended for production. |
NeverFallback | Only tries the PrimaryLoginType. No automatic retry. |
Output — FEOSAuthResult:
| Field | Type | Description |
|---|---|---|
EpicAccountId | FString | Epic Account ID on success |
ErrorMessage | FString | EOS error code on failure |
PrimaryLoginType=AccountPortalPolicy=PersistentThenPortalbDeletePersistentAuthBeforeFallback=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:
| Field | Type | Description |
|---|---|---|
ProductUserId | FString | Product User ID on success |
ErrorMessage | FString | EOS 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
TargetEpicAccountIdempty (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:
| Field | Type | Description |
|---|---|---|
Stats | TArray<FEOSStatInfo> | Stat values retrieved for the local player |
ErrorMessage | FString | EOS error code on failure |
FEOSStatInfo fields:
| Field | Type | Description |
|---|---|---|
StatName | FString | Stat name, matching the Dev Portal |
Value | int32 | Current value |
StartTime | FDateTime | Start of the time window this value covers (invalid if undefined) |
EndTime | FDateTime | End 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:
| Parameter | Type | Description |
|---|---|---|
StatName | FString | Exact stat name configured in the Dev Portal |
IngestAmount | int32 | Amount 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:
| Field | Type | Description |
|---|---|---|
StatName | FString | The name of the stat that was ingested |
IngestedAmount | int32 | The amount that was sent to EOS |
ErrorMessage | FString | EOS 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:
| Field | Type | Description |
|---|---|---|
StatName | FString | Must match the Dev Portal name exactly |
DisplayName | FString | Human-readable label |
Description | FString | Optional description |
DefaultValue | int32 | Value 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
DefaultValueis 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
| Struct | Fields |
|---|---|
FEOSStatInfo | StatName, Value, StartTime, EndTime |
FEOSStatsQueryResult | Stats[], ErrorMessage |
FEOSIngestStatResult | StatName, IngestedAmount, ErrorMessage |
FEOSStatDefinition | StatName, DisplayName, Description, DefaultValue |
FS_PlayerInfo | DisplayName, Nickname, Country, PreferredLanguage |
FEOSAuthResult | EpicAccountId, ErrorMessage |
FEOSConnectResult | ProductUserId, ErrorMessage |
Error Codes
Common EOS error codes you may see in ErrorMessage fields:
| Code | Meaning |
|---|---|
EOS_NotFound | StatName does not exist in the Dev Portal, or no value exists yet for this player |
EOS_InvalidUser | ProductUserId is invalid or missing |
EOS_NoConnection | No internet connection |
EOS_TimedOut | EOS servers not reachable |
EOS_Auth_InvalidToken | Persistent token expired — retry with Account Portal |
EOS_InvalidCredentials | Wrong ClientId / ClientSecret in .ini |
For a full list, see the EOS SDK Result Codes reference.