Skip to main content

Includings friends from local platforms

When you're using EOS Online Subsystem, it can delegate certain operations to local subsystems such as Steam and consoles. When a local subsystem is configured like this, it's called a delegated subsystem.

Delegate subsystems are used:

  • To read local friends, such as Steam or console friends for the user
  • To send party and session invites to local friends, over the platform's invite system
  • To read presence information of users
  • To update presence information of the local user
  • To download avatars of users that are on the same platform the user is playing on

To delegate operations to a local subsystem, add it to the delegated subsystems like in the Project Settings:

Image of how to configure delegated subsystems via Project Settings

You can also directly add delegated subsystems in DefaultEngine.ini like so:

[EpicOnlineServices]
DelegatedSubsystems=Steam,RedpointDiscord

The plugin will only use delegated subsystems that are available. That means you can just add all of the subsystems you want to possibly use, and it will use the ones available at runtime.

caution

A delegated subsystem will only be used if the user is considered "signed in" on that subsystem. For platforms such as Steam, the local user 0 is always signed in. For console platforms, the local user is signed into the subsystem when they authenticate to EOS.

However, other delegated subsystems might require you to call the Login function on the identity interface in order to be authenticate. The reason the plugin doesn't read friends if the delegated subsystem reports the user as being logged out is that operations (like reading friends) are not expected to work if the user is not authenticated with the platform in question.

Available local subsystems for delegation

In addition to the subsystems that Unreal Engine provides, the plugin also provides online subsystems for a few extra platforms. The full list of known subsystem names you can delegate to is as follows:

  • Steam
  • Oculus
  • RedpointDiscord
  • RedpointItchIo
  • GOG (when you have the GOG plugin installed)
  • Console platform names, like Switch

Additional configuration for delegated subsystems

Some local subsystems require additional configuration before they can be used as delegated subsystems. This additional configuration might be needed to get things like avatars to work.

This additional configuration is documented under the "Authentication" section of the documentation:

Invites and presence on delegated subsystems

Most subsystems only permit you to advertise either a party or a session to other players. This is also the case for Epic Games.

Therefore, in your Project Settings, you must choose whether you want to use cross-platform session invites or cross-platform party invites. You can't do both because of the limitations of the underlying subsystem such as Steam:

Image of how to configure presence via Project Settings

You can also change this setting directly in DefaultEngine.ini:

[EpicOnlineServices]
PresenceAdvertises=Session
; or ...
PresenceAdvertises=Party

Receiving friend list change notifications from delegated subsystems

EOS Online Subsystem will propagate friend list notifications from delegated subsystems back to your game. This includes notifications like "friends list changed"; for example, Steam will fire this notification whenever the presence status of a Steam friend changes.

The plugin will automatically call ReadFriendsList again for you before the OnFriendsChange event fires. Thus when you receive the OnFriendsChange event, the friends list will be up-to-date for the changes the delegated subsystem notified for.

info

In previous versions of the plugin you needed to call ReadFriendsList yourself in response to an OnFriendsChange event. You no longer need to do this, and should avoid doing so as it may cause infinite loops.