Unreal Engine Integration
Blueprint nodes for UE5 — no server code required.
UE5.1+ · Blueprint only · Windows / Mac / Linux
Installation
- Download the plugin .zip above.
- Extract into your project's
Plugins/folder — create it if it doesn't exist. - Open Unreal Editor. Go to Edit → Plugins → Project → PikStats and confirm it's enabled.
- Restart the editor if requested.
Configure SDK Key
The SDK key authenticates your game. You can set it in two ways:
Option A — Project Settings (recommended)
- Open Edit → Project Settings → PikStats.
- Paste your SDK key into the SDK Key field.
- Save. The plugin picks it up automatically at runtime.
Option B — Blueprint at runtime
Call PikStats → Set SDK Key before any other PikStats node. Useful if you load the key from a config file or remote endpoint.
Nodes Overview
All PikStats nodes are async — they fire an output exec pin when the server responds. Search PikStats in the Blueprint context menu to find them all.
| Node | PIKE cost | When to call |
|---|---|---|
Identify Player | Free | On game session start |
Set Variable | 1 PIKE | When a tracked value changes |
Get Player | Free | On login / match start to load saved stats |
Leaderboard | 1 PIKE | When showing rankings in-game |
Fetch Variables | Free | On startup to resolve tokens by name |
Set Game Variable | 1 PIKE | When a game-wide value changes (e.g. on launch, event change) |
Get Game Variables | Free | On startup to load game-wide config or state |
World Rank | Free | When showing a player their global position for a variable |
Identify Player
Registers a player on first call. Safe to call every session — if the player already exists it's a no-op. Free.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Username | In | String | Unique player identifier (display name or UID) |
| On Success | Out | Exec | Fires when server responds ok |
| Created | Out | Bool | True if this is the player's first registration |
| On Failure | Out | Exec | Fires on network error or invalid key |
Set Variable
Writes a value for one variable for one player. Costs 1 PIKE. If the player doesn't exist, they are created automatically.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Username | In | String | Player to update |
| Variable Token | In | String | 32-char token from the Variables page |
| Value | In | String | New value — auto-cast to the variable's type |
| On Success | Out | Exec | Fires on successful write |
| PIKE Remaining | Out | Int | Your balance after this call |
| On Failure | Out | Exec | Fires on network error or invalid key |
Get Player
Fetches all live variable values for a player. Free. Use this on session start to restore saved stats.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Username | In | String | Player whose values to load |
| On Success | Out | Exec | Fires when data arrives |
| Values (Map) | Out | Map<String,String> | Variable name → value pairs |
| On Failure | Out | Exec | Fires on network error or invalid key |
Use Find on the output map to retrieve individual values by variable name.
Leaderboard
Fetches the top N players for a variable. Optionally appends the calling player's rank if they fall outside the top N. Costs 1 PIKE.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Variable Token | In | String | 32-char token for the ranked variable |
| Limit | In | Int | Max entries to return (default 10, max 100) |
| Player (optional) | In | String | If set and outside top N, adds their rank to Player Entry |
| Entries (Array) | Out | Array of Leaderboard Entry | Rank, Username, Value for each top player |
| Player Entry | Out | Leaderboard Entry | Rank + value for the specified player if outside top N |
| PIKE Remaining | Out | Int | Your balance after this call |
Fetch Variables
Returns all live variables and their tokens. Useful for resolving tokens by name at runtime instead of hardcoding them. Free.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Variables (Array) | Out | Array of Variable Info | Name, Type, Default Value, Public Token for each live variable |
Cache the result at startup and look up tokens by name to avoid hardcoding them throughout your Blueprint graph.
Set Game Variable
Writes a value to a Game System Variable — a single game-wide value not tied to any player (e.g. launch counter, active event, difficulty multiplier). Costs 1 PIKE.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Variable Token | In | String | 16-char token of the Game System Variable |
| Value | In | String | New value — auto-cast to the variable's type |
| On Success | Out | Exec | Fires on successful write |
| PIKE Remaining | Out | Int | Your balance after this call |
| On Failure | Out | Exec | Fires on network error, invalid key, or wrong scope |
Set Variable for player variables.Get Game Variables
Fetches all live Game System Variables and their current values. If a variable has never been set, its default value is returned. Free.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Values (Map) | Out | Map<String,String> | Variable name → current value for all live game system variables |
Use Find on the output map to retrieve individual values by name. Call this at game startup to load remote config, active events, or other game-wide state.
World Rank
Returns a player's global rank for a variable as a single integer — e.g. rank 423 out of all players. Free. No SDK key required — safe to call from any context.
| Pin | Direction | Type | Description |
|---|---|---|---|
| Game Token | In | String | Your game's public token (visible in the dashboard URL) |
| Variable Token | In | String | 16-char token of the variable to rank by |
| Username | In | String | The player whose rank to look up |
| On Success | Out | Exec | Fires when rank is returned |
| Rank | Out | Int | 1-based global position — rank 1 is the top player |
| On Failure | Out | Exec | Fires if the player or variable is not found |
Higher values rank better (rank 1 = highest value). Only works on Player Variables. Game System Variables cannot be ranked.
Pin Reference
| Color | Type | Notes |
|---|---|---|
| ■ White diamond | Exec | Control flow — connect these to drive execution order |
| ■ Pink | String | UTF-8 text, including numeric values sent as strings |
| ■ Blue | Integer | Whole numbers (PIKE balance, rank) |
| ■ Red | Boolean | True / false |
| ■ Green | Struct / Map | Leaderboard Entry, Variable Info struct, or Map<String,String> |
Struct fields
Leaderboard Entry — each item in the Entries array:
| Field | Type | Description |
|---|---|---|
| Rank | Integer | Position on the leaderboard (1 = top) |
| Username | String | Player's username |
| Value | String | The variable's value for this player |
Variable Info — each item in the Fetch Variables array:
| Field | Type | Description |
|---|---|---|
| Name | String | Variable name as set in the dashboard |
| Type | String | bool · int · float · text · date |
| Default Value | String | The variable's default |
| Public Token | String | 16-char token used in Set Variable, Set Game Variable, and Leaderboard calls |
| Scope | String | player — use Set Variable · system — use Set Game Variable |
Tips
- Call Identify Player once per session — on Begin Play or after login, not on every variable write.
- Fetch Variables at startup — cache the token map in a Game Instance variable so you never hardcode tokens in individual nodes.
- Debounce rapid writes — if score updates every frame, use a timer (e.g. every 5 s) to batch-send the last value instead of calling Set Variable 60× per second.
- Check PIKE Remaining — if it drops to zero, Set Variable and Leaderboard calls are still accepted but logged as alerts. Top up from Buy PIKE.
- On Failure is a network error — not an API error. The API never signals errors to the client. Check dashboard alerts for API-level issues.
- Variable tokens are per-variable — if you have score, level, and skin, each needs its own token. Find them on the Variables page.
- Use Fetch Variables to route scope automatically — check the
Scopefield on startup and callSet Game VariableorSet Variableaccordingly, rather than hardcoding which is which. - Call Get Game Variables once at startup — cache the result in a Game Instance variable for remote config like difficulty, active events, or feature flags.
- World Rank needs no SDK key — you can call it from a web overlay, a friend's client, or any context outside your game without exposing your SDK key.