EOS SDK Release Notes

Details of every update to the Epic Online Services (EOS) SDK.

About the EOS SDK

Download an Epic Online Services (EOS) SDK from the Epic Games Developer Portal (dev.epicgames.com/dev-portal).

In addition to different release versions of the EOS SDK, there are different types of SDK download to use, depending on the platform your game clients run on.

  • Windows, OSX, Linux - the EOS SDK in C, and the EOS SDK in C#.
  • Mobile - the EOS SDK for iOS, and the EOS SDK for Android.
  • Consoles - there are EOS SDK downloads for consoles in C, and in C#.
    The SDK downloads for consoles are only available to developers approved by the platform holders and approved by Epic Games.
    The platform holders are: Microsoft (Xbox One, Xbox Series X), Sony (PlayStation 4, PlayStation 5), Nintendo (Switch).
    To get access to the SDK downloads for consoles and associated documentation:
    • See the Developer Portal (dev.epicgames.com/dev-portal) for guidance on applying for console developer access from the platform holders.
    • Once you have platform-holder approval, you can apply to Epic Games using the Console Developer Request for Epic Online Services form, which is at eoshelp.epicgames.com.

Release Notes

2022

1.15.4 - 2022-nov-16

Anti-cheat

  • New: Improved the AntiCheatServer log output to include information about calls to EOS_AntiCheatServer_SetClientNetworkState.
  • New: Improved the anti-cheat service's server performance by reducing the number of HTTP requests made by the game server to the anti-cheat service. This allows servers to support larger player populations.
  • New: The AntiCheatServer now sends more data to the anti-cheat service when your game calls EOS_AntiCheatServer_LogPlayerDespawn.
  • Bug fix: Fixed a potential issue where, under high server load, the anti-cheat service might kick players from a game session inappropriately.

Authentication

  • Bug fix: EOS_Auth_VerifyIdToken does not return EOS_Auth_InvalidToken for valid ID tokens when you use EOS_Auth_VerifyIdToken before the SDK receives configuration from the EOS Service . EOS_Auth_VerifyIdToken now correctly waits for configuration and returns EOS_Success.

EOS SDK in C#

  • New: The EOS SDK in C# now supports pinning the same buffer multiple times. In addition to improving performance, this allows in-place encryption and decryption of network messages by the anti-cheat service.

Connect

  • Bug fix: EOS_Connect_VerifyIdToken does not return EOS_Connect_InvalidToken for valid ID tokens when you use EOS_Connect_VerifyIdToken before the SDK receives configuration from the EOS Service. EOS_Connect_VerifyIdToken now correctly waits for configuration and returns EOS_Success.

Ecom

  • New: Added a new API, EOS_Ecom_QueryEntitlementToken, in EcomInterface to query the entitlements token.

Social Overlay

  • Bug fix: Players can now see and click on a PROFILE button for all players, regardless of how they are connected to a game session. For example, a player connected to a game session through the Epic Game Store can see and click on the PROFILE button of a player connected through Steam. Previously some players connected through different game platforms could not see each other's PROFILE button.
  • Bug fix: Fixed an issue where EOS_UI_ShowBlockPlayer and EOS_UI_ShowReportPlayer failed. This issue happened when you disabled the Social Overlay with platform flags, which caused the SDK to incorrectly detect the network as disconnected.

Lobbies

  • Bug fix: Players are now limited to 16 concurrent lobbies. Attempting to create more than 16 concurrent lobbies results in an EOS_LimitExceeded error response.

Peer-to-peer

  • New: Peer-to-peer now uses the dcSCTP SCTP library implementation instead of usrsctp. This change addresses security issues with usrsctp, and improves responsiveness during poor network conditions.
    • Note: This change is backward compatible, but we recommend you upgrade to the latest SDK version as soon as possible for improved security and performance.
  • Bug fix: Fixed an issue where an established connection might timeout immediately after any interruptions.

Sessions

  • Bug fix: Players are now limited to 16 concurrent sessions. Attempting to create more than 16 concurrent sessions results in an EOS_LimitExceeded error response.

Stats

  • Bug fix: We have removed the restriction that LocalUserId needs to be the same as TargetUserId for EOS_Stats_IngestStat. This means when you enable the Client Policy setting ingestForAnyUser, a game client can now update player data for all players, for example those connecting through a peer-to-peer in game session: remote players and local players.

UPGRADE NOTES

Lobbies

  • Bug fix: Players are now limited to 16 concurrent lobbies. Attempting to create more than 16 concurrent lobbies results in an EOS_LimitExceeded error response.

Sessions

  • Bug fix: Players are now limited to 16 concurrent sessions. Attempting to create more than 16 concurrent sessions results in an EOS_LimitExceeded error response.

DEPRECATIONS

Anti-cheat

  • Deprecated: We deprecated the string AccountId parameter in EOS_AntiCheatServer_RegisterClientOptions and introduced a new EOS_ProductUserId UserId parameter to replace it. The new EOS_AntiCheatServer_RegisterClientOptions parameter has typing.
    • Note: If your game servers do not yet securely receive the EOS_ProductUserId from game clients, we recommend that you use the EOS Game Services' Connect Interface EOS Connect ID Tokens to get the EOS_ProductUserId.

EOS Core

  • Deprecated: We deprecated and replaced some macros to fit with the standard EOS SDK naming convention of EOS_<system_type>_<function_name>_API_LATEST. We have removed the string OPTIONS from the affected macros: EOS_PLAYERDATASTORAGE_*_API_LATEST and EOS_TITLESTORAGE_*_API_LATEST. For example, EOS_PLAYERDATASTORAGE_QUERYFILEOPTIONS_API_LATEST becomes EOS_PLAYERDATASTORAGE_QUERYFILE_API_LATEST.
    • Note: For backward compatibility, the deprecated macros are still present but we will be removing them in a future version. We recommend replacing any deprecated macros that use the old naming convention with macros that use the new naming convention.

PLATFORM-SPECIFIC

Sony PlayStation

  • New: Added version support for Sony's PS4 Platform SDK version 10.008.001 and retained support for Sony’s PS4 Platform SDK version 9.508.001..
  • New: Added version support for Sony's PS5 Platform SDK version 6.00.00.38 and retained support for Sony’s PS5 Platform SDK version 5.00.00.33.
  • Bug fix: Fixed a bug where games running on PS5 crashed when players with voice chat enabled joined or left lobbies.

