Platform Implementation for EOS

Guidelines and references for implementing EOS SDK on consoles

5 mins to read

To run the Epic Online Services (EOS) SDK, you must follow several prerequisite steps in your project's linking, packaging, and loading processes to ensure that your target platform loads and runs the EOS run-time. This page provides generic information about those processes, while the pages listed under Platform-Specific Documentation provide more specific information about each platform's needs. This page also includes information about how to use the Unreal Build System with EOS SDK.

For documentation regarding the EOS SDK and consoles (PlayStation, Xbox, Nintendo Switch, etc), you must configure your organization access and the documentation will be part of the SDK drop after First Party approval.

Console Platform Versions

The current EOS SDK supports the following console platform versions:

Console Platform Latest Version Minimum Version
PlayStation 4 Orbis v10.008.001 Orbis v9.508.001
PlayStation 5 Prospero v6.00.00.38 Prospero v5.00.00.33
Xbox GDK June 2022 QFE2 (220602) March 2022 QFE1 (220301)
Nintendo Switch 14.3.0 13.3.2_4.6.6

Thread Safety

The EOS SDK is not considered thread safe.

You should make all calls on the same thread. Some functions assert and crash if called from different threads.

Building

All EOS SDK headers include the eos_base.h header, but some platforms need additional setup before you can call eos_base.h. Each platform needing additional setup mentions this within the Platform-Specific Documentation and has a <Platform>/eos_<Platform>_base.h file for this additional setup.

Using eos_platform_prereqs.h

The EOS SDK provides the eos_platform_prereqs.h header to support cross-platform development. To use eos_platform_prereqs.h, add the EOS_BUILD_PLATFORM_NAME macro when building applications that need to include a specific platform.

Include the eos_platform_prereqs.h header before any other EOS SDK headers.

For example, if you are using the Unreal Build System, add the following code to your <Project>.Build.cs file:

if (!Target.IsInPlatformGroup(UnrealPlatformGroup.Windows) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Unix) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Apple) &&
!Target.IsInPlatformGroup(UnrealPlatformGroup.Android))
{
AppendStringToPublicDefinition("EOS_BUILD_PLATFORM_NAME",
Target.Platform.ToString());
}

Add the following #includes when using the different EOS interfaces:

#include "eos_platform_prereqs.h"
#include "eos_sdk.h"
#include "eos_[interface]_types.h"

For eos_[interface]_types.h, replace [interface] with the interface you are using:

#include "eos_friends_types.h"
#include "eos_auth_types.h"
#include "eos_lobby_types.h"

Custom Cross-Platform Example

If eos_platform_prereqs.h doesn't fit with the project's build system, it can reference macros provided by custom compilers. For example:

#if defined(__THECOMPILER__)
#include "ThePlatform/eos_ThePlatform_base.h"
#elif defined(__SOMECOMPILER__)
#include "SomePlatform/eos_SomePlatform_base.h"
#endif