I have a single player game that is setup to work on Steam with all the steamworks stuff setup and working fine. I want to now make the game work on the Epic Games store. I am going through the documentation on the Online Subsyatem for EOS plugin here Online Subsystem EOS Plugin in Unreal Engine | Unreal Engine 5.8 Documentation | Epic Developer Community
I am a little confused how, once all the settings are setup in the plugin how I will be able to make builds for Steam vs builds for EGS. Does anyone know what is the right way of setting that up?
I am using UE5.6.
Hi! 
I might have missunderstood your question, english isn’t my first language but in anycase. I built Axiom using Google Login in my launcher and on launch Axiom uses the firebase token as a custom connector for EOS. I learnt that you don’t necessarily need to create two completely separate code builds for Steam and EGS. Here is how OnlineSubsystemEOS handles both platforms and how to set it up:
1. How EOS authentication works on EGS vs Steam
-
Epic Games Store (EGS): When a user launches your game through the Epic Games Launcher, the launcher automatically passes command-line arguments (such as -auth_type=exchangecode -auth_password=...). The OnlineSubsystemEOS plugin automatically parses these credentials at startup to log the player in seamlessly via the Auth interface.
-
Steam: When launching from Steam, EOS uses Steam as its native provider. EOS validates the player’s identity via Steam Auth Session Tickets (using External Auth / NativePlatformService=Steam).
2. Configuration (DefaultEngine.ini)
In your Config/DefaultEngine.ini, you can set up EOS alongside Steam:
[OnlineSubsystem]
DefaultPlatformService=EOS
NativePlatformService=Steam
[OnlineSubsystemEOS]
bEnabled=true
[/Script/OnlineSubsystemEOS.EOSSettings]
bUseAuthInterface=True
bUseConnectInterface=True
(Note: In my own architecture, I use a custom launcher that passes Firebase tokens as OpenID credentials directly to the EOS Connect interface, but for standard Steam + EGS store distribution, the config above is the standard way).
3. Handling Steam vs EGS builds
If you want to keep a single build binary or separate them:
-
Single Build (Easiest): Keep OnlineSubsystemEOS and OnlineSubsystemSteam both enabled. If launched via Epic Launcher, EOS consumes the EGS exchange code. If launched via Steam, it falls back to the Steam Native Subsystem to authenticate with EOS.
-
Separate Builds (If you want to exclude Steamworks DLLs from EGS):
-
Use Platform/Target Config Overrides: You can place platform-specific configs (e.g. inside Config/EGS/DefaultEngine.ini or package with target arguments like -ini:Engine:[OnlineSubsystem]:NativePlatformService=Null).
-
Use Project Target files / Preprocessor Flags: Create a custom Target in Unreal Build Tool if you need to conditionally disable the OnlineSubsystemSteam module in your .Build.cs.
Hope it helps! just ask any questions if you need more help
I personally have not used EGS yet, most solutions is based your architecture and systems.
I promise I don’t bite xD