Microsoft Xbox

  • New: Added version support for Microsoft GDK June 2022 QFE2 (220602) and retained support for March 2022 QFE1 (220301).

1.15.3 - 2022-oct-06

From 2022-oct-06, EOS SDK release 1.15.3 includes a hotfix to the SDKs for Xbox and PlayStation.


1.15.3 - 2022-sep-19

RELEASE NOTES and UPGRADE NOTES

Mobile

Android

  • New: There are now two types of Android SDK. We added a new type of Android SDK, which is static and links with libc++_static.a. The existing Android SDK is dynamic and links with libc++_shared.so.

    SDKs are available for both types in the SDK download. There is one header file for both.

    • The static binary is located in ~/SDK/Bin/Android/static-stdc++.
    • The dynamic binary is located in ~/SDK/Bin/Android/dynamic-stdc++.

    Use the static type if:

    • Your game engine (such as UE5.1), or any libraries in it, use custom new or delete operators. These are not supported well by libc++_shared.so.
    • Your game, or any library in it, uses libc++_static.a. Mixing libc++_static.a and libc++_shared.so is not supported on Android. Make sure that all your code and libraries, and any you use from a third party, are linked with libc++_static.a.

Note

  • If you have already downloaded and are using Epic Online Services SDK version 1.15.2 and your game uses P2P, we strongly recommend that you update to SDK version 1.15.2.1 as soon as possible.
  • We have copied the 1.15.2 release notes here for reference.

1.15.2.1 - 2022-aug-30

RELEASE NOTES

P2P

  • Bug fix: Resolved a new issue in 1.15.2 where a P2P connection between peers timed out shortly after connecting under specific circumstances.

1.15.2 - 2022-aug-26

RELEASE NOTES

New features

Apple silicon support on Mac

  • New: The SDK now supports Apple silicon on Mac as a universal dylib.
    • Note: Anti-cheat currently does not support Apple silicon.

Updates: new, bug fixes, improvements, deprecations

Anti-cheat

  • New: In the configuration file anticheat_integritytool.cfg, you can now configure settings for your game client, such as the maximum number of active instances of your game allowed on a player’s machine.
  • Bug fix: We have resolved a crash in EOS_AntiCheatClient_RegisterPeer that occurred if you used SDK 1.15 without rebuilding your project with new headers.
  • Bug fix: The anti-cheat server no longer retries HTTP requests that failed due to EOS service downtime. In addition, the anti-cheat server no longer retries when the player has left the game session.
  • Bug fix: We fixed a bug in the anti-cheat integrity tool on Unix and macOS that was introduced with SDK 1.15: the tool outputted to the wrong location. The output is now correctly located in the EasyAntiCheat/Certificates folder, which is in line with the behavior of previous SDK versions.
  • Bug fix: Fixed an issue so the anti-cheat bootstrapper no longer tries to load a cached module if the anti-cheat service is disabled.
  • Bug fix: Fixed a crash on SDK initialization for some macOS Monterey systems.
  • Bug fix: Fixed an issue where the anti-cheat bootstrapper lagged on players’ machines running AMD Ryzen CPUs.
  • Bug fix: Fixed an issue where the anti-cheat bootstrapper failed to initialize if the player’s GPU does not support textures larger than 2048x2048.
  • Bug fix: Fixed an issue where the anti-cheat bootstrapper’s user interface was hard to see if the splash screen is primarily white, or has white elements.
  • Bug fix: Fixed a compatibility issue between the Anti-Cheat bootstrapper and the latest version of Arch Linux. This issue will also affect the Steam Deck when attempting to run games compiled for Windows using Proton.
    • To apply the fix, replace the old version of start_protected_game.exe with the new one packaged in this release and proceed to release an up-to-date Linux anti-cheat module for your game on the dev portal. No other changes are needed.
  • Improvement: The anti-cheat bootstrapper’s binary (executable file) is now inside a bundle. This executable bundle means:
    • We have added a default icon to the macOS executable bundle, so it now has the same icon on macOS as it does on Windows.
  • Improvement: The anti-cheat bootstrapper no longer caches its resources onto a player’s machine’s hard disk.
  • Improvement: On Windows, the anti-cheat bootstrapper now displays your game executable’s icon in the taskbar. If you add a custom icon in the ~/<game root>/ EasyAntiCheat directory, it overwrites the default icon.
  • Improvement: The anti-cheat integrity tool now has more usage samples. You can see them by running anticheat_integritytool.exe --help.

Authentication

  • New: If you disable the EOS overlay in your game or it is not installed, Auth Interface uses a system browser so players can sign in.
  • Bug Fix: Fixed an issue where, on a flakey network, the logout callback fired multiple times and returned success multiple times.

Connect

  • Bug fix: Fixed EOS_Connect_Login failing to accommodate UTF-8 character lengths up to the 32 char limit.

EOS core

  • New: iOS and Android samples now use examples of the SDK 1.15 suspend/resume and network connect/disconnect APIs.
  • New: The EOS SDK now requires Steamworks API (EOS_IntegratedPlatform_Steam_Options). You must use the Steamworks API for Steamworks SDK version 1.48 or later. If you use Steamworks earlier than 1.48, Steam integration does not work.
  • Bug fix: EOS_Platform_Create now correctly detects pre-SDK 1.15 header files and treats the default EOS_ENetworkStatus to EOS_NS_Online on all console platforms.
    • Now: On all console platforms, the default network status is offline. This provides better management when you use EOS_Platform_SetNetworkStatus.
    • Previously: On console platforms, you should only call EOS_Platform_Create when the game was online. You needed to call EOS_Platform_Release first if the game was offline. SDK 1.15 did not maintain this if your game used pre SDK 1.15 header files. This fix resolves that.

