It is not possible to dynamically switch from OSS Steam to OSS Epic Online Services without additional modifications, even though both share the same interfaces. While some features are missing entirely in one or the other, the problems are mainly caused by differences in the implementations of certain features.
Scope of this post
This post illustrates some differences between the OSS Steam and the OSS EOS. However, it is by no means a complete list of these differences.
If you are not selling your game on the Epic Games Store (and chances are high, because it is currently a “closed ecosystem”), you will not be able to switch from Steam login to native Epic Games login without further thoughts and actions.
Steam login is based on the Steam application running in the background. When starting any Unreal Engine game with OSS Steam, it will login automatically using the Steam API and display an overlay message. This is done by either using a generic Steam app id for development (which is restricted), or after registering a new app id by paying the product submission fee.
This is a very simple and player-friendly way to login. It requires no manual interaction by the player (except starting the game) and still offers certain security, because app ids can be removed by Steam in case they are misused.
However, it is required that Steam is running while a Steam game is being played. This limits the portability of this solution. For example, purely web-based games require a different approach.
In contrast to Steam, Epic Online Services require an interactive login by default. This implies that players are required to enter credentials when starting or joining an online game.
This can be avoided by integration third party authentication methods. For example, Steam can be used as third party authentication provider for Epic Online Services. However, integrating these authentication methods still requires explicit login calls and does not occur automatically.
Concerning Sessions and Servers
While Steam and EOS both support lobbies (which is a concept similar to chat rooms to prepare joining a game), their representations of servers are very different.
Steam Server Lists
Steam historically supports plain server lists. They were brought into life by FPS games and include metadata like map name and player list. When running a dedicated server with OSS Steam, it will be represented as an entry in the public Steam server list for the game. This means that the Online Subsystem maps Steam servers to sessions.
Steam server lists support proprietary filtering. They also may apply “automatic” filtering due to locations.
EOS Session Lists
Epic Online Services uses the abstract concept of sessions instead of servers. An EOS session is a game session.
The conventions and filters used for sessions are not compatible to the filters for Steam server lists. Because of this, it is necessary to rewrite matchmaking code when switching from OSS Steam to OSS EOS. Even simple flags like “dedicated server” are not compatible.
|OSS Steam||OSS Epic Online Services
(using Epic Games authentication)
|Auto-login on startup||Manual login, auto-login only with Epic Games Store (or DevAuthTool during development)|
|Requires Steam to be running||Can be run without any store software|
|Requires App Id (which costs money)||Requires brand review (which is currently free)|
|Generic App Id can be used for development purposes||DevAuthTool can be used for development purposes|
|Optional use of lobbies before joining games||Optional use of lobbies before joining games|
|Default matchmaking using Steam server lists, mapped to sessions by OSS||Default matchmaking using Sessions|
|Custom server filters||Custom session filters, not compatible to Steam filters|
|Players are allowed to create servers and thereby sessions||By default, only dedicated servers are allowed to create sessions (otherwise Peer2Peer configuration required)|
Epic, Epic Games, Unreal and Unreal Engine are trademarks or registered trademarks of Epic Games, Inc. in the United States of America and elsewhere.