Crossplay Integration Kit
Multiplayer

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 = false

This fetches all friends from both EOS and the platform, merging them into a single list.

Parameters

Get Friends Settings

ParameterTypeDescription
bIncludeEOSFriendsBooleanInclude friends from EOS (Epic friends).
bIncludePlatformFriendsBooleanInclude friends from Steam/PSN/Xbox.
bOnlyOnlineBooleanFilter to only show online friends.

Output

Delegates

DelegateParametersDescription
OnSuccessArray of FUCIK_FriendInfoFriends list retrieved successfully.
OnFailureErrorMessageFailed to retrieve friends.

Friend Info

Each friend in the result contains:

FieldTypeDescription
DisplayNameStringFriend's display name.
EosProductUserIdFUCIK_ProductUserIdEOS Product User ID (for game services).
EosEpicAccountIdFUCIK_EpicAccountIdEpic Account ID (for EAS friends).
PlatformUserIdFUCIK_PlatformUserIdPlatform-specific ID (Steam, PSN, etc.).
StatusEnumOnline, Away, DoNotDisturb, Offline.
RichPresenceStringCurrent activity text.
bCanInviteViaEOSBooleanCan receive EOS game invites.
bIsCrossplayCapableBooleanHas linked EOS account (can join cross-platform).
bIsInSessionBooleanCurrently in a joinable session.
FriendSourceEnumEOS, 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

  1. Fetch EOS friends (already have EOS accounts)
  2. Fetch platform friends (Steam, PSN, etc.)
  3. Query EOS for account linking (which platform IDs map to EOS accounts)
  4. 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 TypeInvite Method
EOS friendEOS game invite (works cross-platform)
Platform friend with EOSEOS game invite OR platform invite
Platform friend without EOSPlatform 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:

SourceDescription
EOSFriend from Epic Games account (EAS)
PlatformFriend from Steam/PSN/Xbox
BothHas both EOS and platform relationship (same person, multiple sources)

Deduplication

When fetching from both sources, UCIK automatically deduplicates:

  1. Match by EOS Product User ID (if platform friend has EOS link)
  2. Match by display name (fuzzy matching for same person)
  3. Merge into single entry with FriendSource = Both

Online Status

StatusDescription
OnlineCurrently online and available
AwayOnline but idle/away
DoNotDisturbOnline but busy
OfflineNot currently online

Filtering Online Friends

Get Crossplay Friends
  bOnlyOnline = true

This 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

PlatformEOS FriendsPlatform FriendsLinking Query
Windows (Steam)YesSteam FriendsYes
Windows (Epic)Yes--
Mac (Steam)YesSteam FriendsYes
iOSYesGame Center*Planned
AndroidYesPlay 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

On this page