P2P

  • New: Fixed a performance issue in EOS_P2P_SendPacket that was caused by thread-synchronization blocking in an internal library.
  • New: EOS_P2P_ReceivePacket no longer requires calls to EOS_Platform_Tick to receive new packets.
  • New: Added a new field to EOS_P2P_SendPacket. The new field, called DisableAutoAcceptConnection, allows automatic acceptance of connections in packet-sending logic.
    • If you use this option, your game must always use EOS_P2P_AcceptConnection to open connections.
    • If you use EOS_P2P_SendPacket, it now returns EOS_EResult::EOS_NoConnection when it fails under the following two circumstances:
      • The remote peer has not accepted the connection.
      • The connection has closed since the last time the remote peer accepted it.
  • New: Added a function, called EOS_P2P_AddNotifyPeerConnectionInterrupted, which listens for non-fatal disconnects in the connection. If this function returns a disconnect, one of the following callbacks fire to let your game know the connection status:
    • EOS_P2P_OnPeerConnectionEstablishedCallback - the connection is re-established.
    • EOS_P2P_OnRemoteConnectionClosedCallback - the connection has failed to reconnect and is closed.

Ecom

  • New: Added ReleaseDate and EffectiveDate to EOS_Ecom_CatalogOffer.
  • New* Introduced two new APIs to the Ecom Interface:
    • EOS_Ecom_GetLastRedeemedEntitlementsCount to fetch the number of entitlements that were redeemed during the last EOS_Ecom_RedeemEntitlements call.
    • EOS_Ecom_CopyLastRedeemedEntitlementByIndex to fetch a redeemed entitlement ID from an index.
  • Bug fix: EOS_Ecom_RedeemEntitlements no longer returns Success when passed incorrect entitlement ID(s).
  • Deprecated: We deprecated the PurchasedCount field from EOS_ECom_CatalogOffer.
    • Note: Do not use the PurchasedCount field.
    • Now: The PurchasedCount field always has a value of 0.
    • Previously: In pre-SDK 1.15.2, the EOS service sends PurchasedCount with a value of 0 unless you have configured PurchaseLimit for the offer. We will not support this behavior indefinitely, so do not depend on this value.

Samples

  • New: In the sample projects, Steam login now uses Steam Auth Session Tickets instead of Steam Encryption Application Tickets for improved security.

Session-based matchmaking

  • Bug fix: Fixed EOS_Sessions_JoinSession so it no longer invokes CompletionDelegate multiple times, and no longer returns EOS_NotFound when the operation requires HTTP retries.

Platform-specific

macOS

  • Bug fix: Fixed an issue where the Dev Auth Tool and anti-cheat bootstrapper did not open on macOS.

Console general

  • New: The EOS SDKs for consoles are now pinned to two release versions of a console’s SDK. The two release versions of a console’s SDK (Microsoft’s Xbox SDKs, Sony’s PlayStation SDKs, and Nintendo’s Switch SDKs, for example) are:
    • The latest release version.
    • The previous release version.
    • Note: This applies to the EOS SDK for all consoles and to all future releases of the EOS SDKs for consoles.
  • Bug fix: EOS_Platform_Create now correctly detects pre-SDK 1.15 header files and treats the default EOS_ENetworkStatus to EOS_NS_Online on all platforms. This resolves a backwards compatibility issue on consoles.

Sony PlayStation

  • New: Added version support for PS4 SDK 9.008.001 and retained support for PS5 SDK 4.000.00.31.

Nintendo Switch

  • New: Added version support for Nintendo Switch SDK 14.3.0 and retained support for Nintendo Switch SDK 13.3.2.

Microsoft Xbox

  • New: Added version support for Xbox GDK 220301 and retained support for Xbox GDK 211001.

1.15.1 - 2022-jul-01

RELEASE NOTES

Note - If you ship your game on Steam:

  • If you have already downloaded and are using Epic Online Services SDK version 1.15 for C or C#, you need to download the 1.15.1 version of the SDK and use it instead.
  • 1.15.1 has updated authentication for Steam in the SDK for C and SDK for C#. The SDKs for consoles are unaffected.

SDK for C and SDK for C#

Authentication

  • Deprecated: EOS_ECT_STEAM_APP_TICKET is deprecated for use with EOS_Auth_Login. Use EOS_ECT_STEAM_SESSION_TICKET instead.
    • Note: The SDKs for consoles are unaffected.

1.15 - 2022-jun-16

RELEASE NOTES

New Features

Crossplay

Seamless crossplay on PC: use crossplay to unify your players and your matchmaking pools across Steam and the Epic Games Store. See What's new in the documentation for more details.

Existing Features, New, Bug Fixes, Deprecations Anti-cheat

  • New: Anti-cheat peer-to-peer mode now supports cross-platform play between PC and console users.
  • New: Replaced the client-side EOS_AntiCheatClient_PollStatus with a callback function which you can access through EOS_AntiCheatClient_AddNotifyClientIntegrityViolated.
  • Bug Fix: Fixed an issue with AntiCheatServer that players could use to cheat by avoiding detection.
  • Bug Fix: Fixed a crash on SDK initialization for some macOS Monterey systems.
  • Improvements: Better error logging for anti-cheat gameplay data features.
  • Improvements: Better error logging for anti-cheat peer-to-peer mode.
  • Deprecation: EOS_AntiCheatClient_RegisterPeerOptions AccountID is now deprecated. PeerProductUserId replaces it.
  • Improvements: The anti-cheat bootstrapper’s binary (executable file) is now inside a bundle. This executable bundle means:
    • We have added a default icon to the macOS executable bundle, so it now has the same icon on macOS as it does on Windows.
    • You can add more modifications to your game running on macOS.
  • Known Issue: Changes to the anti-cheat tooling intended to go live with EOS SDK 1.15 were not included in the SDK and will instead be distributed with EOS SDK 1.15.1.
  • Known Issue:If you call EOS_AntiCheatClient_RegisterPeer using the EOS SDK 1.15 libraries, you must rebuild your game with the new 1.15 headers. If you do not, your game will crash.

Authentication

  • New (Breaking Change): On Windows, the EOS_LCT_AccountPortal and EOS_LCT_ExternalAuth login types now require the EOS redistributable installed with your game.
  • New: The SDK now supports verifiable parental consent. Younger users may be prompted to obtain parental consent for their Epic Account, or for data sharing within a game.
  • New: SDK packages now contain the EOS bootstrapper and EOS bootstrapper tool for use with the EOS redistributable for crossplay on Windows PC.
  • Bug Fix: Fixed an issue where the EOS_Connect_OnLoginStatusChangedCallback did not report that the local user’s authentication session had expired.
  • Bug Fix: Fixed an issue that caused EOS_P2P_QueryNATType to always fail and use the wrong NAT servers if called too soon after EOS_Platform_Create.
  • Bug Fix: Renamed EOS_EResult::EOS_Auth_PersistentAuth_AccountNotActive to EOS_EResult::EOS_Auth_AccountNotActive. This removes Persistent because the Epic Account status it returns is not specific to only the persistent (EOS_LCT_PersistentAuth) login type.

