Integrating SIK with EIK
Steam Integration Kit (SIK) (opens in a new tab) is a plugin that provides a set of Blueprints and C++ classes to help you integrate Steam features into your Unreal Engine project. The plugin is designed to work with the Epic Online Services (EOS) Integration Kit (EIK) (opens in a new tab) to provide a seamless experience for developers who want to use both Steam and EOS in their projects.
This guide will walk you through the process of integrating SIK with EIK so that you can take advantage of both plugins in your project.
Prerequisites
- Both plugins should be installed in your Unreal Engine project.
- Steam and EOS should be set up and configured for your project.
Setting Up DefaultEngine.ini
To integrate SIK with EIK, you need to set up the DefaultEngine.ini
file in your project to specify the Default Subsystem as EIK and Platform Subsystems as SIK. This will ensure that the EOS subsystem is used as the main subsystem for online features, while the Steam subsystem is used for platform-specific features.
Add the following lines to the DefaultEngine.ini
file in your project:
[OnlineSubsystem]
DefaultPlatformService=EIK
NativePlatformService=Steam
PLEASE NOTE: Make sure you do not add ANY net driver settings from SIK to the DefaultEngine.ini
file. This will cause the EOS subsystem to not work correctly. Your final DefaultEngine.ini
file should look like this:
[OnlineSubsystem]
DefaultPlatformService=EIK
NativePlatformService=Steam
[OnlineSubsystemEIK]
bEnabled=true
[/Script/OnlineSubsystemEIK.NetDriverEIK]
bIsUsingP2PSockets=true
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemEIK.NetDriverEIK",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[OnlineSubsystemSteam]
bEnabled=True
SteamDevAppId=480
Cross-Platform Session and Presence
One of the key features of the merge between SIK and EIK is the ability to create cross-platform sessions and manage player presence across multiple platforms. By integrating SIK with EIK, you can create sessions that are accessible to players on both Steam and EOS, allowing them to play together regardless of the platform they are using. Also, you can manage player presence across platforms, so that players can see their friends online and join their games, regardless of the platform they are using.
Creating a Cross-Platform Lobby Session
To create a cross-platform lobby session that is accessible to players on both Steam and EOS, the flow is as follows:
- Create a session on EOS using the
Create EIK Lobby
node. - Create a
Lobby
on Steam using theCreate Lobby
node, make sure you use the steamworks function as in the code below. - If the lobby creation on steam is successful, store the
Lobby ID
of the Steam lobby. - Now because the main subsystem is set to EIK, we just need to update the session of steam to have the join path of the EOS session. We will do this using the
Set Lobby Data
node, where we will set theJoin Path
to theResolved Address
of the EOS session. - Now players on both Steam and EOS can join the same lobby session.
Code available on BlueprintUE (opens in a new tab)
Note: The above code is placed in the GameInstance
class so that even after traveling to different levels, the session is maintained.
Joining a Cross-Platform Lobby Session
From EOS
To join a cross-platform lobby session from EOS, the flow is the same as joining a regular EOS lobby session. You can use the Find EIK Session
node to find the session you want to join and then use the Join EIK Session
node to join the session.
From Steam
To join a cross-platform lobby session from Steam, the flow is also the same as joining a regular Steam lobby session. You can use the Find Lobby
node to find the lobby you want to join and then use the Join Lobby
node to join the lobby. After that, get the Lobby Data
and extract the Join Path
from it and join the level:
Inviting Friends to a Cross-Platform Lobby Session
From EOS
- If you have presence enabled while creating the session, you can use the overlay to invite friends to the session or they can join you directly from the friends list.
- You can also use the
Invite EIK Session
node to invite friends to the session.
From Steam
- You can use the
Invite User to Lobby
node to invite friends to the Steam lobby session. The process is the same as inviting friends to a regular Steam lobby session.
Conclusion
Integrating SIK with EIK allows you to take advantage of both plugins in your Unreal Engine project and create a seamless experience for players on both Steam and EOS.