Configuration
Installing The Plugin
Open the Epic Games Launcher, go to your Fab Library and search for "Kronos Matchmaking".
Press the Install To Engine button.
Select the desired engine version and install the plugin.
Enabling the Plugin
Once the plugin is installed, go to Edit -> Plugins and under the "Online" category you should be able to see "Kronos Matchmaking". Please make sure that the plugin is enabled!

If you plan on using Kronos from C++ don't forget to list it in your build dependencies. The build file is located in the "Source" folder of your project.
// Include Kronos as a dependency.
PrivateDependencyModuleNames.Add("Kronos");
// Additional includes you may need when extending certain Kronos classes.
PrivateDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils", "Lobby", "UMG" });
// Unreal Engine 5 users may also need to include this module.
PrivateDependencyModuleNames.Add("CoreOnline");
Project Configuration
1. Configuring the Online Subsystem
Kronos is built on the Online Subsystem (OSS) framework of Unreal Engine. Platforms such as Steam and EOS have their own Online Subsystem implementation in the engine by default. You just need to configure which OSS should be loaded by the engine. Kronos will do all matchmaking related features through the active OSS, so if you have it configured as Steam then sessions (online rooms) will be created and advertised on the Steam servers.
The Null Online Subsystem is an IP based subsystem that is meant to be used for testing purposes. It is only capable of handling sessions on the local network (LAN). In general you will only use this while testing in the editor. To configure this Online Subsystem, add the following settings to your project's DefaultEngine.ini
file:
; The Online Subsystem to be used by the engine.
[OnlineSubsystem]
DefaultPlatformService=Null
; Specific configuration of the Null Online Subsystem.
[OnlineSubsystemNull]
bEnabled=True
bAutoLoginAtStartup=True
; The net drivers to be used by the game.
; GameNetDriver: Used by regular game connections (server-client).
; BeaconNetDriver: Used by the party and reservation systems of Kronos.
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
+NetDriverDefinitions=(DefName="BeaconNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
; The net drivers to be used by the editor.
; Only ever used during PIE so just use the IpNetDriver.
[/Script/UnrealEd.EditorEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
+NetDriverDefinitions=(DefName="BeaconNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
; Specific configuration of the Ip Net Driver.
[/Script/OnlineSubsystemUtils.IpNetDriver]
NetConnectionClassName="/Script/OnlineSubsystemUtils.IpConnection"
ConnectionTimeout=60.0
InitialConnectTimeout=60.0
After configuring your Online Subsystem of choice, please go to Edit -> Plugins and make sure that the plugin for your Online Subsystem is enabled as well.
Note that you can configure multiple Online Subsystems and switch between them via the DefaultPlatformService
config param. This makes development iteration faster. However, do not configure net drivers twice! In most cases the engine will automatically use the fallback net driver when the primary net driver fails to initialize (e.g. due to using a net driver that is for a different Online Subsystem).
2. Configuring Online Beacons
Kronos uses Online Beacons to manage parties and game reservations. OnlineBeacons
are special actors in Unreal Engine that provide a "lightweight" way to contact a server without committing to a normal game connection. To configure the beacons used by the plugin, add the following settings to your project's DefaultEngine.ini
file:
[/Script/Kronos.KronosPartyListener]
ListenPort=7787
[/Script/Kronos.KronosPartyClient]
BeaconConnectionInitialTimeout=60.0
BeaconConnectionTimeout=25.0
[/Script/Kronos.KronosReservationListener]
ListenPort=7788
[/Script/Kronos.KronosReservationClient]
BeaconConnectionInitialTimeout=60.0
BeaconConnectionTimeout=25.0
The default EOS Online Subsystem in Unreal currently only works with ListenPort=15000
!
3. Configuring the Plugin
Kronos has its own configuration page in Edit -> Project Settings -> Kronos Matchmaking where you can customize most features of the plugin. You can override a lot of things here, but for now please configure the following params based on your Online Subsystem of choice:

Find Friend Session Supported: Whether the
FindFriendSession
function is supported by the Online Subsystem. Steam supports this, EOS does not.Find Session By Id Supported: Whether the
FindSessionById
function is supported by the Online Subsystem. EOS supports this, Steam does not.
Overriding the Online Session
The OnlineSession
class in Unreal Engine is a lesser known manager type class that is part of the GameInstance
. It's name is a bit misleading as its not related to sessions themselves, but rather acts as a manager for them. It's responsible for implementing and handling online service related events and functions. This class is the core of the Kronos Matchmaking plugin.
At this time the OnlineSession
class in Unreal Engine can only be overridden from C++ which means Blueprint projects must use the KronosGameInstance
class. This is basically a "dummy" class, as its only purpose is to override the online session for the project.
Please go to Project Settings -> Maps & Modes and set the GameInstance
class to KronosGameInstance
. If you already have your own game instance blueprint, you can just set its parent class to KronosGameInstance
. That will work as well.
Configuring Shipping Builds
Important information when you are preparing the final builds of your game.
Using Steam In Shipping Builds
While using the Development
or DebugGame
configurations, the Steam Online Subsystem automatically creates a "steam_appid.txt" somewhere inside the game's folder. This ensures that Steam can initialize correctly. However, this is not the case in Shipping
configuration! If you are not launching the game through Steam (using your unique Steam App Id) the Steam API will fail to initialize. To fix this:
If you have your own unique App Id on Steam: Change the
bRelaunchInSteam
config param to True in yourDefaultEngine.ini
. This will ensure that even if you start the game's exe file directly, it will be closed and relaunched through Steam instead.If you do NOT have your own unique App Id on Steam: After packaging, create a "steam_appid.txt" file in "<ProjectName>/Binaries/Win64/" folder of the game. The txt file should contain nothing but the App Id you wish to use, in this case the numbers: 480
Configuration Files Are Cached
When packaging your project in Shipping
configuration, the engine will save the configuration files to an external location outside of the game's folder. This means that if you made any changes to a config file before packaging, you may have to manually update the config files in the external location as well!
On Windows, configuration files are saved to: "C:\Users\<UserName>\AppData\Local\<ProjectName>"
Last updated