EOS Core

  • New: Added EOS_Platform_GetDesktopCrossplayStatus API for Windows PC. Games distributed outside the Epic Games Store can use this API to verify that the in-game overlay for Epic Account login is readily available.

  • New (Breaking Change): Added the APIs listed below to the Platform Interface. They inform the SDK when the game gets suspended and resumed, and when the network connectivity state of the local system changes.

    There are four new APIs:

    • EOS_Platform_SetApplicationStatus
    • EOS_Platform_SetNetworkStatus
    • EOS_Platform_GetApplicationStatus
    • EOS_Platform_GetNetworkStatus
    • All games must now call the two Set APIs for the SDK to work correctly:
      • EOS_Platform_SetApplicationStatus
      • EOS_Platform_SetNetworkStatus

Known Issue: iOS and Android samples are currently not updated with examples of the new suspend / resume and network connect / disconnect APIs.

  • New: Added types EOS_EApplicationStatus and EOS_ENetworkStatus.
  • New: When a game client resumes to a foreground state, the SDK now updates the auth token’s expiration, based on the time that elapsed when it was in a background state.
  • New: Redacted display names from the SDK logs because this is personal player information.
  • New: Redacted continuation tokens from the SDK logs because this is sensitive information.
  • New: Updated the EOS_Ecom_QueryOwnership limit from 32 to 50 to bring the SDK in line with the EOS service request limit of 50.
  • Improvements: Updated the SDK build version string returned by EOS_GetVersion to contain the platform it relates to.

Friends

  • New: Enabled EOS_Friends_SendInvite, EOS_Friends_AcceptInvite, and EOS_Friends_RejectInvite. Games can call these APIs to let players make new friend connections in-game. These APIs were not enabled in previous SDK versions.

Lobbies

  • New: Added new notification functions EOS_Lobby_AddNotifyLobbyInviteRejected and EOS_Lobby_RemoveNotifyLobbyInviteRejected.
  • New: Added EOS_CustomInvites_AddNotifyRejected and EOS_CustomInvites_RemoveNotifyRejected functions to bring custom invites in line with the Lobbies Interface and Sessions Interface.
  • Bug Fix: Added additional error messages related to players who are interacting with the voice features of the SDK. The error messages now report when players are not found.
  • Bug Fix: Invites to a lobby are now identifiable by the player who sent the invite. If a player has invites to a lobby from various friends, when the player accepts one of the invites, the Social Overlay now removes all the player’s unused invites.

P2P

  • Bug Fix: Fixed an issue that caused EOS_P2P_QueryNATType to always fail and use the wrong NAT servers if called too soon after EOS_Platform_Create.
  • Bug Fix: Greatly reduced the CPU performance cost of EOS_P2P_SendPacket.

Player Data Storage

  • Bug Fix: Improved the performance of file reads during the hashing of cached files in player data and title storage file reading and writing flows.

Samples

  • Bug Fix: Fixed EOS_UserInfo_CopyUserInfoOptions to use the correct API version type EOS_USERINFO_COPYUSERINFO_API_LATEST.
  • Improvements: Changed the Visual Studio Debug and Release project configuration build defaults to Debug_SDL and Release_SDL.
  • AuthAndFriends Sample:
    • Improved the UI on the custom invites dialog box.
  • Voice Sample:
    • Added support for setting an individual player’s audio volume.

Social Overlay

  • New: Added EOS_UI_PauseSocialOverlaywhich pauses the Social Overlay and EOS_UI_IsSocialOverlayPaused which checks if the Social Overlay is paused.
    • While paused, the Social Overlay is not displayed.
    • Pause the Social Overlay during cut-scenes to prevent toasts and temporarily keep the player immersed in your experience.
  • New: Added EOS_UI_ShowBlockPlayer and EOS_UI_ShowReportPlayer. These send a state update to the Social Overlay requesting that a player is blocked or reported.
  • New: Added EOS_UI_GetFriendsExclusiveInput so your game can immediately check whether the Social Overlay is in exclusive input mode. Previously games had to keep track of this state using the EOS_UI_OnDisplaySettingsUpdatedCallback callback.
  • New: The Social Overlay now shows a player ALL their Epic friends. This includes Epic friends who have never played the game a player is playing.
  • New: Added functionality so players can:
    • Search Epic friends
    • Manage Epic friends: add and remove friends, accept and deny incoming friend invites, and cancel outgoing friend invites
    • Block Epic friends
    • Report Epic friends
  • New: The Social Overlay can now show cross-platform friends alongside Epic friends: Players who launch your game from the Epic Games Store can see friends who launch your game from Steam.
  • Bug Fix: The Invite button no longer displays when a lobby is full.
  • Improvements: The Social Overlay is hidden when a game’s status changes or the network is disconnected.

User Info

  • New: Added DisplayNameSanitized to EOS_UserInfo and EOS_UserInfo_ExternalUserInfo. This contains the sanitized display name when your game is running on platforms that have sanitization support.

Voice

  • New: Added bParticipantInBlocklist field to EOS_RTC_ParticipantStatusChangedCallbackInfo which reports when a player is added or removed from a block list. Use this to know when a player can’t be heard in a lobby because they are on a block list.
    • Note: This is an automatic enforced internal block which you can’t override.
  • New: Added EOS_RTCAudio_UpdateParticipantVolume for audio volume control that extends (and replaces) the existing volume control.
  • Bug Fix: Allowed setting NoAffinityMask on RTC threads.
  • Bug Fix: Fixed an issue on OSX where the audio input device did not recognize any devices.
  • Deprecation: Deprecated LocalUserId and LobbyId in the EOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions struct.

