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:
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.
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:
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.
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.