Crossplay Friends
Get a unified friends list across EOS and platform services with crossplay capability detection
Crossplay Friends
The Get Crossplay Friends node retrieves a unified friends list from both EOS (Epic Games) and platform services (Steam, PSN, Xbox). It detects which platform friends have linked EOS accounts, enabling crossplay invites.
Basic Usage
Quick Setup
bIncludePlatformFriends = true
bIncludeEOSFriends = true
bOnlyOnline = falseThis fetches all friends from both EOS and the platform, merging them into a single list.
Parameters
Get Friends Settings
| Parameter | Type | Description |
|---|---|---|
bIncludeEOSFriends | Boolean | Include friends from EOS (Epic friends). |
bIncludePlatformFriends | Boolean | Include friends from Steam/PSN/Xbox. |
bOnlyOnline | Boolean | Filter to only show online friends. |
Output
Delegates
| Delegate | Parameters | Description |
|---|---|---|
OnSuccess | Array of FUCIK_FriendInfo | Friends list retrieved successfully. |
OnFailure | ErrorMessage | Failed to retrieve friends. |
Friend Info
Each friend in the result contains:
| Field | Type | Description |
|---|---|---|
DisplayName | String | Friend's display name. |
EosProductUserId | FUCIK_ProductUserId | EOS Product User ID (for game services). |
EosEpicAccountId | FUCIK_EpicAccountId | Epic Account ID (for EAS friends). |
PlatformUserId | FUCIK_PlatformUserId | Platform-specific ID (Steam, PSN, etc.). |
Status | Enum | Online, Away, DoNotDisturb, Offline. |
RichPresence | String | Current activity text. |
bCanInviteViaEOS | Boolean | Can receive EOS game invites. |
bIsCrossplayCapable | Boolean | Has linked EOS account (can join cross-platform). |
bIsInSession | Boolean | Currently in a joinable session. |
FriendSource | Enum | EOS, Platform, or Both. |
Crossplay Capability Detection
The key feature of this node is detecting which friends can participate in crossplay:
bIsCrossplayCapable
- True: Friend has linked their platform account to EOS
- False: Friend only exists on platform (Steam, etc.) without EOS linking
How It Works
- Fetch EOS friends (already have EOS accounts)
- Fetch platform friends (Steam, PSN, etc.)
- Query EOS for account linking (which platform IDs map to EOS accounts)
- Merge lists and mark crossplay capability
EOS Friends → Always crossplay capable
Platform Friends → Query EOS linking
- Has EOS mapping → Crossplay capable
- No EOS mapping → Platform only (can still invite via platform)Invite Strategy
Based on friend capabilities, choose the appropriate invite method:
| Friend Type | Invite Method |
|---|---|
| EOS friend | EOS game invite (works cross-platform) |
| Platform friend with EOS | EOS game invite OR platform invite |
| Platform friend without EOS | Platform invite only (Steam overlay, etc.) |
Example Logic
For each Friend in FriendList:
If Friend.bIsCrossplayCapable:
// Can invite via EOS (cross-platform)
InviteToSessionViaEOS(Friend.EosProductUserId)
Else:
// Platform-only friend
InviteToSessionViaPlatform(Friend.PlatformUserId)Friend Sources
The FriendSource field indicates where the friend data came from:
| Source | Description |
|---|---|
EOS | Friend from Epic Games account (EAS) |
Platform | Friend from Steam/PSN/Xbox |
Both | Has both EOS and platform relationship (same person, multiple sources) |
Deduplication
When fetching from both sources, UCIK automatically deduplicates:
- Match by EOS Product User ID (if platform friend has EOS link)
- Match by display name (fuzzy matching for same person)
- Merge into single entry with
FriendSource = Both
Online Status
| Status | Description |
|---|---|
Online | Currently online and available |
Away | Online but idle/away |
DoNotDisturb | Online but busy |
Offline | Not currently online |
Filtering Online Friends
Get Crossplay Friends
bOnlyOnline = trueThis returns only friends who are currently online.
Rich Presence
The RichPresence field contains activity text:
- "Playing UCIK Demo"
- "In Lobby - Looking for players"
- "In Match - Round 3"
Use this to show what friends are doing in your game.
Usage Patterns
Friends List UI
Get Crossplay Friends
|
v
For each Friend:
Display:
- Avatar (from platform)
- DisplayName
- Status icon (Online/Away/Offline)
- RichPresence text
- "Invite" button (enabled if bCanInviteViaEOS or has PlatformUserId)
- "Join" button (enabled if bIsInSession)Quick Invite
Get Crossplay Friends
bOnlyOnline = true
|
v
Show "Invite Online Friends" dialog
|
v
On Friend Selected:
If Friend.bIsCrossplayCapable:
SendEOSInvite(Friend)
Else:
SendPlatformInvite(Friend)Join Friend's Game
Get Crossplay Friends
|
v
Find friends where bIsInSession = true
|
v
Show "Friends Playing" list
|
v
On "Join" click:
If Friend has session info:
JoinCrossplaySession(FriendSessionInfo)ID Types
UCIK uses structured ID types instead of raw strings for Blueprint clarity:
FUCIK_ProductUserId
EOS Product User ID - used for game services (sessions, voice, etc.)
UPROPERTY(BlueprintReadWrite)
FString ProductUserId;
// Methods:
bool IsValid();
FString ToString();FUCIK_EpicAccountId
Epic Account ID - used for Epic Account Services (friends, achievements, etc.)
UPROPERTY(BlueprintReadWrite)
FString EpicAccountId;
// Methods:
bool IsValid();
FString ToString();FUCIK_PlatformUserId
Platform-specific ID (Steam ID, PSN ID, Xbox ID, etc.)
UPROPERTY(BlueprintReadWrite)
EUCIK_Platform Platform; // Steam, PSN, Xbox, etc.
UPROPERTY(BlueprintReadWrite)
FString UserId;
// Methods:
bool IsValid();
FString ToString();Platform Support
| Platform | EOS Friends | Platform Friends | Linking Query |
|---|---|---|---|
| Windows (Steam) | Yes | Steam Friends | Yes |
| Windows (Epic) | Yes | - | - |
| Mac (Steam) | Yes | Steam Friends | Yes |
| iOS | Yes | Game Center* | Planned |
| Android | Yes | Play Games* | Planned |
*Game Center and Play Games friends integration is planned for future updates.
Account Linking Limitations
EOS account linking queries have a platform restriction:
- Steam user can query which Steam IDs have EOS accounts
- Steam user CANNOT query PSN/Xbox IDs for EOS accounts
- Cross-platform friend lookup requires the friend to also have an EOS friend relationship
This is an EOS limitation - you can only query mappings for the same platform type as the local user.
Caching
After fetching, the friends list is cached:
// Get cached friends without re-fetching
GetCachedFriends()Call Get Crossplay Friends again to refresh the cache.
FAQs
Why are some Steam friends missing?
If bIncludePlatformFriends is false, Steam friends won't be fetched. Also, Steam friends must have the game to appear (Steam API limitation for some queries).
Can I invite a friend who doesn't have EOS linked?
Yes! Use platform invites (Steam overlay, etc.). They can join via Steam but won't be able to play with Epic/console players unless they link EOS.
How do I detect if a friend is in my game?
Check bIsInSession - it's true if the friend is in a joinable session. You can also check RichPresence for game-specific status.
How often should I refresh the friends list?
Refresh when entering the friends/social screen. For real-time updates, use EOS presence subscriptions (advanced - see EIK documentation).
Next: Find Sessions | Lobbies | Sessions