C# SDK

  • New (Breaking Change):

    • Changed most reference types (classes) to value types (structs), giving significant performance gains.
    • You must use the ref keyword when you pass options structs in API calls.
    • You must use the ref keyword when you pass info structs in callbacks.
    • Because reference types (classes) are now value types (structs), there might be new bugs in your code, depending on how you assign options and pass them in API calls. We recommend testing for regressions in this area.
  • New: The SDK now uses byte[] instead of ArraySegments to prevent unnecessary copies of data.

  • New: Added a new Utf8String class to reduce the UTF-16 to UTF-8 conversions.

  • New: Added fixes, optimizations, and improvements to the wrapper code.

  • Bug Fix: Added dynamic binding symbol mappings for Win32 and macOS.

Tools

Developer Auth Tool

  • New: The tool persists the port chosen by the player. On successive launches, this port is automatically selected in the UI.
  • New: The tool remembers player credentials between uses, without requiring player logins to refresh it.
  • Bug Fix: The tool refreshes player credentials when it runs for long durations.

LIBRARIES

  • New: Updated openssl-1.1.1n.

UPGRADE NOTES

Anti-cheat

  • See the documentation for details on how to use peer-to-peer mode in cross-platform play.
    • Note: To ensure authentication works correctly with this feature, you must update the SDK for PC and console platforms simultaneously when you use this feature.

PROGRAMMING UPGRADE NOTES

Authentication Breaking Change

  • On Windows, the EOS_LCT_AccountPortal and EOS_LCT_ExternalAuth login types now require the EOS redistributable installed, and your game must launch with the EOS bootstrapper.

EOS Core Breaking Change

  • All games must now call the following two APIs for the SDK to work correctly:
    • EOS_Platform_SetApplicationStatus
    • EOS_Platform_SetNetworkStatus
  • Added these APIs to the Platform Interface. They inform the SDK when the game gets suspended and resumed, and when the network connectivity state of the local system changes.
    You can use two new related APIs optionally, to check the status:
    • EOS_Platform_GetApplicationStatus
    • EOS_Platform_GetNetworkStatus

Known Issue: iOS and Android samples are currently not updated with examples of the new suspend / resume and network connect / disconnect APIs.

C# SDK Breaking Change

  • Changed most reference types (classes) to value types (structs), giving significant performance gains.
  • You must now use the ref keyword when you pass options structs in API calls.
  • You must now use the ref keyword when you use info structs in callbacks.

Voice

  • When a player joins an RTC room, they are initially blocked until their real block status is resolved. This means that there is more than one notification of their block status: ParticipantStatus is set to EOS_RTCPS_Joined and their bParticipantInBlocklist is initially set to true before updating to their real block status.
  • The LocalUserId and LobbyId fields of EOS_Lobby_AddNotifyRTCRoomConnectionChangedOptions are now deprecated.
    • The registered callback is now called for all local users and lobbies.
    • If the game needs to perform any filtering, use the LocalUserId and LobbyId in the EOS_Lobby_RTCRoomConnectionChangedCallbackInfo callback parameter.

Platform-specific

Console General

  • Bug Fix: Fixed an issue where EOS_RTC_XXX functions could have attempted to use the network before it was valid to. EOS_RTC_XXX functionality now respects the current EOS_HPlatform network status value.

Steam

  • New: When running on a platform that supports native sanitization, the DisplayName field in EOS_UserInfo and EOS_UserInfo_ExternalUserInfo now has a DisplayNameSanitized counterpart representing the version of that name that the platform’s sanitization or filtering functionality has processed.
  • Bug Fix: Updated the Steam friends interface to use additional friend flags for blocked users.

Sony PlayStation

  • Updated to PS4 SDK 9.508.001 and PS5 SDK 5.00.00.33.

Nintendo Switch

  • Updated to Nintendo Switch SDK 13.3.2.
  • Deprecation: The OnNetworkRequested callback in EOS_Switch_InitializeOptions is now deprecated and replaced by the new EOS_Platform_OnNetworkStatusChanged API.
  • Lobbies
    • New: The EOS SDK now respects and automatically enforces the Nintendo Switch Online membership permission requirement, when it’s applicable for online matchmaking.

Microsoft Xbox

  • Updated to Xbox GDK to version 211001.
  • Added support for the EOS developer auth tool on Xbox GDK platforms.
    • Treat the target IP address of the developer auth tool as a local IP, such as 192.168.x.x, 10.x.x.x, 127.x.x.x, 172.16.x.x through 172.31.x.x, or the equivalent IPv6 addresses.
    • Hostnames are not supported at this time.
    • Only use this feature for development and testing: use the GDK's own authentication to log in users in real-world scenarios. This feature does not work on retail devices.
  • Bug Fix: Fixed a bug in GDK Sanitizer that could result in unlimited re-sanitization calls to Microsoft services.

1.14.2-hf-2 - 2022-jul-07

Note - If you ship your game on Steam:

  • If you have already downloaded and are using the Epic Online Services SDK for C or C# versions 1.14.2 or 1.14.2-hf-1, you need to download the 1.14.2-hf-2 hotfix version of the SDK for C or C# and use it instead.
  • 1.14.2-hf-2 has updated authentication for Steam in the SDK for C and SDK for C#. The SDKs for consoles are unaffected.

RELEASE NOTES

SDK for C and SDK for C

Authentication

SDK for C and SDK for C#

  • Deprecated: EOS_ECT_STEAM_APP_TICKET is deprecated for use with EOS_Auth_Login. Use EOS_ECT_STEAM_SESSION_TICKET instead.
    • Note: The SDKs for consoles are unaffected.

1.14.2-hf-1 - 2022-feb-14

Note: If you already downloaded Epic Online Services SDK Version 1.14.2, you must also download this version of the SDK, to resolve an issue with AntiCheat (see below).

RELEASE NOTES

AntiCheat

  • Bug fix: We fixed an issue where the anti-cheat bootstrapper would strip quotes when forwarding arguments.

1.14.2 - 2022-feb-01

RELEASE NOTES

AntiCheat

  • New:The anti-cheat bootstrapper now supports specifying the name of the .json from which the values will be parsed. To provide a custom .json file invoke the bootstrapper with the following included: -anticheat_settings=Custom.json. Note that the file must still be placed in the same directory as before.
  • Bug Fix: Fixed the anti-cheat bootstrapper failing to launch for users with non-ASCII characters in their Windows username.
  • Bug fix: Fixed an issue where the anti-cheat bootstrapper would strip quotes when forwarding arguments.
  • Bug Fix: Fixed the Steam Overlay initializing on the anti-cheat bootstrapper loading window.
  • Bug Fix: Fixed anti-cheat bug that caused games to fail to start on Fedora Linux.
  • Bug Fix: Fixed the anti-cheat integrity tool sometimes failing for working directory paths that include non-ASCII characters.
  • Bug Fix: Fixed a possible memory leak in AntiCheatServer.
  • Bug Fix: Fixed a potential crash with a very high number of players in a single game server or with a poor backend connection.
  • Improved layout of anti-cheat integrity catalog files.
  • The anti-cheat interface's ProtectMessage and UnprotectMessage functions may now be called from any thread, however they are not thread safe and must not be called from more than one thread concurrently.
  • Improved error logging for ProtectMessage and UnprotectMessage.

Authentication

  • Bug Fix: Fixed EOS_Auth_VerifyIdToken failing for tokens that were received from game clients using a differing Client ID from the server's Client ID.
  • Bug Fix: Fixed EOS_Auth_VerifyIdToken not being allowed to be called by game clients.
  • Bug Fix: Fixed EOS_Auth_VerifyIdToken not rejecting expired tokens.
  • Added returning ApplicationId, ClientId, ProductId, SandboxId, DeploymentId and external account information in EOS_Auth_VerifyIdTokenCallbackInfo to the caller.

Connect

  • Bug Fix: Fixed an issue where the EOS_Connect_AddNotifyLoginStatusChanged would not fire when auth expires except in rare cases. Registered callbacks will now correctly be notified when a user is logged out due to auth expiration.
  • Bug Fix: Fixed EOS_Connect_VerifyIdToken failing for tokens that were received from game clients using a differing Client ID from the server's Client ID.
  • Bug Fix: Fixed EOS_Connect_VerifyIdToken not being allowed to be called by game clients.
  • Bug Fix: Fixed EOS_Connect_VerifyIdToken not rejecting expired tokens.
  • Added returning ClientId, ProductId, SandboxId and DeploymentId in EOS_Connect_VerifyIdTokenCallbackInfo to the caller.

Core

  • New: The EOS SDK version and configuration information are now written to log output on startup to help with troubleshooting.

Ecommerce

  • Bug Fix: Fixed a bug where EOS_Ecom_Transaction_CopyEntitlementByIndex was not populating the CatalogItemId of EOS_Ecom_Entitlement properly.

Samples

  • Bug Fix: Leaderboards - Fixed crash in Leaderboards sample when using a Leaderboard configured to never expire.
  • Bug Fix: Resolved an Auth issue in the Login samples (iOS/Android).

Session Based Matchmaking

  • Sessions that enforce sanctions can now be created. Sanctioned players may neither join nor register with a session that was created with sanctions enabled. See the documentation on Sanctions Interface for more information.

Social Overlay

  • Bug Fix:Fixed a very rare crash in the communication layer between the SDK and EOS Overlay

Title Data Storage

  • Logging has been improved for many error cases

PROGRAMMING UPGRADE NOTES

AntiCheat

  • Added log entries for cases where the encryption/decryption fails. Error logging already existed for invalid arguments.

Console Specific

Nintendo Switch

  • New: Updated the Nintendo Switch Nintendo SDK version to 13.3.0 from 11.4.3.

KNOWN ISSUES

AntiCheat

  • When the anti-cheat bootstrapper is provided with a custom icon it will sometimes appear blurry.
    • This will be resolved with the next release

2021

1.14.1 - 2021-nov-08

RELEASE NOTES

New Features:

  • Custom Invites

    The Custom Invites feature is designed for developers who want to use their own grouping technology while still taking advantage of the Social Overlay and Epic Games Launcher invite buttons and prompts.

    Developers provide an arbitrary string payload for transmission to other players, and this payload is sent either through direct API call or via the Social Overlay Invite button. Players on the receiving side will see the same Social Overlay Invite Received prompts as with EOS Sessions and Lobbies, and received invites can also trigger new EOSSDK API callbacks if desired.

  • Added CustomInvites UI elements and functionality to AuthAndFriends sample.

  • A Send Invite button opens a send invite dialog which allows the user to set a payload and choose a target user, and ultimately "send" an invite. Instead of using the Send button, the Overlay can also be opened where a Send button will appear next to any users currently eligible to receive the invitation.

  • When an invite is received, a dialog appears with detail about the invite and offers Accept and Decline buttons which ultimately call FinalizeInvite with Success/Canceled results.

AntiCheat

  • New: Added verbose logging support for the bootstrapper, this is enabled by passing either of the following as command line arguments: -v or --verbose.
  • New: The bootstrapper now supports custom runtime icons on Windows, to use a custom icon place a BootstrapperIcon.ico under the <working_dir>/_EasyAntiCheat/_ directory.
  • Bug Fix: Fixed AntiCheatServer backend timeout errors when running with a very high number of players in a single game server.
  • Bug Fix: Fixed a potential crash with a very high number of players in a single game server or with a poor backend connection.
  • Bug Fix: Fixed AntiCheatClient PollStatus function having an out parameter incorrectly named ViolationType instead of OutViolationType.
  • Bug Fix: Fixed AntiCheatClient PollStatus function lacking correct out parameter marshaling in the C# SDK.
  • Bug Fix: The bootstrapper is now code signed on Windows.
  • Bug Fix: The bootstrapper now displays an error if the executable field defined through Settings.json targets a directory.
  • Security improvements.

Authentication

  • Bug Fix: Fixed EOS_Auth_CopyIdToken not providing an ID Token for logins using the EOS_ELoginCredentialType::EOS_LCT_AccountPortal and EOS_ELoginCredentialType::EOS_LCT_DeviceCode credential types.

Connect

  • Added user authentication support using Epic Account ID Tokens with a new EOS_EExternalCredentialType::EOS_ECT_EPIC_ID_TOKEN credentials type.
  • Added Amazon as a supported user authentication provider.
  • Extended EOS_Connect_VerifyIdToken to return information about the external account associated with the verified Product User ID.
  • Updated header commenting for EOS_Connect_QueryProductUserIdMappingsOptions struct to callout usage with dedicated servers.

Core

  • Bug Fix: Fixed an issue where builds launched via EGS Launcher would crash on Mac
  • Minimum supported macOS version has been changed from 10.14 to 10.12.

Lobbies

  • Bug Fix: Fixed a bug where create/join lobby would fail and destroy any existing lobbies by closing the active connection.

Social Overlay

  • New: Added the CustomInvites Interface to provide developers the ability to transmit/receive arbitrary payloads with the same high-level functionality provided by EOS Lobbies and Sessions.
  • New: Added CustomInvites UI elements and functionality to AuthAndFriends sample.
    • A Send Invite button opens a send invite dialog which allows the user to set a payload and choose a target user, and ultimately "send" an invite.
    • When an invite is received, a dialog appears with detail about the invite and offers Accept and Decline buttons which ultimately call FinalizeInvite with Success/Canceled results.
    • Custom Invites Interface: Added Payload as a parameter in the OnCustomInviteReceived and OnCustomInviteAccepted callback infos
  • Custom Invites - Added EOS_CustomInvites_NotifyCustomInviteAccepted, EOS_CustomInvites_RemoveNotifyCustomInviteAccepted and EOS_CustomInvites_NotifyCustomInviteProcessed

CONSOLE SPECIFIC

Sony Playstation

  • New: The EOS SDK PlayStation 4 release now targets the 9.000 PlayStation 4 SDK.
  • New: The EOS SDK PlayStation 5 release now targets the 4.000 PlayStation 5 SDK.

KNOWN ISSUES

AntiCheat

  • Anti-Cheat bootstrapper is missing some localizations
  • Steam overlay automatically initializes when Anti-Cheat bootstrapper opens
  • Anti-Cheat fails to initialize on Fedora/Red Hat Linux
  • Anti-Cheat bootstrapper may fail to launch for users with non-ASCII characters in their Windows username
  • Memory leak in AntiCheatServer for some configurations
  • AntiCheatServer may crash when player count is very high

EOS Connect & EOS Auth

  • EOS_Connect_VerifyIdToken and EOS_Auth_VerifyIdToken fails due to differing Client ID between servers and game clients
  • EOS_Connect_VerifyIdToken and EOS_Auth_VerifyIdToken do not correctly check against token expiration
  • EOS_Connect_VerifyIdToken and EOS_Auth_VerifyIdToken are not available for game clients, only if the SDK is initialized with bIsServer set to true

1.14 - 2021-sep-23

RELEASE NOTES

New Features:

  • Progression Snapshot, (Account Merge Service Preview)
    • Added a new feature in preparation for the introduction of account merge.
    • Progression snapshots are a way for developers to store key/value pairs about user progress in the application. This information will be used by account merge to help users make choices when combining account progress. See documentation for details.

AntiCheat

  • New: Added anti-cheat client support for Linux, including Wine/Proton
  • New: Added anti-cheat client support for Mac (Intel-based)
  • Bug Fix: Fixed bug causing anti-cheat gameplay data UnregisterClient event to not be sent.
  • Bug Fix: EOS_AntiCheatServer_RegisterEvent no longer accepts '.' as part of an event name. This previously caused rejection by the backend but without a clear error.
  • Bug Fix: Fixed internal bug causing anti-cheat gameplay data UnregisterClient event to not be sent.
  • Bug Fix: Fixed possible anti-cheat issues if the system clock is updated at just the wrong moment.
  • Bug Fix: Fixed anti-cheat client module testing workflow not working correctly and leading to a "connection failed" error.
  • Updated Anti-Cheat ProtectMessage and UnprotectMessage APIs so that the final parameter OutBytesWritten only needs to be a valid pointer to an integer. Previously the integer needed to be initially set to the length of the output buffer.
  • Renamed anti-cheat ProtectMessage and UnprotectMessage API positional parameters for better clarity and consistency.
  • Added DamagePosition to EOS_AntiCheatCommon_LogPlayerTakeDamageOptions and deprecated HitBoneId This provides more accurate information about hit locations.
  • Anti-Cheat client modules are now managed at the Deployment level rather than the Sandbox level. This is more consistent with other EOS services. You must be sure to update the EOS_AntiCheatTools files when updating your game to this version of the SDK.
  • The EOS Connect DeviceID auth method is not supported for anti-cheat. A new result code EOS_AntiCheat_DeviceIdAuthIsNotSupported is now returned for this case.

Authentication

  • New: Added new APIs EOS_Auth_CopyIdToken, EOS_Auth_QueryIdToken, and EOS_Auth_VerifyIdToken to allow game servers, online backends and other clients to securely verify identities of other Epic account users. Games using the existing EOS_Auth_CopyAuthToken and EOS_Auth_VerifyAuthToken APIs should consider switching to use ID tokens instead.
  • New: Added API support to detect a merged Epic account state for local users. This is relevant for an upcoming Epic Account Services functionality that will allow users to merge their separate Epic accounts into a single Epic account.

Connect

  • New: Added new APIs EOS_Connect_CopyIdToken and EOS_Connect_VerifyIdToken to allow game servers, online backends and other clients to securely verify another EOS user's identity.
  • New: Added EOS_Connect_CopyIdToken, EOS_Connect_IdToken_Release, and EOS_Connect_VerifyIdToken APIs for the management of Connect ID Tokens. For more information, see the Connect Interface documentation.

ECommerce

  • New: Exposed DecimalPoint for the provided price in EOS_Ecom_CatalogOffer structure. For example, DecimalPoint '2' and CurrentPrice64 '12345' would be '123.45'.

Overlay Tech Platform

  • Bug Fix: Notification callbacks added by EOS_UI_AddNotifyDisplaySettingsUpdated and then removed by EOS_UI_RemoveNotifyDisplaySettingsUpdated before ticking are never invoked. Previously they would have been invoked once and if the game had freed some dependent state, a crash was possible.

P2P

  • It is now possible to get notifications when a connection is established with EOS_P2P_AddNotifyPeerConnectionEstablished and EOS_P2P_RemoveNotifyPeerConnectionEstablished.
  • It is now possible to clear queued incoming and outgoing packets for/from a given remote user and specific socket with EOS_P2P_ClearPacketQueue.

Player Data Storage

  • Bug Fix: Fixed an issue where reading files from the local cache of Player Data Storage could be very slow.
  • Improved PlayerDataStorage logging for many error cases.

Presence

  • Bug Fix: Fixed an issue when Presence service would keep trying to auto-update status when connection is lost.

Samples

  • Bug Fix: Fixed building Leaderboard sample on Mac / Linux by adding missing AssetUtils.cpp to Makefile.

Sanctions

  • Added TimeExpires and ReferenceId fields to EOS_Sanctions_PlayerSanction. This information was already visible in the EOS Developer Portal but previously not available through the SDK API.

Voice

  • Exposed EOS_RTC_SetSetting and EOS_RTC_SetRoomSetting APIs
    • DisableEchoCancelation Disables the use of echo cancellation for the audio channel. Default False
    • DisableNoiseSupression Disables the use of noise suppression for the audio channel. Default False
    • DisableAutoGainControl Disables the use of auto gain control for the audio channel. Default False
    • DisableDtx Global\Per room Allows to disable the use of DTX. Default False

Mobile

iOS

  • Bug Fix: Fixed an issue where an exception could occur on iOS 14 due to invalid characters in the URL scheme.

UPGRADE NOTES

AntiCheat

  • When upgrading to SDK 1.14, you must update the files start_protected_game.exe, EasyAntiCheat_EOS_Setup.exe, and anticheat_integritytool.exe to the latest versions from the bundled EOS_AntiCheatTools zip file.
  • Changes in the start_protected_game.exe:
    • The following settings are no longer supported, these were previously defined in the associated Settings.json:
      • parameters: The bootstrapper now forwards all parameters to the game process that were provided to it upon process start, therefore the associated Settings file doesn't offer this functionality.
      • use_cmdline_parameters: Removed as redundant due to the parameters field being removed.
      • working_directory: Removed as we're now expecting that the bootstrapper is stored in the game's root directory, this applies to all supported platforms.
      • logo_position: Removed due to the bootstrapper's new design that limits the positioning.
      • hide_splash_screen: Removed due to changes in the bootstrapper's internal design.
      • hide_ui_controls: Removed due to changes in the bootstrapper's internal design.
  • If you want to activate Wine/Proton support for your Windows game, you must activate a Linux module in the EOS Developer Portal. See the EOS developer documentation for further details.

PROGRAMMING UPGRADE NOTES

AntiCheat

  • Usages of EOS_AntiCheatCommon_LogPlayerTakeDamageOptions should be updated to set the DamagePosition field instead of HitBoneId. This provides more accurate information about hit locations.

1.13.1 - 2021-july-27

RELEASE NOTES

C# SDK

  • Bug Fix: Fixed compatibility issues with C# versions <7.
  • Bug Fix: Fixed iOS Config targets.

Lobbies

  • Renamed the EOS_Lobby_LocalRTCOptions parameter bAudioOutputStartsMuted to bLocalAudioDeviceInputStartsMuted to better describe what is muted.
  • Bug Fix: Removed an erroneous warning during lobby update. The client can possibly be aware of more attributes than the backend while updates are in flight. This was generating false "out of sync" errors.
  • Bug Fix: Fixed a crash when the RTC initialization options were not specified on EOS Platform Creation, but Lobbies had the RTC Room feature enabled. In this case, lobby creation will now fail with an EOS_InvalidRequest result.
  • Bug Fix: Fixed an incorrect warning that would always occur when using the Lobbies RTC Room feature.

Player Data Storage

  • Added additional logging in some error cases for EOS_PlayerDataStorage_QueryFile, EOS_PlayerDataStorage_QueryFileList, and EOS_PlayerDataStorage_ReadFile.

PROGRAMMING UPGRADE NOTES

Lobbies

  • Usages of the EOS_Lobby_LocalRTCOptions parameter bAudioOutputStartsMuted must be renamed bLocalAudioDeviceInputStartsMuted.

Console Specific

Playstation®

  • New: Set PS5 SDK version to 3.00.00.27
  • New: Set the PS4 SDK version to 8.508.001

Nintendo Switch

  • Bug Fix: Fixed an issue where P2P could get stuck thinking the network was not available if the network was not available the first time P2P was used. P2P now always correctly resumes when the network becomes available again.
  • Bug Fix: Fixed an issue where asynchronous Lobby API calls could take a very long time to timeout when the network is unavailable.

Xbox Series X|S

  • Bug Fix: Fixed an RTC audio capture issue on Xbox Series X|S.

1.13 - 2021-jun-21

RELEASE NOTES

New Features:

  • Voice (Preview Service): The initial release of our EOS Voice tool as part of Epic Online Services allows your players to talk to their friends or teammates in your game without using a third party solution. See documentation for details.

Anti-Cheat

  • Changed Easy Anti-Cheat’s launcher to use a new version relying on SDL instead of Win32.

Authentication

  • Bug Fix: Fixed possible crash via the exchange code flow in EOS_Auth_Login when additional consent is required.
  • Bug Fix: Fixed possible crash when using Continuance Token handles in EOS_Auth_LinkAccount.

Core

  • Bug Fix: Removed constexpr specifiers from enumerator class bitwise operator functions that are never constexpr.
  • Improved validating of invalid UTF8 characters in the EOS_Platform_Options CacheDirectory parameter. If invalid characters are found, we now correctly fail to create the platform instance. Additional logging has been added when this occurs.

Lobbies

  • New: Added automatic Real Time Communication (RTC) Room support to Lobbies.
    • This feature handles automatically creating, joining, and maintaining connections to a dedicated RTC Room for the lobby when enabled. This feature requires enabling the createLobbyConference Voice permission in the EOS developer portal.
  • New: Lobby creation now allows for the specification of a "lobby id override".
    • The values need to be universally unique within the context of the application.
  • Bug Fix: Fixed log message for EOS_Lobby_RejectInvite when InviteId is null or empty.
  • Bug Fix: Searching for other users via EOS_LobbySearch_SetTargetUserId now respects the max search results value. Previously it was only returning one search result.

Lobbies Sample

  • New: Added voice option to lobby sample.

Player Data Storage

  • Improved error messages for bad file names and paths.

Title Storage

  • Improved error messages for bad file names and paths.

Mobile

iOS

  • iOS binaries are now compiled with bitcode support.