Skip to main content

Changelog

This document describes the changes made in each release.

2024.04.12

This release fixes high priority issues that were introduced in 2024.04.05:

  • The plugin will now show an editor hint if your game code uses IOnlineSubsystem::Get() or Online::Get...() APIs without a world context and then calls AutoLogin on them. You must use Online::GetSubsystem(this->GetWorld()) in order for your code to be compatible with play-in-editor.
  • Fixed an issue where project files could not be generated due to optional plugins not being present.
  • Fixed an issue where persistent authentication for Epic Games accounts did not work.
  • Fixed an issue where Steam authentication did not work, due to integration calls being omitted on startup.
  • Fixed an issue where the "Steam Web API key missing" error would be repeatedly logged.
  • Lowered EAC logs on dedicated servers from Verbose to VeryVerbose due to the frequency at which they're logged.

2024.04.05

This release adds support for EOS SDK 1.16.2, experimental support for Unreal Engine 5.4 Preview 1, and fixes several issues:

  • Added support for EOS SDK 1.16.2.
    • Free Edition users will need to download and install the newer EOS SDK from the Epic Games Developer Portal when upgrading to this release. If you need to use an older EOS SDK version, please use the Marketplace Edition instead.
  • Added experimental support for Unreal Engine 5.4 Preview 1.
  • Added experimental compatibility with Iris networking.
  • Fixed an issue where a project built for Meta Quest would incorrectly include Google Play related code on Unreal Engine 5.3. The build server has been updated to package a test project for both Quest and Google Play to ensure Android packaging code does not regress in future.
  • Fixed an issue where UBT would emit warnings due to unreachable code in the .Build.cs files.
  • Fixed an issue where building for iOS would fail if the EOS SDK library had the quarantine bit set on newer versions of macOS.
  • Fixed an issue where Steam e-commerce operations could stall indefinitely if concurrent requests were made, or if the local player did not have any item definitions to load.
  • Fixed an issue where Recent Players would not add newer players once the player count reached 100, due to an incorrect sort predicate.
  • Fixed an issue where the authenticatedWith authentication attribute was not correctly set if the user authenticated with Oculus.
  • Fixed an issue where synthetic invites would incorrectly return an error if the target friend was an Epic Games friend. The invite would still be correctly sent, but the invite call returned an error result even on success.
  • Fixed an issue where sessions could not be searched for in the Lyra example, due to old engine version guards that were not removed.
    • Engine version guards have been changed from defined(UE_X_Y_OR_LATER) to REDPOINT_EOS_UE_X_Y_OR_LATER. If you are relying on our internal engine version defines, it is recommended that you set your own engine version defines instead.
  • Fixed an issue where IOnlineIdentity::GetPlatformUserIdFromLocalUserNum and IOnlineIdentity::GetLocalUserNumFromPlatformUserId did not return the correct values.
  • Fixed an issue where authentication could stall indefinitely if multiple users had AutoLogin called concurrently in the same process. This affected play-in-editor scenarios where "login before PIE" is turned off, and split-screen games that sign in multiple local users at the same time.
  • Moved the authentication graph and cross-platform account provider classes to a separate RedpointEOSAuth module, in preparation for implementing OSSv2 APIs.
  • Updated the documentation on Epic Games friends to reflect that friends are not returned by the EOS SDK if they have not yet played the game, even for games that have been purchased on the Epic Games Store.
  • Removed the old "Authorize Epic Games Account" button from the toolbar. Using this flow has not been required since EOS SDK 1.15.5.

2024.03.13

This release fixes a few issues reported in the previous release:

  • Fixed an issue where some template classes in RedpointEOSRooms incorrectly had REDPOINTEOSROOMS_API. This caused linker errors during compilation for some developers.
  • Fixed a few IWYU (include-what-you-use) compilation errors that impacted Marketplace submission.

2024.03.11

This release introduces the first pass of the new room system, upgrading the IOnlineLobby interface to use the new implementation:

  • IOnlineLobby now uses the new room system implementation, which allows developers to retrieve lobby members from search results again in EOS SDK 1.16.0 and later.
  • The Matchmaking plugin is now able to be used with EOS Online Subsystem 2024.03.09 and EOS SDK 1.16.0 and later. If you are currently using EOS SDK 1.15.4 due to the regression in 1.16.0, you can now upgrade the EOS SDK as the plugin provides the "see members of lobby search results" feature required for Matchmaking to work.
  • Fixed an issue where packaging for Meta Quest on Unreal Engine 5.3 resulted in errors, due to Google Play code being incorrectly included in the compilation.
  • Fixed an issue where an unintended warnings-as-error would be enabled for modules that are not yet compatible, specifically when compiling for console platforms.
  • There are also some changes that are primarily internal to the plugin, but may impact you if you reference plugin headers:
    • The locations of some plugin headers inside Public and Shared have changed. If you are referencing plugin code directly, you may need to update your #include directives to the new paths.
    • Significantly increased the number of EOS SDK APIs covered in RedpointEOSAPI. This module is still considered experimental; you could use these more modern bindings in game code, but you should expect that there might be slight changes to the public API surface in future.
    • Implemented support for OSSv2 user IDs through the IOnlineAccountIdRegistry interface. OSSv2 user IDs are used internally in the room system.

2024.02.19

This release fixes several issues:

  • Fixed an issue where the Free Edition could not be used in C++ projects, due to the .Build.cs files being omitted from 2024.02.06 onwards.
  • Fixed an issue where enumeration-based settings in Project Settings would not load or save correctly.
  • Fixed an issue where the staging hook installation could revert engine changes made by Git or Perforce.
  • Reduced "Dropping auth status change notification on server" logs to VeryVerbose level.

2024.02.08

This release fixes a few urgent issues reported in 2024.02.06:

  • Fixed an issue where Anti-Cheat clients could not connect to game servers at all, and extended our functional test suite to ensure that clients are able to fully connect to game servers after the EAC negotiation has completed.
  • Fixed an issue where the "backend unreachable" editor hint would appear when it should not.
  • Potentially fixed an issue where players on Android would be prompted to sign into their Google account every time, instead of automatically signing them in with the account they previously used.
  • Removed all legacy 4.27-related code from the plugin.

2024.02.06

This release fixes issues and continues our internal refactoring work to better support sessions and lobbies moving forward:

  • Added the Cloud Messaging Hub to replace the existing P2P messaging layer for the cross-platform friends database.
    • The existing messaging implementation uses EOS P2P to communicate friend invites across platforms. This implementation will be phased out in the future, as it can cause excessive load on the EOS infrastructure when your game has a significant number of players and a significant number of pending invites for players that are currently offline.
    • The replacement messaging implementation requires deploying a "Cloud Messaging Hub" onto Google Cloud and configuring your project to connect to the endpoint. The implementation is extremely efficient and it is expected most small projects will incur no costs under the Google Cloud Run free tier.
    • Migrating to the Cloud Messaging Hub at this time is recommended for games that foresee having a large number of concurrent players (greater than 1000). In future, all projects will be required to migrate to the new implementation.
    • To deploy the Cloud Messaging Hub:
      1. Clone the CMH source code from GitLab.
      2. Ensure you have a Google Cloud account and have authorized your local computer with the Google Cloud SDK.
      3. In a terminal, run set EOS_CLIENT_IDS=..., replacing ... with a comma-separated list of client IDs that your game uses as per the EOS Developer Portal.
      4. Run dotnet run inside the cmh-deploy folder to deploy the Cloud Messaging Hub onto Google Cloud.
      5. In your DefaultEngine.ini, set the CloudMessagingHubUrl="wss://<domain>/messaging/v1" configuration option, replacing <domain> with the hostname that cmh-deploy displays after deployment.
    • More detailed documentation will be available on this topic in the future closer to the phase out of the P2P messaging implementation.
  • Added API version 2023-10-27, after which IsPlayerMuted only reports the local mute status of remote players, instead of their remote mute status. This ensures that this function only reports the value that has been set locally through SetPlayerMuted.
  • Fixed issues where clients on trusted console platforms could not connect to Easy Anti-Cheat protected servers.
    • We've added new automation tests to catch issues with EAC and trusted clients, and have added documentation on platform compatibility with verifying EAC protection status of game clients.
  • Fixed support for the experimental "Late Join" play-in-editor feature of the Unreal Editor.
  • Fixed a crash that could occur when DestroySession was called when the internal SessionInfo data of the session had already been released.
  • Attempt to fix an issue where clients and servers could destroy the wrong EAC session when a client connects from one server to another without passing through standalone mode.
  • Fixed an issue where inconsistent synthetic session and synthetic party names led to synthetic invites not working on some console platforms.
  • Fixed an issue where a system-wide installation of .NET 8 would result in build failures when patching UnrealBuildTool, due to newer versions of the .NET SDK having additional build checks. The plugin will now always attempt to use the .NET SDK that ships with the engine instead of the system-wide installation.
  • Fixed an issue where the Recent Players section of the cross-platform friends database could grow without limit. The Recent Friends list is now limited to 100 players, with the oldest players automatically removed from the list when the database is saved.
  • Fixed an issue where application and network lifecycle handlers were not registered correctly on console platforms.
  • Internal refactoring to support OSSv2 means that the EOS SDK instances are now managed by the RedpointEOSCore module. If you directly call the EOS SDK you can continue to access it via the online subsystem, or you can use the headers in RedpointEOSCore.
  • Updated the staging hook installation to check if SkipStagingHookInstallation=True is set in DefaultEngine.ini of the project. If you have this configuration value set, staging hooks will not be patched into UnrealBuildTool, which can be a workaround if they are preventing your project from building.
  • Fixed an issue where muting and unmuting voice chat could result in rate limiting on SDK 1.16.1.
  • Fixed an issue where rapidly muting and unmuting a player's voice input could cause an increase in voice chat latency.
  • Fixed an issue where ConvertError APIs had incorrect linkage.
  • Fixed an issue where the voice chat login callback delegate would be called multiple times.
  • Fixed build compatibility with EOS SDK 1.15.1.
  • Fixed an issue where Android would not package correctly due the browser dependency version.
  • Fixed an issue where querying the voice chat devices would cause frame hitching. The plugin now queries voice chat devices asynchronously when using EOS SDK 1.16.0 or later.
  • Fixed an issue where voice chat settings would be set to the inverse of what they were expected to be.
  • Fixed an issue where the voice chat settings would be synchronised more than once per frame.
  • Renamed the log categories in the plugin to ensure that they do not cause the editor to assert if the project incorrectly has the Epic Games plugin enabled at the same time.
  • The Free Edition now excludes all source folders, so that we can eventually move the contents of Shared back into the Public folder for OnlineSubsystemRedpointEOS and simplify header inclusion for Marketplace customers that want to use the OSS APIs directly.

2023.10.07

This release fixes compilation errors that were specific to the Marketplace:

  • Fixed an issue where the Marketplace binaries would not be able to locate include files in Unreal Engine 5.3. This did not impact developers using the plugin from Git.
  • Fixed an issue where configuration files were not correctly checked out when using Perforce as the source control provider.
  • Fixed a minor Unreal Engine 5.3 deprecation warning.
  • Updated internal APIs in the main plugin for improved console platform support.

2023.09.11

This release adds support for Unreal Engine 5.3 and EOS SDK 1.16.1:

  • Added support for Unreal Engine 5.3.
    • If you're using the Free Edition, you should start upgrading your project to Unreal Engine 5.3 now. 2023.08.21 is still a permitted version for existing Free Edition users who are using Unreal Engine 5.2, but you will need to upgrade to a newer plugin version in the future and this will require your project to be on Unreal Engine 5.3.
    • If you need to continue using Unreal Engine 5.2, you can switch to using the Marketplace Edition instead.
  • Added support for EOS SDK 1.16.1.
    • Free Edition users will need to download and install the newer EOS SDK from the Epic Games Developer Portal when upgrading to this release. If you need to use an older EOS SDK version, please use the Marketplace Edition instead.
  • Fixed an issue where the plugin would not compile if you were targeting the older EOS SDK 1.15.x series.
  • Fixed an issue where enabling lobby state diagnostics could result in a crash at runtime.

2023.08.21

This release fixes several issues, notably a change introduced in 2023.08.17 that would result in excessive logs when the editor or game is no longer focused:

  • This release includes the Free Edition as well; 2023.08.17 was not released for the Free Edition.
    • As of this release, Free Edition users must be using Unreal Engine 5.2.
    • Free Edition users will need to download and install the newer EOS SDK from the Epic Games Developer Portal when upgrading to this release. If you need to use an older EOS SDK version, please use the Marketplace Edition instead.
  • Fixed an issue where the application status was incorrectly set when using EOS SDK 1.16, resulting in erroneous logs to the console when the editor was not in focus.
  • Fixed an issue where Android would crash on startup with 1.16, due to a new runtime dependency on androidx.browser:browser in the 1.16 SDK.
  • Theoretical fix for an issue where the plugin attempts to fix configuration files, but the configuration files are tracked by Perforce source control and the editor has not yet connected to Perforce.
  • Minor change to wording of the prompt shown when starting the Developer Authentication Tool, based on changes made for 1.16.

2023.08.17

This release adds support for EOS SDK 1.16, adds support for Epic Games e-commerce and includes various bug fixes:

  • Added support for EOS SDK 1.16.
  • Added support for using Epic Games e-commerce APIs when the game is listed on the Epic Games Store and run via the Epic Games launcher. Refer to the e-commerce documentation on how to use e-commerce on Epic Games.
  • Added an editor hint when the EOS SDK is unable to reach the Epic Games backend, usually due to Internet connectivity issues or outages, so that developers understand the cause of API calls being slow in these scenarios.
  • Added a warning if the networking driver attempts to connect to an EOS P2P address, but P2P connectivity is not available.
  • Updated the "The current online subsystem is not the EOS online subsystem, so UEOSNetDriver can not work." warning so that it also now includes the name of the current subsystem for diagnostic purposes.
  • Reduced a check() to a warning to prevent a development-mode crash in some voice chat related edge cases.
  • Fixed an issue where avatars on Oculus did not return the default texture if the user had no avatar set.
  • Fixed an issue where the cross-platform friends database would repeatedly fetch the avatar URLs. This caused issues with some native platform APIs that throttle requesting avatar URLs.
  • Fixed an issue where the EAS presence implementation could crash on shutdown.
  • Fixed an issue where platform initialisation did not correctly use UTF-8 encoding, which caused issues when the cache directory for Player Data Storage contained non-ASCII characters on machines that contain Unicode in the path to the user's profile directory.
  • Fixed the error code not being present in one of the network authentication error logs.
  • Fixed an incorrect timer delay in the cross-platform friends database.
  • Fixed an issue where the mute status of a remote player was not correctly updated when the mute status changes.
  • Fixed an issue where authenticating with a Steam account that has an Epic Games account linked would immediately start the Epic Games login prompt, even if cross-platform accounts are set to optional and the user has not chosen to sign in with Epic Games yet. This fix is only available if you're using EOS SDK 1.16 or later.

2023.05.18

This release adds support for the stable version of Unreal Engine 5.2:

  • The Free Edition now targets Unreal Engine 5.2.
    • Existing users can continue to use 2023.05.09 for now, but should start planning their upgrade to 5.2 as soon as possible.
  • When changing settings in Project Settings, the plugin will now check out the relevant configuration files from source control automatically to ensure that they are writable.
  • Fixed an issue specific to Unreal Engine 5.2, where making changes in Project Settings could result in the editor crashing.
  • Fixed an issue specific to Unreal Engine 5.2, where the beacon automation tests would not pass.

2023.05.09

This release significantly overhauls Android support, adds experimental support for Unreal Engine 5.2 Preview 2 and fixes several issues:

  • The plugin now directly supports Google Play authentication and e-commerce, rather than relying on the unmaintained OnlineSubsystemGoogle and OnlineSubsystemGooglePlay plugins.
  • Added experimental support for Unreal Engine 5.2 Preview 2.
  • Fixed an issue where FMultiOperation could access memory after it was released.
  • Fixed a few console-specific issues.
  • Fixed a crash that could be caused by recursive FlushNet calls when P2P connections are closed.
  • Fixed an issue where PromoteMember on the party interface did not return the correct value when the callback was scheduled.
  • Worked around an issue where setting the application status to anything other than foreground on desktop platforms is not supported in EOS SDK 1.15.x.

2023.03.07

This release adds support for EOS SDK 1.15.5 and fixes several issues:

  • Added support for EOS SDK 1.15.5.
    • Free Edition users will need to download and install the newer EOS SDK from the Epic Games Developer Portal when upgrading to this release. If you need to use an older EOS SDK version, please use the Marketplace Edition instead.
  • Fixed several IWYU (include-what-you-use) compilation errors that were not picked up by the previous Marketplace submission. We now run an IWYU build overnight to avoid this in future.
  • Fixed a crash when fetching Steam items from e-commerce that lack an item definition.
  • Fixed an issue where UEOSNetConnection could remain open even when the underlying socket had been closed by the remote host.
  • Fixed an issue where network authentication could crash the server if the client disconnected before network authentication was complete.
  • Fixed an issue where the default intended input volume was not calculated correctly if auto-gain control is turned on.
  • Fixed an issue where JoinChannel would not error correctly if the user was already joined to the channel.
  • Fixed an issue where Android on Unreal Engine 5.1 would not correctly require the use of EOS SDK 1.15.4 or later.
  • Added LogRedpointEOSSocketLifecycle logs which include information about how EOS P2P sockets change state over time.
  • The plugin now detects if an older version of the EOS SDK was loaded than the one that it was built with, and warns you in the editor if this is the case. This is usually caused by stale DLLs in your Binaries folder.
  • The plugin no longer uses the "write stat bug" workaround when built against EOS SDK 1.15.3 or higher. This workaround forwarded stat writing requests to clients from dedicated servers, as in earlier versions of the SDK it was not possible to write stats from dedicated servers properly. This also now obsoletes the AcceptStatWriteRequestsFromServers configuration setting, which will be removed from the plugin when all EOS SDK versions prior to 1.15.4 are dropped from support.
  • Silenced a debug log in the LogRedpointSteam category that accidentally got left in, where the log message reported that the Steam avatar was successfully obtained from the existing cache.
  • Removed support for EOS SDK versions 1.15, 1.15.1 and 1.15.3. The current supported SDK versions are now 1.15.5, 1.15.4 and 1.14.2-hf-2.

2023.02.14

This release improves lobbies and voice chat, and fixes a lot of outstanding issues:

  • Free Edition users must now be on Unreal Engine 5.1. If you are still using 2022.12.01 on 5.0, you will be prompted to upgrade and must upgrade your project to Unreal Engine 5.1. If you have not already upgraded your project and need to remain on Unreal Engine 5.0, you will need to purchase the Marketplace Edition which currently supports 4.27 through 5.1 with the latest plugin version.
  • Added support for controlling echo cancellation, noise suppression, auto gain control and DTX in voice chat via IVoiceChatUser::SetSetting.
  • Added support for setting the bucket ID of lobbies through the special bucket lobby attribute.
    • You can now also search for lobbies by bucket ID using the bucket attribute.
    • GetLobbyMetadataValue for the bucket attribute will now return the bucket ID of the lobby.
  • Added the steam.sessionTicket.base64 and steam.encryptedAppTicket.base64 authentication attributes, which can be used to retrieve these values base64 encoded (instead of hex encoded).
  • The lobby or party ID associated with a voice chat channel is now accessible through IVoiceChatUser::GetSetting.
    • To retrieve the lobby ID for an associated voice chat channel, access the setting __EOS_LobbyId:<channel name>, replacing <channel name> with the channel name.
    • To retrieve the party ID for an associated voice chat channel, access the setting __EOS_PartyId:<channel name>, replacing <channel name> with the channel name.
    • If there's no lobby ID or party ID associated with a voice chat channel (e.g. it's a voice chat channel you have joined from a dedicated server), the attribute value will be an empty string.
    • Note that because parties use lobbies underneath, party IDs are lobby IDs. This means that __EOS_LobbyId:<channel name> and __EOS_PartyId:<channel name> are effectively the same and will return the same value.
  • Updated the project auto-configuration to turn off bitcode for iOS, as per the EOS SDK requirements.
  • Updated the example projects:
    • Lobbies in the blueprint project now set and use bucket IDs via the bucket attribute.
    • The voice chat UI in the blueprint project now shows the associated lobby/party ID for a given voice chat channel.
    • The voice chat UI in the blueprint project now allows you to control voice chat features.
    • Fixed an issue where avatars would not be fetched correctly in the example projects.
  • Documented how to enable cross-platform invites and presence for sessions and parties.
  • Fixed an issue where the plugin would prevent you from using interactive Epic Games authentication in the editor, when using EOS SDK 1.15.4.
    • Between 1.15.0 and 1.15.3, the EOS bootstrapper was required to perform interactive Epic Games authentication. Since the bootstrapper was never present for the editor, we added a check that would preempt the EOS SDK call so we could provide a more useful error message to developers.
    • Since the EOS bootstrapper is no longer required in 1.15.4 and later, this check has been removed when compiling with EOS SDK 1.15.4 and later.
  • Fixed an issue that would occur if you had multiple accounts set up in the Developer Authentication Tool that needed to go through scope approval, and you launched play-in-editor with "login before PIE" enabled, the EOS SDK would launch multiple browser tabs to do scope approval for all the different accounts. Because the browser-based Epic Games scope approval page does not handle multiple accounts, the scope approval process would get confused and only allow you to approve one account with the remainder failing.
    • Developer Authentication Tool accounts are now authenticated sequentially the first time they are used in an Unreal Editor session, which ensures that the EOS SDK will only be trying to perform scope approval in the browser one account at a time.
  • Fixed an issue where avatars of arbitrary Steam users were not loaded. The plugin now correctly calls RequestUserInformation before trying to fetch avatars, ensuring that Steam will download the required user information necessary for fetching avatars.
  • Fixed an issue where IVoiceChatUser::SetPlayerMuted would always mute the remote player (ignoring the bMuted parameter). This previously meant that you could not unmute remote players.
  • Fixed an issue where voice chat channels were not tracked correctly if you were kicked from lobbies or parties, or if the host left a voice chat enabled lobby.
  • Fixed an issue where muting the input in voice chat would not work if auto gain control was enabled (which it is by default).
  • Fixed an issue where the configuration system could save stale EOS settings under Saved/Config/, which would result in the editor using out-of-date settings that were not reflected in Project Settings.
  • Fixed an issue where the configuration system would emit deprecation warnings in Unreal Engine 5.1 due to not calling FConfigCacheIni::NormalizeConfigIniPath. The plugin now calls this function in all the necessary places.
  • Fixed an issue where the Anti-Cheat and bootstrapper packaging script would not detect EOS SDK 1.15.4.
  • Fixed an issue where the Anti-Cheat signing process would fail due to a missing runtime.conf file. This file is now automatically created when needed.
  • Fixed an issue where the Developer Authentication Tool would not be extracted if the path to ExtractDevAuthTool.ps1 had spaces.
  • Fixed an issue where the InstallStagingHooksInEngine.ps1 would not correctly detect Unreal Engine 5 if you were building the engine from source.
  • Fixed an issue where deprecated API usage in the automation tests could cause compilation failures if you have errors-as-warnings turned on in your Unreal Engine project.
  • Fixed an issue in the example projects where avatars for the friends list were not loaded.
  • Added logs that report changes to the session listening state (which is used for the __EOS_bListening attribute in session searches). These logs are associated with the new LogRedpointEOSSessionListening log category.
  • Added missing #include declarations that were picked up as part of an include-what-you-use build.
  • Updated the scope approval hint that would appear when scope approval is necessary for an Epic Games account. This hint has been updated to reflect the new behaviour of scope approval in EOS SDK 1.15.4.
  • Updated the MetaClass and MustImplement attributes on the widget class UPROPERTYs in Project Settings so that they use full paths. This avoids any ambiguity when the project itself contains assets with the same name as the default assets provided in the plugin.
  • For clarity the bDisableAutoAcceptConnection field on EOS_P2P_SendPacketOptions is now explicitly set to false when sending packets. This was already the default value for EOS_P2P_SendPacket, but now it's clear in the source code what the behaviour will be.
  • The log level of logs emitted from IOnlineParty::GetJoinedParties has been lowered to VeryVerbose, to prevent log spam when you're calling this function frequently and the user has not joined any parties.
  • The UE_X_Y_OR_LATER=1 public defines that were set by the OnlineSubsystemRedpointEOS module are now private to prevent conflicts with other modules. If you were using these in game code, you can copy the PrivateDefinitions.Add(...) code from the OnlineSubsystemRedpointEOS.Build.cs file into your game module's .Build.cs file.
  • The build system will now provide a more useful error if you try to compile for the x64 architecture on Android. The EOS SDK itself does not support the x64 architecture for Android; only the ARM architecture is supported.
  • Removed an erroneous #pragma once in AuthBeaconPhaseContext.cpp. This did not impact most developers, as it would only have caused a compilation error if you turned on include-what-you-use builds.
  • Removed the Free Edition SDK constraint code in RedpointEOSSDK.Build.cs that would cause build warnings due to unreachable code. These constraints had no effect as they only applied to old EOS SDK versions that we no longer support.
  • Removed compile-time code paths that were specific to EOS SDK versions that we no longer support.
  • Removed code paths that were specific to authenticating with Steam encrypted app tickets. This method of authentication is no longer supported by the EOS backend.

2022.12.01

This release adds support for EOS SDK 1.15.4, adds support for unlocking achievements directly and fixes several issues:

  • Added support for EOS SDK 1.15.4, and it is now the default SDK version.
    • This SDK release fixes P2P networking issues that were present in 1.15.2 and 1.15.3, so it is highly recommended that you upgrade to this SDK release if you're using an older version.
  • Added support for the new Country scope.
    • Note: When upgrading to this release, you will need to enable the new Country scope on any applications you've configured in the Epic Games Developer Portal under the "Epic Account Services" section. If you don't do this, players will not be able to authenticate with Epic Games accounts.
    • Note: If you have a live game, you will most likely need to create a new Epic Games application under the "Epic Account Services" section of your product in the portal. That's because the EOS SDK will not be able to authenticate unless the scopes exactly match, meaning that existing game clients using the older scope configuration will not be able to authenticate if you enable the Country scope. Creating a new application in the portal will give you a new client ID and secret, which you should update your project to use.
  • Added support for unlocking achievements directly with IOnlineAchievements::WriteAchievements. To use this API with the new behaviour, you should add achievements to the FOnlineAchievementsWrite object with a non-zero value like AchievementsWrite->Properties.Add(TEXT("TestAchievementId"), 1.0f) and then call the WriteAchievements function.
    • To opt into this new behaviour, you must update the API version in your Project Settings to be 2022-10-28 or later.
  • Added support for setting the EOS_IGNORE_ORCHESTRATOR=true environment variable, which will turn off Agones integration even if the dedicated server is running under Agones. You can use this environment variable if you want to integrate with Agones manually.
  • Added additional checks to detect misconfigurations of the EOS networking driver.
  • Removed the legacy User Credentials mode of network authentication. All games upgrading to this release will use ID Token instead.
    • Note: If you were previously using User Credentials so you could write to Player Data Storage on dedicated servers, this is a breaking change and you will need to update your code before upgrading to this release.
  • Fixed an issue where synthetic presence and invites on Discord would not work unless the user authenticated to EOS using their Discord account. Now synthetic invites will work for Discord as long as it's set as a delegated subsystem and the user has Discord running, even if the game is launched via another means (such as Steam).
  • Fixed an issue where NAME_None was treated as a port name for GetResolvedConnectString. NAME_None and NAME_Default are now both treated as NAME_GamePort to prevent unexpected behaviour.
  • Fixed an issue where DefaultOnlineSubsystemRedpointEOS.ini would not be loaded under Unreal Engine 5, and added an automation test to ensure that it loads correctly.
  • Fixed a potential issue with EOS_HLobbyDetails handles not being released as expected when using the lobby interface.
  • Silenced a harmless error regarding "Unable to get local player 0" that would appear in the logs for dedicated servers.

2022.11.22

This release adds support for Unreal Engine 5.1 and fixes several issues.

  • Added support for Unreal Engine 5.1.
    • If you're using the Free Edition, you should start upgrading your project to Unreal Engine 5.1 now. 2022.10.12 is still a permitted version for existing Free Edition users who are using Unreal Engine 5.0, but you will need to upgrade to a newer plugin version in the future and this will require your project to be on Unreal Engine 5.1.
    • If you're targeting Android, you'll need to use EOS SDK 1.15.3 in order to compile with Unreal Engine 5.1. EOS SDK 1.15.3 has known networking regressions for P2P, so we recommend sticking with Unreal Engine 5.0 if you're shipping multiplayer player-hosted games on Android.
  • Added support for EAC tooling 1.3.0 if you're using EOS SDK 1.15.3.
  • Added support for the EOS_Lobby_LobbyInviteRejected event when using EOS SDK 1.15.0 and later. This will raise the OnPartyInviteRemoved event.
  • Added new logging for diagnosing various issues. You can see these logs by increasing the logging verbosity:
    • Logging for the local user state as it goes through login and logout phases.
    • Logging to show how stats are being encoded for storage into the EOS Stats service.
  • Added additional checks to catch networking misconfigurations when using the legacy User Credentials mode.
  • Voice chat related checks are now warnings emitted to the Output Log instead.
  • Fixed an issue where EOS_NoChange in party operations would be treated as a failure. This result code now emits a warning instead, as you will not receive the PartyDataUpdated or PartyMemberDataUpdated events if no changes are actually made to the party or party member.
  • Fixed an issue where stat typing rules were not correctly loaded.
  • Fixed an issue where splash screens for Anti-Cheat would not be correctly set. You can set a splash screen for Anti-Cheat by adding an 800x450 PNG image to Build/NoRedist/AntiCheatSplashScreen.png in your project.
  • Fixed an issue where the default authentication graph could try to select a platform authentication graph, even where support for that platform was not compiled into the game binary.
  • Fixed compilation issues for dedicated servers.
  • Fixed a compilation error that occurred if you were using EOS SDK 1.15.2 or later.
  • Fixed a few include-what-you-use (IWYU) errors.
  • Fixed a compilation error if you had Steam support compiled out.
  • Fixed the WriteAchievements API so that it correctly sets the WriteState field of the provided WriteObject.
  • Fixed an issue where GetNativeSubsystemName was not provided for Apple, Google Play and GOG platforms.
  • Removed defines relevant to 4.25 support. The plugin will no longer compile under Unreal Engine 4.25.
  • A bug which prevented non-seamless server travel from working in Unreal Engine 5.0 has been fixed in Unreal Engine 5.1 by Epic Games. If you're impacted by this bug, you should upgrade the engine version to mitigate it.

The following depreciations are planned:

  • We plan to entirely remove the old "User Credentials" network authentication method in the next release. This legacy mode of network authentication has known issues that are fixed by moving to "ID Token" network authentication. All customers should switch to using "ID Token" network authentication if they haven't already.

2022.10.12

This release fixes various bugs, adds provisional support for EOS SDK 1.15.3 and adds support for Steam e-commerce (see important notes below):

  • Added provisional support for EOS SDK 1.15.3.
    • We believe we have found networking regressions in the 1.15.3 SDK that impact reconnecting to a listen server immediately after disconnecting; i.e. quick reconnections do not work correctly.
    • This issue is still being investigated to determine whether it is a regression in the EOS SDK itself.
    • For the time being, EOS SDK 1.15.1 is still the preferred and default SDK version. You should not use EOS SDK 1.15.3 unless otherwise advised and you should definitely not use it if your game uses P2P networking (listen servers) in any capacity.
    • We are not supporting 1.15.2.1; we believe it is also impacted by the same networking regressions, and the 1.15.2 series is no longer available for download in the Developer Portal anyway.
  • Removed support for all EOS SDK versions other than those in the following list, in line with our previous deprecation announcement. Older SDKs do not support the newer Steam authentication required by the EOS backend as of September 2022, so we have removed them from the support list to prevent developers accidentally trying to use them.
    • 1.15.3 (provisional, see above)
    • 1.15.1
    • 1.15 (mobile only, where there is no 1.15.1 release for mobile devices)
    • 1.14.2-hf-2
  • Added support for Steam e-commerce via the IOnlineStoreV2, IOnlineEntitlement and IOnlinePurchase APIs. This will also work for a few console platforms. We do not yet support Epic Games Store e-commerce, but intend to support it in a future release. We've also updated the blueprint example project for e-commerce; the C++ example project does not include e-commerce examples yet, but we have documented how to use e-commerce in C++.
  • Added support for the new lifecycle APIs (application status and network status) on desktop and some console platforms.
  • Added an automatic hint for the EOS_Auth_WrongClient error, which occurs when the client secret isn't the right one for the client ID you've specified.
  • The plugin now logs the specific EOS error code and the session name when a RegisterPlayers or UnregisterPlayers call fails.
  • Fixed an issue where the stateless connection packet handler in Unreal Engine could prevent a client from connecting to a server over a P2P connection. We've removed calls to the packet handler infrastructure when using P2P connections, as none of the built-in packet handlers are necessary for P2P connections.
    • The built-in packet handlers inside Unreal Engine are either used to encrypt game traffic or mitigate DDoS attacks, neither of which are a concern for P2P connections as the EOS SDK handles both of these issues for us.
    • If you have custom packet handlers and are impacted by this change, please let us know in the Discord so we can understand your use case.
  • Fixed an issue where Agones game servers would not have the session ID label applied correctly.
  • Fixed an issue where GetResolvedConnectString did not use the Agones port attributes that are automatically added to sessions.
  • Fixed an issue where the Steam warning emitted when using a source engine build could not be prevented from displaying.
  • Fixed an issue where an internal class FUniqueNetIdNull would conflict with a class of the same name in the engine itself. It has been renamed to FUniqueNetIdRedpointNull.
  • Fixed an issue where the plugin could downgrade the "Minimum SDK Version" for the Android platform. It now ensures that the minimum SDK version is at least 23, but will not lower it if you've set it to something higher than 23.
  • Fixed an issue where the DefaultOnlineSubsystemRedpointEOS.ini file inside the project's Config folder would not be read under Unreal Engine 5. With this fix, network driver settings in that file are now loaded as intended.
  • Fixed an issue where a checkf() assertion would fail if you had network authentication turned off in Project Settings.

2022.08.15

This release adds a gameplay debugger for network traffic and fixes a few issues with the Free Edition:

  • Added a new gameplay debugger which shows the state of all P2P networking connections.
  • Fixed an issue in the Free Edition where clang-tidy related files were incorrectly shipped in the package, preventing the Free Edition from working on Windows.
  • Fixed an issue with the license validation for the Free Edition, which prevented relatively new license keys from working with the Free Edition. License keys obtained from the License Manager in the past were not affected. We've also added an automation test to our build system to prevent this issue occurring again in the future.
  • Fixed an issue where party member data would not tolerate UTF8 string values correctly.
  • Anonymous authentication is no longer supported on macOS. Limitations in the EOS SDK mean that it does not work with code signed applications on macOS, and we do not have an ETA on when these limitations will be addressed in the EOS SDK.

2022.08.10

This release improves Agones integration and adds more automatic hints:

  • Dedicated servers running under Agones now set their session ID as the agones.dev/sdk-sessionid-(lowercase session name) label in Kubernetes, allowing you to use kubectl to find the dedicated server that is being run for a particular session ID.
  • Added support for the EOS_IGNORE_ORCHESTRATOR_PORT environment variable, which prevents Agones orchestrator integration from overriding the port when sessions are listed in the EOS session list.
  • Added an automatic hint when your client policy is missing permissions to perform one or more actions in the SDK.
  • Added an automatic hint when you have networking configuration that needs to be migrated to the DefaultOnlineSubsystemRedpointEOS.ini file.
  • Added an automatic hint when you've selected Play as client (or starting a separate dedicated server), but you haven't configured a client ID and secret for dedicated servers in Project Settings.
  • Fixed an issue where calling EndSession or DestroySession under Agones did not call the required shutdown endpoint, which is necessary for Agones to terminate and replace the game server process.

2022.07.29

This release introduces automatic hints and suggestions, and fixes several issues:

  • The plugin will now advise you in the editor when you need to fix issues or update Project Settings in order for things to work correctly.
    • Refer to this post to see an example of what they look like.
  • If the editor loads an incompatible or old version of the EOS SDK, the plugin will now tell you the path to the file so you can remove it.
    • This most commonly happened in projects that also had the Epic plugin enabled by accident. It could also occur if you upgraded the EOS SDK and didn't clear out the Binaries, Intermediate or Saved folders correctly. The plugin now directly tells you the path of the old EOS SDK for you to delete when the editor starts.
  • If the editor detects that the Epic EOS plugin is enabled in the project, it now explicitly tells you to turn off those plugins at startup.
  • Fixed a bug in the cross-platform friends database that prevented it from deserializing correctly due to endianness.
    • As part of this change, cross-platform friends databases must now have the hash prefix introduced in 2022.06.22. If a database is missing the hash or it doesn't exist, the database will be discarded and reset to an empty database.
  • Fixed an issue where the Developer Authentication Tool would not be found if the SDK was installed underneath the Plugins folder.
  • Fixed an issue where the Developer Authentication Tool could not extracted from the SDK if the computer did not have the PowerShell execution policy already set to Bypass.
  • Fixed an issue where authorizing an Epic Games account from the editor would not work if the project had spaces in the path to the .uproject file.
  • Fixed an issue where login contexts for "Login with PIE" were offset by 1 when using "Play as client" mode. This is because the dedicated server was assigned Context_1 (even though it had no need for it). The plugin now correctly assigns Context_1 to the first client play-in-editor window.
  • Fixed an issue where "Standalone Game" launches from the editor would not use Context_1, Context_2, etc. from the Developer Authentication Tool in Unreal Engine 5.0 and later.
  • Fixed sending session invites to friends on certain delegated subsystems. This issue only affected some console platforms with multiple local players.
  • Fixed a few minor IWYU compilation issues.

2022.07.18

This release fixes a few critical issues:

  • Fixed the issue that prevented some developers from using the Developer Authentication Tool. You can now authorize accounts for use with the Developer Authentication Tool by clicking "Authorize Epic Games Account" under the "Epic Online Services" toolbar item. Refer to the authentication documentation for more information on how to do this.
  • Fixed an issue that prevented packaging games on Unreal Engine 4.27 and earlier if you had the EOS SDK installed directly on the C:\ drive.
  • Fixed a crash that would occur if you manually unloaded the EOS online subsystem module (instead of allowing the engine to do it at the appropriate time).
  • Replaced the web browser widget with a text version of the EULA for Free Edition users. This removes the web browser widget dependency for both Free Edition and Marketplace Edition users.
  • Clarified some error messages that are specific to the Free Edition when license keys are not correctly set.

2022.07.13

This release fixes a few critical issues:

  • Fixed a crash in network authentication that impacted all Clang-based platforms. This was caused by a bad tail call optimization by the Clang compiler in the network authentication code.
  • Fixed an issue where the packaging script would try to wrap EpicOnlineServicesInstaller.exe with the EOS bootstrapper.
  • Fixed an issue where EOS_HOTFIX_VERSION was not defined correctly when using EOS SDK 1.14.2-hf-2.
  • Fixed an issue where Steam session tickets were not used when using EOS SDK 1.14.2-hf-2.
  • Fixed a crash that could happen when the network connection is interrupted and User Cloud or Title File operations are in-progress. This was mostly visible when the network was interrupted while the cross-platform friends system was trying to save its database.

2022.07.04

This release adds support for EOS SDK 1.15.1 and EOS SDK 1.14.2-hf-2. These SDK releases were made available by Epic to fix a security issue with Steam encrypted app tickets:

  • Added support for EOS SDK 1.15.1 and 1.14.2-hf-2.
    • Free Edition users must upgrade to EOS SDK 1.15.1 for desktop builds. There is no 1.15.1 release for mobile platforms, so please also download the 1.15 SDK for iOS and Android if you plan on targeting these platforms.
    • Free Edition users must now be on Unreal Engine 5.0. If you are still using 2022.03.29 on 4.27, you will be prompted to upgrade and must upgrade your project to Unreal Engine 5. If you have not already upgraded your project and need to remain on Unreal Engine 4.27, you will need to purchase the Marketplace Edition which currently supports 4.26 through 5.0 with the latest plugin version.
  • Steam authentication now uses session tickets when on the latest SDK version to comply with the new authentication requirements. The session ticket used for authentication is available in the steam.sessionTicket user authentication attribute if you need it. steam.encryptedAppTicket continues to be available if you need to use it with your own custom APIs.
  • Improved the detail of the logged errors when submitting incorrect or empty stats to IOnlineStats::UpdateStats. The error messages are now clearer as to why the operation failed.
  • Multiple concurrent queries to global leaderboards will now automatically queued up and executed in sequence. Previously the plugin prevented you from querying multiple global leaderboards at once as this is not supported by the SDK, but it will now queue operations internally for you.
  • Fixed an issue where a missing or incorrect installation of MSBuild would prevent projects from building at all. This now emits a warning instead.
    • If you're encountering this issue, you'll still need to repair your MSBuild or Visual Studio installation eventually, as a working version of MSBuild is required to package Windows games correctly due to the new mandatory EOS bootstrapper on that platform.
  • Fixed an issue where Anti-Cheat protected dedicated servers would reject connections from reconnecting players.

2022.06.26

This release fixes a few critical issues:

  • Fixed a compilation error that only occurred on 4.26 macOS builds, which prevented Epic Games from publishing 2022.06.22 to the Marketplace.
  • Fixed an issue where the iOS SDK was missing from the 2022.06.22 submitted to the Marketplace.
  • Fixed an issue where the fastJSON.dll dependency was missing when the plugin attempted to patch UnrealBuildTool in Unreal Engine 5. This is a dependency of the engine required for rebuilding UnrealBuildTool with Anti-Cheat support, but it isn't provided when you install the engine from the Unreal Engine Launcher. The plugin now has it's own copy of this file which it copies into the correct place so that it can patch UnrealBuildTool.
  • Fixed an issue where an Anti-Cheat violation from one player would result in the server kicking all players in the game.
  • Added a workaround for the broken macOS Developer Authentication Tool in 1.15. Epic Games has not packaged the macOS Developer Authentication Tool correctly since EOS SDK 1.11. The plugin now automatically applies workarounds so you can run the Developer Authentication Tool on macOS.
  • Reduced the severity of some warning messages from EOS SDK 1.15 that are not actionable by the developer.

2022.06.22

This release adds support for EOS SDK 1.15, overhauls network authentication, and fixes several issues:

  • Added support for EOS SDK 1.15.
    • The plugin will now automatically apply the required EOS bootstrapper to packaged Windows games if you're using EOS SDK 1.15 and have Epic Games set as the cross-platform account provider. You don't need to run the EOS bootstrapper tool manually. We've also tested this to ensure it works with Anti-Cheat enabled.
    • If you're a Free Edition user, you'll need to install the 1.15 SDK when you upgrade the plugin.
  • Overhauled network authentication to provide a simplier, more reliable experience.
    • You can upgrade to the new network authentication by setting network authentication to "ID Token" in Project Settings, or by leaving it set to "Default" and changing your API version to at least 2022-05-20. The rest of these network authentication notes only apply if you've upgraded into the new network authentication.
    • Connections to listen servers are now verified by checking the EOS P2P sending address on the inbound connection, instead of querying the provided user ID for existence. This provides stronger guarantees than the previous "Identity checks on listen servers" setting, and is more reliable as it does not rely on a call to the EOS backend.
    • Connections to dedicated servers are now verified by sending the EOS Connect ID Token to the dedicated server. This allows network authentication to work on any platform, and is more secure than the previous mechanism. This change fixes issues where users on platforms like Oculus could not authenticate with dedicated servers.
    • Sanction checks will allow connections with a warning if the listen server or dedicated server does not have the correct client policy to perform the check.
    • Project settings for "Enable identity checks on listen servers", "Enable sanction checks" and "Enable trusted dedicated servers" have been removed. These features are always turned on when using the new network authentication. If you need to turn off any of these features, change the "Network Authentication Mode" to "Off" instead.
    • Writing to Player Data Storage from dedicated servers is no longer supported in the new network authentication. If you require this feature, you'll have to remain on legacy network authentication.
  • The EOS Connect ID Token is now available in the idToken authentication attribute via FUserOnlineAccount::GetAuthAttribute.
  • The Epic Games ID Token is now available in the epic.idToken authentication attribute via FUserOnlineAccount::GetAuthAttribute, if the user is signed into an Epic Games account.
  • Added support for querying avatars of arbitrary users (including players on the multiplayer server you are connected to). Previously you could only query avatars of friends or users where you had the underlying local platform ID (e.g. Steam ID) already.
  • Fixed an issue where Anti-Cheat would not permit a client to connect if the server currently thinks they're connected. This previously prevented users from reconnecting to a server if they were unexpectedly disconnected, until the server timed them out.
  • Fixed an issue where FEOSAuthTokenHolder could cause a crash during shutdown.
  • Fixed an issue where the editor could crash when exiting if play-in-editor was active and there were sessions to clean up.
  • Fixed a crash that would occur if you called JoinSession with an invalid session result. You can obtain an invalid session result if you call FindSessionById and the target session is not found.
  • Fixed JoinSession not calling the global OnJoinSessionComplete event handler in a few scenarios.
  • Fixed a crash when signing into an Epic Games account on Android with the game in portrait layout.
  • Fixed an issue on a console platform, where the platform required the session name of the synthetic party/session to meet certain requirements for invites to work.
  • Fixed an issue where listen servers running a non-desktop device would not permit Anti-Cheat protected desktop clients from connecting.
  • Fixed an unlikely issue where the 64-bit XAudio DLL could be incorrectly detected if you moved files around inside the SDK.
  • Fixed FUserOnlineAccount::GetAccessToken() not refreshing after login.
  • Fixed an issue where the [/Script/OnlineSubsystemUtils.OnlineEngineInterfaceImpl] MappedUniqueNetIdTypes= configuration was not parsed correctly on specific console platforms.
  • Fixed an issue where a corrupt cross-platform friends database would cause a crash. The cross-platform friends database is now hashed and has the hash set as a prefix; this should ensure that partial or corrupted writes do not cause the game to crash when it is next started.
  • Fixed an issue where cooking a game would emit an OnlineFactories does not contain [RedpointEOS] warning, and cause the cooker to crash if it had to process an FUniqueNetIdRepl property. The plugin now provides a stub implementation during cooking, which prevents the warnings and potential crash.
  • Fixed an issue where the default authentication graph would attempt to use Oculus to authenticate, even though the game isn't configured for Oculus. Oculus authentication will no longer be selected by the default authentication graph unless the RiftAppId, MobileAppId or OculusAppId configuration values are set.
  • Fixed a race condition when making concurrent calls to ReadLeaderboardsAroundRank. The EOS SDK does not support querying multiple global leaderboards at the same time, so the plugin now prevents you calling ReadLeaderboardsAroundRank if there's already an operation in progress. Previously you'd get indeterminate results based on which call finished last.
  • Fixed a UE5-specific cooker warning related to FStatTypingRule::Type property not being initialized properly.
  • Fixed an issue where the Anti-Cheat session would not be re-created on the client if the server issued a servertravel to a different IP address.
  • Fixed an issue where the installation of Anti-Cheat signing hooks could fail if the engine binaries ended up in an inconsistent state.
  • Fixed an issue where Discord support could be enabled on non-Windows platforms. Discord integration is currently only supported on Windows.
  • Updated the Discord integration to use delay loading for the discord_game_sdk.dll library. This permits the game to run without Discord support if the Discord Game SDK can't be found at runtime, rather than having the game quit due to a missing library.
  • Fixed an issue where party events (like OnPartyDataReceived) could fire before the OnPartyJoined event fired.

2022.05.20

This release adds support for the Agones server orchestrator and fixes several issues.

  • Fixed an issue that prevented Free Edition users from accepting the license agreement in Unreal Engine 5.
  • Dedicated servers will now automatically send health checks and ready status to Agones when they're running in a Kubernetes cluster with Agones installed. You no longer need to manually integrate Agones.
  • Added support for an EOS_OVERRIDE_HOST_IP environment variable. This will override the IP address of the session in the EOS session list. This only overrides the IP address component; the port detection from orchestrators like Agones will still apply.
  • Fixed a crash caused by the cross-platform friends messaging hub.
  • Fixed multiple issues that prevented Android projects from being packaged under Unreal Engine 5.
  • Fixed a crash that could occur when deserializing a corrupted friends database from Player Data Storage.
  • Fixed a crash that would occur when calling GetAvatarUrl on a Discord friend or user.
  • Added a speculative fix for preventing a crash when Anti-Cheat tries to send data to an invalid user.
  • The plugin source code has been migrated to src.redpoint.games/redpointgames/eos-online-subsystem. You must update your bookmarks and Git submodule URLs to point at the new server before May 31st.
  • Documented how to run Unreal Engine dedicated servers at scale.
  • Our documentation is now open source on our GitLab instance, so anyone can contribute updates and fixes to our documentation.
  • EOS_AntiCheatClient_PollStatus is no longer called on platforms that don't support Anti-Cheat, which should remove the associated warnings from game logs.

This is an interim release; we intend to do another bug fix release in the near future, but we wanted to get a fix out for the Free Edition license agreement issue as a priority.

2022.04.19

This release fixes several issues:

  • Fixed an issue that prevented Epic from publishing a macOS build of the plugin for Unreal Engine 5.0. Once Epic publishes this update, the plugin should be downloadable in the Epic Games Launcher on macOS again.
  • Fixed a crash that could occur on consoles in Unreal Engine 4.26 and 4.27, due to new Unreal Engine 5.0 compatibility code that was added.
  • Added documentation on how to access the new Lyra example for Redpoint's EOS Online Subsystem. This is a preconfigured version of Lyra set up to use the Redpoint EOS Online Subsystem plugin instead of Epic's implementation.
  • Fixed a compatibility issue with Lyra when it uses long bucket IDs for sessions. Bucket IDs are now automatically limited to 60 characters to match the backend limits, and a warning is printed if the provided bucket ID is too long and cut to 60 characters.
  • Fixed a compatibility issue with Lyra to permit float attributes when updating or creating sessions. They will still be read as doubles when reading session data, but this allows you to submit them as floats.
  • Fixed a compatibility issue with Lyra where it would attempt a session search with the magic SEARCH_PRESENCE and SEARCH_LOBBIES filters, where it does not also specify attributes with those names. These special search filters are only used by the Steam and Epic EOS implementations, so the fix in the Redpoint plugin is to simply ignore these search filter when they are provided.
  • Fixed a compatibility issue with Lyra where the online subsystem would not permit calling SetNamedInterface on the IOnlineSubsystem interface. This function call is now implemented.
  • Fixed a compatibility issue with Lyra where FStatTypingRule would prevent the Lyra project from cooking successfully.
  • Minor fixes to some logging messages.

2022.04.11

This release adds support for the release version of Unreal Engine 5, and fixes various issues:

  • The Free Edition now targets Unreal Engine 5.0. If you are a Free Edition user, you must upgrade your projects to Unreal Engine 5.0.
    • You should do this sooner rather than later. While 2022.03.29 will continue to run on 4.27 for now, you will need to upgrade to a newer version of the plugin in future, and you should do so early so you can work through an issues that appear from upgrading your project.
  • The plugin now targets Unreal Engine 5.0, 4.27 and 4.26 as the supported engine versions.
  • Fixed an issue where P2P networking did not work in the release version of Unreal Engine 5.0.
  • Fixed a few deprecated API call warnings.
  • Fixed an issue where the Anti-Cheat hooks would not run correctly under Unreal Engine 5.0 when targeting a non-desktop platform.
  • Add detailed logs for when the IOnlinePartySystem::CreateParty operation fails.
  • Discord now requires explicit enablement by adding ProjectDefinitions.Add("ONLINE_SUBSYSTEM_EOS_ENABLE_DISCORD=1"); to your project definitions. It is no longer automatically enabled or disabled based on the presence of the SDK, which should ensure more consistent build behaviour across various build environments.
  • We added extensive documentation on how to set up EOS with dedicated servers. This documentation is still a work-in-progress, as we had to shift focus to Unreal Engine 5.0 support midway through writing it, but we plan to complete it in the near future.

2022.03.29

caution

This release removes several deprecated features such as the Monolithic authentication graph, legacy networking stack and Unreal Engine 4.24 support. If you're upgrading and use one of those features, read the bottom of this changelog entry for more information.

This release adds support for floating-point, double floating-point and boolean stats. It also fixes several issues and removes deprecated features.

  • Added support for floating-point, double floating-point and boolean stats. The EOS backend only supports storing 32-bit integers as stats, so you'll need to configure the types for each of the stats you plan on storing via Project Settings (the "stat typing rules"). Refer to the stat typing documentation for more information.
  • Added support for using the Unreal Engine Network Profiler and Network Insights. You should now be able to see detailed networking performance information in these tools when using EOS P2P connections.
  • The plugin now automatically configures your project for all EOS settings. This includes setting itself as the online subsystem and updating your networking driver configuration on all targeted platforms. You no longer need to manually edit INI files to set up your project for EOS Online Subsystem.
  • Worked around an issue where you could not write stats for other users from a listen server. The EOS SDK currently has a bug that prevents the ingestForAnyUser policy from being honored. This workaround allows you to write stats for other users from listen servers, as long as the target users are currently connected to the listen server. You must turn on the "Accept Stat Write Requests From Servers" setting in Project Settings for this workaround to be enabled.
  • Fixed compilation errors that would occur when targeting dedicated servers.
  • Fixed an issue where a dedicated server launched in the editor (using the editor binaries) could crash due to the EOS SDK firing external UI events or trying to initialize the friends interface. Interfaces not relevant to dedicated servers (and that are compiled out when making a packaged dedicated server) are no longer initialized for editor-based dedicated servers.
  • Fixed an issue where game networking traffic would incorrectly be sent in reliable mode when sent over EOS P2P.
  • Fixed an issue where the local player's unique net ID would not be correctly set on the initial map when "login before PIE" is enabled.
  • Fixed a few unused variable errors that were being detected by newer compilers on macOS.
  • Fixed an issue where calling operations on unbound EOS sockets would cause a crash. These now cause an error to be emitted to the logs/console instead.
  • Fixed an issue where sending an Anti-Cheat message to an invalid or disconnected client would cause the game server to crash.
  • Fixed an issue where ReadFriendsList would cause an infinite loop of refreshing friends if the user was signed in with an Epic Games account.
  • Fixed an issue where the cross-platform friends system could cause the "unique pointer" ensure to fail for IOnlineUserCloud when the online subsystem shuts down.
  • Documented how to run dedicated servers on PlayFab. This documentation addresses setting up the TLS certificates that are needed so the EOS SDK can communicate with the backend.
  • Documented the default search filters that apply when searching for sessions in EOS.
  • Removed the following deprecated features:
    • The monolithic authentication graph, and the IEOSNativePlatform interface have been removed. You must upgrade to the newer authentication graph system.
    • The UI assets relating to the Monolithic authentication graph have been removed. You may need to update your blueprint nativization settings to ensure the packaging completes successfully.
    • The legacy networking stack has been removed. This was only ever kept as a migration path for older games. Newer games should already be using the full networking stack.
    • Fully removed support for Unreal Engine 4.24 and any code paths that existed to support this engine version.
    • Settings related to the above features have been removed from Project Settings.
    • Removed the old "Get Player Avatar" blueprint node. Developers should use Online Subsystem Blueprints to access IOnlineAvatar from blueprints instead.
    • Removed API versions other than 2022-02-11. If you're on an older API version, you'll automatically be upgraded to 2022-02-11.

2022.03.09

This is by far the largest feature release for EOS Online Subsystem in a while. It contains a brand new cross-platform friends system, adds support for session invites via the local platform (e.g. Steam), adds support for the external UI interface, adds support for Unreal Engine 5.0 Preview 2 and fixes a huge of number of issues:

  • Implemented a new cross-platform friends system, which significantly improves the experience for players:
    • Friends from the local platform are now cached in Player Data Storage. For example, if you initially played the game on Steam, and then started playing on Epic, your Steam friends would appear in your friends list even when playing on Epic Games, as the Steam friends would be loaded from the cache. In addition, you can send session and party invites to any cached Steam friends who are currently playing the game, even when you're playing on a different platform.
    • Avatar URLs of local platform friends are also cached in Player Data Storage. This means that you can retrieve the avatars and avatar URLs of cached friends while playing on a different platform. For Steam specifically, there's some additional set up required for this to work (see the notes about setting the WebApiKey in the list of "fixed issues" below).
    • You can send friend invites to any EOS user, without requiring Epic Games accounts! The SendInvite, AcceptInvite, RejectInvite and DeleteFriend methods on the IOnlineFriends interface are all implemented, as well as the related events. Friends added via SendInvite and AcceptInvite are stored in Player Data Storage. If the target player to invite or accept as a friend isn't currently online, the request is queued and retried every 10 minutes. The queued invites are persisted in Player Data Storage, and they'll be retried even over multiple launches of the game.
    • The FOnlineFriend::GetInviteStatus method is now implemented, and returns whether you have an inbound or outbound friend request for the given friend in the friend list.
    • You can invite friends added through SendInvite and AcceptInvite to sessions and parties as you would any local platform or Epic Games friend. There's no additional configuration required for this to work.
    • You can now use the "friend aliases" feature of IOnlineFriends. You can set and remove aliases for any friend on the friends list (including local platform friends), and this will override the string returned from GetDisplayName on the returned friend objects.
    • You can now use the "blocked players" feature of IOnlineFriends. You can add and remove players to the block list, and query the list of blocked players. Refer to the documentation on how to use blocked players.
    • You can now use the "recent players" feature of IOnlineFriends. You can query a list of recent players, and manually add EOS user IDs as recent players as well. Refer to the documentation on how to use recent players.
    • The plugin also automatically tracks which other EOS users a player has seen during multiplayer matches, and adds them to the recent players list for later retrieval.
    • FOnlineFriend instances now have a deletable user attribute. This attribute is set to the value of true if you can call IOnlineFriend::DeleteFriend on them; that is, if the friend is stored in Player Data Storage and isn't being provided by the local platform (e.g. Steam).
    • You can call IOnlineFriend::DeleteFriend to cancel an outbound friend request that you no longer want to allow the recipient to accept.
    • The example projects have been updated to include:
      • Sending, accepting and rejecting friend invites
      • Viewing recent players, and sending them friend invites
      • Blocking and unblocking players, and viewing the blocked player list
      • Deleting friends from the friends list
      • Unreal Engine 5.0 Preview 2 support
  • Added support for EOS SDK 1.14.2 Hotfix 1. This is a bug fix release of the EOS SDK, so there are no new notable features for the SDK.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • Added support for Unreal Engine 5.0 Preview 2. Early Access builds are no longer supported.
    • This includes support for enabling Anti-Cheat on Unreal Engine 5.0 Preview 2.
  • Configuration for dedicated servers has changed to fix issues and make it easier to configure the project correctly:
    • If you have dedicated servers configured for your game, please go into Project Settings after upgrading and set the dedicated server ID and secret again.
    • The dedicated server ID and secret are now always stored in DefaultEditor.ini. They are additionally stored in DedicatedServerEngine.ini if the dedicated servers are configured for "developer only". The Build/NoRedist/DedicatedServerEngine.ini file is no longer used, so if you have this file in source control, you may delete it after upgrading.
    • Dedicated servers now work in-editor. You can start them by either turning on "Start Standalone Server" in the editor's Play preferences, or by choosing "Launch as Client" from the Play dropdown.
    • If you're specifying the dedicated server client ID and secret on the command-line, you must now use -ini:Engine:[EpicOnlineServices]:DedicatedServerClientId=... and -ini:Engine:[EpicOnlineServices]:DedicatedServerClientSecret=... instead of overriding ClientId and ClientSecret. Refer to Preparing your game server (Additional instructions for dual distribution mode) for the most up-to-date information.
  • You no longer need to call ReadFriendsList after receiving an OnFriendsChange event from a delegated subsystem. The plugin will now ensure the friends list you get from GetFriendsList is always up-to-date when you receive the OnFriendsChange event.
  • As of API version 2022-02-11, session searches now only return non-full sessions by default. If you want to include full sessions, add a search filter for "minslotsavailable" >= 0 (the default is "minslotsavailable" >= 1).
  • Added support for synthetic sessions. This means that local platform friends (such as Steam friends) can join your EOS session directly from the Steam interface. To enable this, set "Presence Advertises" to "Sessions" in the Project Settings and set up the list of delegated subsystems as you would for parties.
  • Added support for the IOnlineSession::SendSessionInviteToFriend API. This works for both EOS users in all cases, and local platform friends (such as Steam) if synthetic sessions are configured as described above.
  • Session invites sent to EOS user IDs now cause the IOnlineSession::OnSessionInviteReceived event to be fired in the receiving player's game.
  • Added support for calling the IOnlineSession::FindFriendSession function that accepts an array argument. The array must have exactly one user ID in it. This function is now supported (instead of returning an error), as Online Subsystem Blueprints only exposes the array version of this function.
  • Added support for the bIsPlaying and bIsPlayingThisGame presence properties for Epic Games friends.
  • Added support for the IOnlineExternalUI interface.
    • For ::ShowFriendsUI, this will show the Epic Games friends overlay if the current user is signed into an Epic Games account. Otherwise it'll show the local platform's friends list using the native platform subsystem, in the same manner that other methods pass through to the native subsystem as described below.
    • For all other methods, they'll be passed through to the native platform subsystem. This is the subsystem that is set in the DefaultEngine.ini configuration with NativePlatformService=... (as opposed to DefaultPlatformService=...). On mobile and console platforms, NativePlatformService= is already set for you by Unreal Engine. On desktop platforms however, you'll need to set it to the store you are shipping on (e.g. NativePlatformService=Steam).
  • Calls to the IOnlinePartySystem interface now only warn if you pass a namespace other than NAME_None, NAME_Default or DefaultPartyDataNamespace. Previously these calls would error and prevent the operation from running, but this was confusing for users who are accessing the interface via blueprints.
  • The Epic Games Overlay is no longer enabled if Epic Games is not set as the cross-platform account provider. The overlay has no functionality if you aren't using Epic Games accounts, so this reduces the chance of it causing issues on more advanced scenarios (such as VR/XR/AR).
  • Fixed compilation errors that would occur if you had Discord support enabled.
  • Fixed a build error that would occur if you tried to build the plugin on Windows while Epic's EOS plugin was also enabled.
  • Fixed a crash that would occur if the editor was shutting down and the EOS SDK didn't initialize correctly.
  • Fixed the following issues related to optional cross-platform accounts:
    • A scenario where if your Epic Games account was linked with the native account, you would get an EOS account implicitly created for you, even if you had played on another device before (and had not yet linked that device's credentials with the Epic Games account).
    • A scenario where if you were playing on e.g. Steam with an EOS-only account, and then linked your Epic Games account to Steam outside of the game (potentially in another game), then the next time you play the game you would get a new EOS account implicitly created for you by the Epic Games account.
    • An issue where if you were implicitly signed into an Epic Games account, but then we later had to cancel authentication or authentication failed, the EOS SDK would remain signed into the Epic Games account. This issue is only partially fixed, due to a known bug in the EOS SDK.
  • Fixed an issue where the two argument version of IOnlinePresence::QueryPresence would not correctly process presence data.
  • Fixed an issue where IOnlineTitleFile would not use the local user's ID for Title File operations if there was at least one user signed in. This prevented Title File operations from succeeding if your client policies require users to be authenticated before they can download files from the Title File service.
  • Fixed a crash that would occur if you tried to update a session that had no owning user ID set.
  • Fixed an issue where steam.encryptedAppTicket would not be correctly updated after the Steam credentials were refreshed for the EOS backend.
  • Fixed an issue where the presence interface would not correctly read presence information for local platform friends who had played the game before (where they have an EOS user ID).
  • Fixed an issue where the friends interface would try to call ReadFriendsList and GetFriendsList on delegated subsystems, even if the local user wasn't signed into them. This previously caused (harmless) error messages to be emitted in the logs if the user wasn't signed into an Epic Games account.
  • Fixed an issue where the IOnlineAvatar::GetAvatarUrl function would not work for Steam users. This function requires setting a client (not publisher) Web API key in your DefaultEngine.ini file, like so:
    [OnlineSubsystemSteam]
    WebApiKey=...
  • Fixed an issue where the Developer Authentication Tool would not be used for standalone game launches in the editor (that is, where you select "Standalone Game" from the Play dropdown in the toolbar). Standalone game launches will now correctly use Context_1, Context_2, Context_... credentials from the Developer Authentication Tool, matching the behaviour of play-in-editor launches.
  • Fixed the IOnlineIdentity::OnLoginStatusChanged event not firing when logging in or logging out a user, and fixed the order that IOnlineIdentity::OnLoginChanged and IOnlineIdentity::OnLoginComplete fires to match the behaviour of other online subsystems.
  • Fixed a crash that could occur in the Steam, Discord and Oculus subsystems if the online subsystem shutdown while an avatar was being fetched.
  • Fixed an issue where the callback for IOnlinePartySystem::SendInvitation would fire multiple times if the user being invited was a synthetic friend with both an EOS user ID and a local platform account (such as Steam).
  • Fixed an issue where the "deploymentid" field was not set when generating the Anti-Cheat settings file. This field was made mandatory in a recent update to EOS Anti-Cheat.
  • Fixed an issue where the online subsystem and P2P sockets would tick as fast as the game is rendering. The online subsystem tick is now rate limited to a maximum of 60 frames per second, which should prevent the online subsystem from inducing network latency when players have high framerates.
  • Fixed an issue where the default authentication graph did not automatically detect exchange code authentication when the game is launched from the Epic Games Store. Games using the default authentication graph will now authenticate using exchange code when it's available, as long as Epic Games is set as the cross-platform account provider.
  • Silenced the "User 0 is not logged in (when calling GetUniquePlayerId)" error. GetUniquePlayerId is called from within engine code, so it is not possible for developers to resolve this error in all circumstances.
  • Clarified a Steam-related warning that would occur when building the plugin with a source-based version of Unreal Engine. This warning now references the correct filename for details on how to enable Steam support with a source-based version of Unreal Engine.
  • Fixed various compilation errors that would occur if you built the plugin with "include-what-you-use" turned on. There were also a few unnecessary memory copies fixed as part of this change.

2022.02.06

This release adds support for EOS SDK 1.14.2, improves performance and fixes various issues:

  • Added support for EOS SDK 1.14.2. This is primarily a bug fix release of the EOS SDK, so there are no new notable features for the SDK.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • Implemented the new KickMember call on IOnlineLobby. If you're using the lobby, avatar or voice admin interfaces in your game, you must update your copies of the headers to the latest versions on GitLab or you will not be able to make lobby or avatar calls.
  • Unified the texture loading logic across subsystems (such as Steam, Oculus, etc). This fixes an issue where some avatars would not load or would have corrupted image data under subsystems.
  • Loading user avatars through the IOnlineAvatar interface is now supported on PlayStation®4 and PlayStation®5.
  • The FOnlinePartyConfiguration.bIsAcceptingMembers setting is now honored. If you set this to false, the permission level of the underlying lobby will be set to INVITEONLY and invites will be disabled, thus preventing anyone from joining the party.
  • The party configuration used to create the party is now preserved locally, so that when you access the configuration on the FOnlineParty instance you'll get the configuration back. Configuration is not yet synchronised with attributes, so it will continue to be empty on clients.
  • EOS SDK result codes are now correctly mapped to party system result values. This means that where you might have previously received ECreatePartyCompletionResult::UnknownClientFailure for errors such as EOS_Lobby_PresenceLobbyExists, you'll now get the correct result code of ECreatePartyCompletionResult::AlreadyInPartyOfSpecifiedType. You'll also get more accurate result code for errors such as passing an invalid user to e.g. UpdateParty.
  • Some errors messages now include the player ID and target IDs to help diagnose issues.
  • Anti-Cheat checks are no longer run for beacon connections. Previously, beacon connections would always fail if you had Anti-Cheat turned on and hadn't connected to the target server at the game level.
  • The Linux platform now supports logging in an unlimited number of users to the EOS online subsystem. Previously the identity interface honored the MAX_LOCAL_PLAYERS setting for Linux, which was always set to 1. This is primarily meant to support functional testing, where you want to have lots of EOS players signed into the headless Unreal Engine client instance.
  • Removed all unnecessary implicit memory copies in the plugin by using clang-tidy for Unreal Engine. This should significantly improve performance on devices where memory bandwidth is low (such as mobile devices).
  • Party related events are now handled at the party system interface level, instead of registering the events per party each local user joined. This should reduce the number of calls back from the EOS SDK, improving performance.
  • Fixed a crash that would occur if you called IOnlinePartySystem::UpdatePartyData with a non-shared FOnlinePartyData. You must use MakeShared<FOnlinePartyData>() or otherwise obtain a shared instance of party data in order to call UpdatePartyData.
  • Fixed an issue where restoring invites for multiple players at once would fail. The plugin now correctly queues up the RestoreInvites call if there is already an operation in progress.
  • Fixed an issue where the EOS SDK generates multiple NotifyLobbyMemberStatus events when a 3rd local user joins a party that two local users are already a member of. The plugin now correctly de-duplicates the event so you only recieve the PartyMemberJoined event once per local user that is already in the party.
  • Fixed an issue where multiple EOS_LMS_JOINED status events from the EOS SDK could result in the same member being added multiple times to the same party.
  • Fixed an issue where the GetJoinedParties and GetPartyMember functions would return inconsistent results during the OnPartyExited and OnPartyMemberExited event callbacks.
  • Fixed a crash that could occur when the editor is shutting down due to open sessions. This crash was caused by an incorrect ensureMsgf().
  • Fixed a crash that would occur if a lobby was retrieved from search or locally, and the lobby ID no longer had a valid user ID for it's owner. In this case, the lobby's OwnerId will now be null.
  • Fixed a few issues when the plugin is being built in IWYU mode.
  • The party system now explicitly logs why a local user is leaving a party, such as whether or not it's due to an explicit LeaveParty call or implicitly because there can only be one presence party.

The following known issues are present:

  • EOS SDK 1.14.2 currently crashes when using on Nintendo Switch™. This is a bug in the upstream EOS SDK, and not something we can fix. You will need to use an earlier EOS SDK version on Nintendo Switch™.
  • When you're using P2P connections (listen servers), one of the clients is running on Nintendo Switch™, and the host regardless of platform is using EOS SDK 1.12 through 1.14.1, the Nintendo Switch™ client will not be able to connect to the host. This is because 1.12 through 1.14.1 prefers IPv6 connections for P2P, which are unavailable to the Nintendo Switch™ client.
  • Due to the aforementioned reasons, it's recommended that you use EOS SDK 1.11 on all platforms if you're building for Nintendo Switch™. However, EOS SDK 1.11 is not available through the Epic Games Developer Portal any more, so if you don't have a copy of it, you'll need to wait until Epic Games issues a proper fix for EOS SDK 1.14.2.

Important: We intend to remove the following legacy features in the first release of April 2022. These features have been deprecated for a long time and have recommended replacements:

  • The monolithic authentication graph, including the legacy IEOSNativePlatform interface. All platforms that EOS supports, including consoles, are officially supported through the new authentication system. If you have your own IEOSNativePlatform implementations, you must migrate them to the new authentication graph system ahead of the April release.
  • The legacy networking stack. This implementation contains known bugs and was only present so that existing live games could gracefully migrate to the full networking stack.
  • We intend to remove all existing API versions and replace them with a new 2022-04-.. API version when the April release comes out. This is because most of the API versions relate to the above deprecated behaviour, and there's been no newer API version defined than 2021-05-31 that we can set as the default. If your project is not currently set to the 2021-05-31 API version, you should read the linked document to see what changes will impact you in the April release.
  • There's some console code paths that are only applicable on Unreal Engine 4.25 and earlier. These engine versions are not targeting console SDKs that can be submitted to cert, so almost all developers will need to upgrade to a newer version of Unreal Engine anyway. We intend to remove these legacy code paths to reduce code complexity.

2021.12.10 (Hotfix)

This is a hotfix release of EOS Online Subsystem for the Free Edition only. Some time after the initial release of EOS SDK 1.14.1, Epic pushed out an unannounced update to 1.14.1 that differs only in the revision number. Whereas the initial release for PC/macOS/Linux and the current release for all other platforms is currently 18059966-v1.14.1, the PC/macOS/Linux SDK is now currently at 18153445-v1.14.1. This causes issues for the Free Edition, which is precompiled and requires the version number (including the revision number) to match exactly in order to work.

danger

Because this release also contains other experimental features and bug fixes that are not ready for a full release, it is highly recommended that you stay on 2021.11.11 with EOS SDK 18059966-v1.14.1 if you have that older SDK version available.

You should not upgrade to this hotfix release; it is only intended to be used by new users who are downloading the Free Edition and the EOS SDK for the first time, and are unable to obtain 18059966-v1.14.1 from the Epic Games Developer Portal.

Compatibility Notes

The following compatibility issues are known to exist specifically with this hotfix release, and will not be addressed until a full release in 2022:

  • The lobby and avatar APIs implemented are newer than the blueprint nodes in Online Subsystem Blueprints. This means that you will not be able to access the lobby and avatar APIs from Online Subsystem Blueprints when using the hotfixed version of EOS Online Subsystem.
    • There will be a synchronised normal release of EOS Online Subsystem and Online Subsystem Blueprints in 2022 that will allow the newer APIs to be used.
  • It's possible that mobile support will not work in this version, due to the differing revision numbers between platforms. Due to the time constraints mentioned below, we haven't had time to test that mobile builds still work in this release of the Free Edition.

Alternative Options

If you need to use the lobby and avatar APIs before the January 2022 release, and you don't have access to the 2021.11.11 EOS release or the 18059966-v1.14.1 EOS SDK version, then your only option is use the Marketplace Edition. The Marketplace Edition ships with the older EOS SDK and thus does not have the version incompatibility that the Free Edition has.

If you have access to the previous plugin version and the 18059966-v1.14.1 EOS SDK version, you can continue using that older version of the Free Edition until next year's normal release.

FAQ: Why not do a normal release or why do a hotfix release?

This issue was made aware to us on the 9th December 2021, approximately 6 business days before we go on our scheduled Christmas break. No support is available to any customers while we're on Christmas break, so the risk of doing a normal release this late into the year is extremely high, as we would not be able to address or fix any issues that appear in the new version.

Other notes

This release does contain a range of other features and bug fixes, but we're not documenting them here in an effort to discourage people from upgrading to this release unless absolutely necessary. These new features and bug fixes will be documented as part of the normal release that will occur in January 2022.

As previously mentioned, there is no Marketplace Edition release for this version.

2021.11.11

This release fixes issues and adds new features:

  • Added support for EOS SDK 1.14.1.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
    • Free Edition users must also have upgraded to Unreal Engine 4.27 by this point, as previously mentioned in the release notes for 2021.09.03. If you are still on 2021.08.17, you will be prompted to 2021.11.11 and you must switch to Unreal Engine 4.27.
  • Added support for a new IOnlineAvatar::GetAvatarUrl function. This feature was contributed by a community member through a merge request. Obtaining URLs for avatars is supported on Steam, Discord, itch.io, Oculus and some console platforms.
  • The IOnlineIdentity::GetAuthToken() and FUserOnlineAccount::GetAccessToken() functions now return the EOS Connect ID token if you're building against EOS SDK 1.14 or later. You can use this ID token to authenticate with your own web services, without having to manually handle each platform's authentication type.
  • Sessions are now automatically cleaned up when you stop a play-in-editor session. This prevents stale sessions from appearing in the session list and prevent rate limits from being hit when you're iterating in development.
  • Functions and callbacks which return FOnlineError now return errors in a standardized format based on the response from the EOS SDK. This allows you to more accurately respond to individual EOS SDK error states.
  • Updated the MaxClientRate and MaxInternetClientRate settings in the NetDriver to 100000 by default, in an attempt to mitigate P2P latency issues.
  • Added support for EOS SDK 1.14.
  • Added support for custom arguments in credential obtainers used by the authentication graph. This is mostly an internal change to better support consoles, but if you've customized the authentication graph deeply, you can now make use of this feature.
  • Dropped support for EOS SDK 1.7.1 and below. These versions of the EOS SDK are ancient and don't support many of the modern features.
  • Fixed an issue where IOnlineIdentity::Login could not be called from the OnLoginComplete callback. It now can be.
  • Fixed an issue where Steam synthetic parties did not work on Unreal Engine 4.27.
  • Fixed an issue on console platforms where incompatible versions of the EOS SDK and Unreal Engine could be linked together and fail at runtime. The build system now detects incompatible SDK versions and errors out if the resulting build would not work at runtime.
  • The IOnlineLobby::DeleteLobby operation now treats an EOS_NotFound result as a success, since the lobby no longer exists.
  • We discovered a bug in the EOS SDK which resulted in lobbies and parties being disconnected and left in an inconsistent state if you attempted to join another party or lobby that did not exist. We reported this bug to Epic, and they've fixed this issue in EOS SDK 1.14.1. If you are impacted by this bug, please update your EOS SDK to the latest version.

2021.09.07

This releases fixes a packaging issue that only impacts the Marketplace Edition when installed through the Epic Games Launcher.

  • Fixed an issue where the Config/ files were missing only after Epic Games built and packaged the plugin. This caused the EOS networking driver to not load correctly, and prevented networking from working.
    • This was due to the Config/FilterPlugin.ini file not being in the package submitted to Epic Games.

This release is only available for the Marketplace Edition. There is no Free Edition release for it, as the Free Edition is not impacted by this issue.

2021.09.03

This release significantly improves Voice Chat, adding new features and fixing support for mobile platforms. It is also the first release to support Unreal Engine 4.27 in the Free Edition:

  • Unreal Engine 4.27 is now the supported engine version for Free Edition users, and will be the required engine version in the future.
    • If you are a Free Edition user, you should start planning your upgrade to Unreal Engine 4.27 if you haven't already. A future required upgrade of EOS Online Subsystem will require Unreal Engine 4.27.
    • For the time being, you can continue to use 2021.08.17 on Unreal Engine 4.26 until you upgrade your project. Again, this will not be the case forever, so you should plan your engine upgrade accordingly.
    • If you need to stay on Unreal Engine 4.26, you can purchase EOS Online Subsystem on the Marketplace, which will allow you to remain on the older engine version.
  • Added support for the transmit functions in Voice Chat. These allow you to constrain voice chat to emit on no channels, all channels or an arbitrary subset of channels.
  • Added support for adjusting the volume controls of input and output devices in Voice Chat.
  • Added support for toggling mute of input and output devices in Voice Chat.
  • Sanction checks are now turned off by default, as they require a custom policy to be set up in the Epic Games Developer Portal first. Refer to enabling sanction checks to re-enable them in 2021.09.03.
  • Adjusted the P2P packet buffers so they are now set to unlimited by default. The plugin now also handles the P2P overflow event, logging a warning if they overflow.
  • Fixed an issue where the Developer Authentication Tool could not be found if you had the SDK installed in the Plugins directory inside the project.
  • Fixed an issue where connecting to a dedicated server within the editor would not work if trusted dedicated servers were enabled.
  • Fixed an issue where voice chat would not be enabled on Android and iOS.
  • Fixed a crash that would occur if the same account tries to connect an Anti-Cheat protected dedicated server.
  • Fixed compatibility when compiling against EOS SDK 1.11.
  • Fixed a crash that was caused by trying to initialize the EOS Voice Admin interface on non-desktop platforms. This interface is only available on Windows and Linux.
  • Fixed a potential crash that could occur due to the Oculus VR plugin, when running the editor from the command line. This is a workaround for a bug in Unreal Engine.
  • Silenced an incorrectly logged error relating to EOS_RTC_LeaveRoom when joining an RTC-enabled lobby. This is a issue in the EOS SDK; we are silencing the error to reduce confusion.
  • Improved the voice chat documentation.
  • Documented the requirement to set up itch.io scopes in order to use itch.io authentication.

2021.08.21

This release adds support for Unreal Engine 4.27.

  • EOS Online Subsystem now supports Unreal Engine 4.27.
  • Fixed a warning about LocalRTCOptions being set when voice chat is turned off.

This release was only ever made available on the Unreal Engine Marketplace. It was not released as a Free Edition release.

2021.08.17

This release adds initial support for EOS Voice Chat.

  • Added support for using EOS Voice Chat in parties. Just turn on "Chat Enabled" when creating the party, and it will have voice chat enabled.
  • Added support for using EOS Voice Chat on listen servers. You can create voice-enabled lobbies through the IOnlineLobby interface, which can be used to access voice chat outside of parties.
  • Added support for using EOS Voice Chat on dedicated servers via the new IOnlineVoiceAdmin interface, which is available in the Online Interfaces repository.
  • Added support for the IVoiceChat and IVoiceChatUser interfaces, which allow you to control which channels players join, control audio input and output devices, mute and block other players and detect when players are talking in voice chat.
  • Voice chat functionality is available in blueprints via the new release of Online Subsystem Blueprints.
    • The documentation on this website relating to EOS voice chat also includes blueprint examples. You can directly copy and paste the blueprint nodes from the documentation pages into your project by selecting the nodes and pressing Ctrl-C/Ctrl-V.
  • The blueprint example project has been updated to enable voice chat in parties and lobbies, and to allow you to control voice chat from the UI.
  • Voice chat does not yet support 3D audio/spatialization; this is planned for a future release.

2021.08.06

This release fixes a critical issue that prevented projects from building, even if they didn't have Anti-Cheat enabled:

  • Fixed Anti-Cheat scripts so that they work when the game project is in a directory with spaces in the path.
  • Added additional tests to CI/CD to ensure that Anti-Cheat works when the engine and game project have spaces in the path.

2021.08.04

This release adds support for EOS SDK 1.13.1 and a fixes several issues:

  • Added support for EOS SDK 1.13.1. If you are a Free Edition user, you will need to update to this version of the EOS SDK.
  • Fixed an issue where presence events would send the incorrect user ID in the first parameter of the event. The user ID will now be the user that the presence information is associated with.
  • Fixed an issue where Epic Games accounts would not be linked with the native platform account (such as Steam) if Epic Games was set as the cross-platform account provider and "Require cross-platform account" was turned on.
  • Fixed an issue where OnPartyInviteRemoved and OnPartyInvitesChanged didn't fire after rejecting a party invitation.
  • Fixed an issue where sessions did not have their "invites allowed" setting set based on bAllowInvites. Sessions now respect the bAllowInvites option.
  • Fixed an issue where if you set bShouldAdvertise, bAllowJoinViaPresence and bAllowInvites all to false for a session, it would be publicly advertised. Instead, it is now set to invite only if all of those settings are turned off (and with the bAllowInvites fix above, it will not be joinable by invites either, effectively closing the session off to any new players).
  • Fixed a crash that could occur in the editor when stopping a play-in-editor session while a synthetic party is being created for a newly created party.
  • Fixed a potential crash when closing the editor after using Epic Games authentication in multiple play sessions.

2021.08.02

This release fixes critical issues that prevented projects from building, even if they didn't have Anti-Cheat enabled:

  • Fixed Anti-Cheat scripts so that they work when Unreal Engine or the game project is in a directory with spaces in the path.
  • Fixed Anti-Cheat signing when the main project executable has a different name to the folder that the game resources are stored in when packaged.
  • Fixed an issue where the Anti-Cheat signing process would not be able to find the plugin when it is installed via the Marketplace.
  • Fixed an issue where some engine files would not be marked read-write in order to install the Anti-Cheat packaging hooks.

2021.07.30

This release adds full support for Anti-Cheat and network authentication:

  • EOS Anti-Cheat is now fully supported. You can turn Anti-Cheat on in Project Settings.
    • Anti-Cheat is supported on Windows for the game clients.
    • You can mark console platforms as "trusted platforms"; platforms which are allowed to connect to Anti-Cheat secured servers without running Anti-Cheat on the client. The plugin handles doing this securely for you, so that players can't pretend to be connecting from a console to bypass Anti-Cheat.
  • The plugin now authenticates players when they connect to game servers and secures network traffic:
    • When players connect to a dedicated server run by a developer, the connection is automatically secured with AES-GCM encryption.
    • When players connect to a dedicated server run by a developer, players send their EOS Connect token to the game server. The game server then uses that token to authenticate the player with the backend to ensure that they are who they say they are.
    • Dedicated servers run by a developer can now write to Player Data Storage on behalf of connected players.
    • When players connect to listen servers (run by other players), the server verifies that the user ID they are connecting with is a real user ID.
    • When players connect to any type of game server, the server will check the Sanctions list to see if the player has any BAN sanctions active against them. If they do, they're prevented from connecting to the game server.
    • The above features are turned on by default, but you can turn them off in Project Settings.
  • The Epic Online Services menu is now visible in the toolbar in Unreal Engine 5.
  • Fixed an issue where the local platform would not be correctly linked against an Epic Games account when using optional cross-platform accounts. This also caused issues with implicit sign in when running in optional mode.
  • Fixed an issue where you could not read information about lobbies returned in search results. You could previously only see the lobby ID itself. You can now call functions like GetLobbyMetadataValue, GetMemberCount, GetMemberUserId and GetMemberMetadataValue on search results.
  • Fixed an issue where FOnlineIdentityInterfaceEOS::CreateUniquePlayerId would not correctly deserialize user IDs that were serialized using GetBytes().
  • Updated the Oculus avatar implementation to include more details in the logs when an API error occurs.
  • Fixed anonymous (Device ID) authentication not working correctly.
  • Fixed a potential crash that could occur when using Steam authentication on the Monolithic (legacy) authentication graph.

2021.07.06

This is our biggest release to date and it overhauls authentication, adds support for new consoles and adds support for EOS SDK 1.13. Due to upcoming changes in Unreal Engine 4.27 and 5.0, you must read through the upgrade guide when upgrading to this release.

  • Authentication has received a major overhaul in this release:
  • The plugin now supports all authentication platforms that EOS supports, including:
  • PlayStation®4 and PlayStation®5 are now both supported.
  • EOS SDK 1.13 is now supported.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • Discord support is now directly integrated into EOS Online Subsystem for developers using the source code of the plugin. This includes support for authentication, avatars, friends, invites and synthetic parties.
    • You no longer need the other Discord plugin, which has now been deprecated. You can remove it from your project.
  • Added support for Unreal Engine 4.27 Preview releases.
  • Added support for fetching player avatars on Steam, Discord, itch.io and Oculus.
    • You can fetch the avatars of both local accounts and friend accounts.
    • This is now done through the IOnlineAvatar interface, which means you can fetch avatars through C++ or Online Subsystem Blueprints.
    • The old UEOSGetPlayerAvatar blueprint node is now deprecated and will be removed in a future release.
  • Added more user attributes on EOS accounts, so you can find out what external platforms are connected to an EOS account. This works for any kind of user account, not just those locally signed in or from the friends list.
    • The epic.canLink attribute has been renamed to crossPlatform.canLink, as you can now have cross-platform accounts from systems other than Epic Games.
  • You can now constrain synthetic parties to prevent a player from joining multiple parties at once. To do so, change the "Party Joinability Constraint" to "Ignore accepted invites if player is already in a party" in Project Settings.
  • Fixed a range of cases where user credentials would not be refreshed from the native platform when requested by EOS.
  • Fixed an issue where the return value of IOnlinePartySystem::RejectInvitation was incorrect.
  • Fixed an issue where presence calls such as QueryPresence and SetPresence would not be routed to delegated subsystems correctly, resulting in a crash. All queries to presence and friends in delegated subsystems are now routed based on the controller ID of the local user for consistent behaviour across EOS and the native platform.
  • Fixed an issue where you could not recreate a session with the same name, if you were recreating it in the OnDestroySessionComplete callback.
  • Fixed an issue where poorly implemented delegated subsystems could cause the plugin to crash, due to their implementation invoking callbacks without indicating that they would. EOS Online Subsystem now works around these poorly implemented subsystems.
  • Fixed an issue where the local platform credentials (such as Steam) would not be linked back to the cross-platform account (such as Epic Games) after signing in interactively with a cross-platform account.
  • Fixed an issue where presence and friends calls would route to the Epic Games implementation, even when the local user wasn't signed in with Epic Games. This didn't cause any actual issues at runtime, but lead to erroneous error messages in the Output Log.
  • Fixed a crash caused by improper use of std::bind (instead of GetWeakPtr/PinWeakPtr).
  • Fixed a crash when loading synthetic friends if the passed in user ID was invalid.
  • Fixed a crash that would occur during packaging if the IoStore option is enabled.
  • If EOS_NoChange is received as the result of RegisterPlayers or UnregisterPlayers on a session, it is now treated as success instead of failure.
  • Changed a check() to ensure() when the plugin is checking to see if all online subsystem references have been released on game end. This reduces the severity of the check when you are debugging your C++ code, and prevents the editor crashing if you fail to clean up a shared pointer reference.

Nintendo Switch is a trademark of Nintendo. "PlayStation" is a registered trademark or trademark of Sony Interactive Entertainment Inc.

2021.05.29

This release adds support for EOS SDK 1.12, adds features and fixes several issues. This is primarily an interim release to allow Free Edition users to use the latest SDK. We continue to work on our major planned feature improvements, which are targeted for a future release.

  • EOS SDK 1.12 is now supported.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • Added support for Unreal Engine 5.0 Early Access. This is available only if you are using the Git repository, as the Marketplace does not provide binaries for Unreal Engine 5.0 yet.
  • Added support for calling EOS_Platform_CheckForLauncherAndRestart. There is now an option in Project Settings to require games to be launched from the Epic Games Launcher, for games shipping through the Epic Games Store.
  • Added support for calling "Get Player Avatar" on local users that have signed in via Steam.
  • Added support for accessing information about all related services on user and friends, via user attributes.
  • Added support for calling IsFriend and GetFriend on the Friends interface.
  • Added support for sending invitations over both the wrapped subsystems for a friend and the EOS APIs.
  • Fixed an issue where calling LeaveParty would leave all local parties for a user.
  • Fixed Epic Games authentication on iOS.
  • Fixed an issue where the Title File interface would not authenticate with EOS when necessary (since authentication for this API is optional, depending on the client policies you have configured in the Dev Portal).
  • Fixed a potential crash that could occur when the online subsystem shuts down.
  • Fixed an issue where Discord authentication would not work due to an incorrectly formatted authentication token.
  • Fixed a crash that could occur when propagating presence information to delegated subsystems like Steam.

2021.04.21

This release adds support for EOS SDK 1.11 and fixes several issues. This is an interim release to allow Free Edition users to use the latest SDK; our major planned feature improvements are targeted for a future release of the plugin.

  • EOS SDK 1.11 is now supported.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • Fixed a Shipping-only issue where one client disconnecting would result in all clients disconnecting.
  • Fixed a Shipping-only issue where the epic.accountId user attribute would not be available.
  • Fixed a Shipping-only issue that would prevent presence events or QueryPresence from working as expected.
  • Fixed a crash that could occur if network connectivity was interrupted during an EOS operation.
  • Reduced the log level of the "errors.com.epicgames.eos.auth.user_not_found" warning to informational, as this often confuses users into thinking it is an error, when it is expected during a user's first login.
  • The plugin now emits the EOS result code in the logs if the EOS SDK fails to initialize, so you can determine the reason for the initialization failure.
  • Improved the documentation to keep the required EOS SDK for Free Edition users in sync with releases.
  • Improved the documentation of P2P networking and dedicated server setup.

2021.03.09

This release adds support for EOS SDK 1.10.3, updates the example projects and fixes issues:

  • EOS SDK 1.10.3 is now supported.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • The example projects have been updated:
    • Added support for replay recording, to ensure that functionality works correctly.
    • Added support for deploying the C++ example as a dedicated server.
    • Added an example on how to integrate EOS with Agones for deploying dedicated servers in Kubernetes.
    • Fixed an issue where the C++ example would crash when a player logs out while replay recording is in use. The C++ example now stores the player's unique net ID in the same way the blueprints example does.
    • Fixed an issue where the session search result was not being passed into the C++ SendBeaconPingTask properly.
    • Fixed an issue where beacon support was not detected correctly in the C++ example.
    • Fixed a crash in the C++ SendBeaconPingToSearchResult implementation when no search result was passed in.
    • Fixed an issue where the C++ .uproject file was missing the required Modules section.
    • Removed the C++Tutorial asset as it prevents the example from being packaged for deployment.
    • Redpoint Games now runs the C++ example as a dedicated server for connection testing.
  • Added support for overriding the listening port for the session by setting the session attribute __EOS_OverrideAddressBound to e.g. 0.0.0.0:12345. This is intended to be used when you are running your game servers in a container, and the port Unreal is listening on (like 7777) is mapped to a different port when exposed to the Internet.
  • Added the epic.authenticatedWith authentication attribute, which informs you of how the user was signed into their Epic Games account.
  • Fixed handling of boolean attributes in sessions, parties and lobbies.
  • Fixed an issue where clients would not reconnect to the server properly during server travel.
  • Fixed IOnlineLobby::GetMemberMetadataValue not reading the metadata from the correct member.
  • Fixed an issue where creating beacons would update the listening address of a session in the sessions list. Beacons now have no impact on the listening address associated with a session.
  • Documented that only friends who have logged into your application will be retrievable through the Epic Games friends list or presence APIs.
  • Improved the documentation around the ways you can test Steam authentication in your game during development.

2021.02.26

This release improves the blueprint example projects and fixes issues:

  • The blueprint example project now has feature parity with the C++ example project.
  • Added support for extracting and launching the Developer Authentication Tool on macOS.
  • Added support for running the Developer Authentication Tool on a remote machine. Change the DevAuthToolAddress configuration value to point to the address on a remote machine to use this feature.
  • Fixed a crash that would occur if external accounts could not be retrieved for an Epic Games friend.
  • Fixed LeaveParty not removing the party from the local cache correctly. This caused re-joining the same party after leaving it not to work.
  • Fixed GetJoinedParties returning duplicate entries when multiple local users were in the same party.
  • Fixed ReadLeaderboards... functions not working when you are building against EOS SDK 1.10.2.
  • Fixed lobby events not being raised from the IOnlineLobby interface.
  • Fixed extension platforms from attempting to use the default native platform loader. Extension platforms must now always specify their own SDK loading implementation.
  • Fixed the TaskState not being set correctly in some circumstances when reading leaderboards.
  • Added a speculative fix that should mitigate load errors that could occur when launching the Unreal Engine editor on macOS with binaries from the Marketplace installed.
  • Documented the encryption key to use for Steam authentication if you are testing with Steam app ID 480.
  • Documented that you need to run git submodule update --init --recursive if you are using EOS Online Subsystem from source code.

2021.02.11

This release includes support for Xbox, support for EOS SDK 1.10.2, feature improvements and bug fixes.

  • EOS Online Subsystem now supports Xbox One and Xbox Series X/S. If you are a licensed Xbox developer, you can verify your access for these platforms in the License Manager.
    • Xbox One and Xbox Series X/S support is only available in the Marketplace Edition. It is not available in the Free Edition.
  • EOS SDK 1.10.2 is now supported.
    • For Free Edition users, you must upgrade to this version of the SDK when you upgrade the plugin.
  • You can now use IOnlineLobby to search for parties, and then join a given party by using the MakeJoinInfo... methods.
    • For example, obtain the IOnlinePartyJoinInfoConstPtr with PartyInterface->MakeJoinInfoFromJson(PartyInterface->MakeJoinInfoJson(*IdentityInterface->GetUniquePlayerId(0).Get(), LobbyId), and then pass the obtained join info to the PartyInterface->JoinParty method.
  • Fixed a crash that could occur if you customized the authentication graph.
  • Fixed the runtime DLL search paths for desktop platforms. Previously you would encounter an error if you store the EOS SDK under the Plugins folder.
  • Fixed an issue where changing configuration in Project Settings would be saved, but not correctly used by the plugin until the next time the editor was restarted.
  • A previous fix for EAS refresh was reverted, and we are waiting on further details from Epic Games as to the correct fix to apply.
  • The documentation is now searchable.

2021.01.27

This release overhauls the P2P networking implementation and fixes bugs.

  • The P2P networking implementation has been overhauled. This new implementation uses a different address format, so if you have a live game and you need to continue using the old system, you can do so by switching the default networking stack. The new networking stack:
    • Added full support for beacons. To use beacons, make sure you update your project configuration to use the EOS net driver for beacons as well.
    • Added support for multiple connections to a server on different ports.
    • Added support for listen servers setting their P2P socket name with the ?SocketName=... URL parameter.
    • Fixed an issue where a client would not properly reconnect to a server after an unexpected disconnection.
    • Fixed an issue where connections from a client to a server would remain open, even after the client wanted to disconnect.
    • Fixed an issue where play-in-editor multiplayer games would not work if the host PIE instance started listening over P2P.
    • As of API version 2021-01-22, the full networking stack is now the default.
  • Added support for finding the EOS SDK under the Plugins folder in your project. This allows you to use the plugin as a Git submodule and have the EOS SDK versioned in your own repository. Refer to Installing the EOS SDK for information on the new paths.
    • The plugin now also logs which directories it tried to find the SDK in. This can help you diagnose issues with the plugin not being able to locate the SDK.
  • Added many new authentication attributes on FOnlineUserAccountEOS, which allows you to determine what platform the user was authenticated with, and access platform-specific tokens (such as the Steam encrypted app ticket) from your own code.
  • Fixed an issue where listen and dedicated servers would not try port 7778, 7779, etc. if the default port of 7777 was already in use.
  • Fixed an issue where users authenticated with an Epic Games account would not have their EOS credentials refreshed correctly.
  • Fixed compilation errors that would occur when include-what-you-use (IWYU) was enabled.
  • Fixed an issue where the plugin did not enforce the availability of platform-specific extension code on consoles.
  • Documented that you need to set bShipForBitcode=False when targeting iOS. Refer to Configuration for more information.
  • Added beacon support to the 4.26 C++ example project.
  • Fixed an issue in the example project where parties would not be set up with the correct invite permissions, and this would cause invites on Steam not to work. Parties must have their invite permissions set to Anyone in order for cross-platform invites to work.
  • Added unit tests to cover both P2P and IP networking functionality in the plugin.
  • The semantic C++ linter we use in the plugin is now open source, and you can adapt it for your own Unreal Engine projects. No support is available for this tool.

2021.01.12

This release fixes a compatibility issue with Unreal Engine 4.25, fixes a few issues with the Project Settings page and improves documentation.

  • Fixed an issue that prevented the plugin compiling under Unreal Engine 4.25. An additional test has been added to our build process to catch this issue in future.
  • Updated the documentation on Enabling Steam auth to include granting yourself a CD Key and to cover how to enable Steam support when using a source-based version of Unreal Engine.
  • Fixed an issue where custom [EpicOnlineServices] settings would be removed by Project Settings.
  • Fixed an issue where Project Settings would not be saved if you didn't have a DefaultEngine.ini file.
  • Changed DelegatedSubsystems over to be an array of strings in Project Settings for easier editing.
  • Updated the labelling of the device ID options in Project Settings to make it clear these options are related to anonymous authentication.
  • Added user widget customization to Project Settings.

2021.01.11

This release includes a range of bug fixes and improvements. It is also the first release that requires Free Edition users to be using Unreal Engine 4.26.

  • As outlined in our changelog from December and as per the notifications in our Discord, all Free Edition users are now required to upgrade to 2021.01.11. This means that Free Edition users must now be using Unreal Engine 4.26.
    • If you need to continue using Unreal Engine 4.25, you will need to upgrade to the Marketplace Edition.
  • Added support for EOS SDK 1.10.1 to the Marketplace Edition.
  • Added support for querying presence information from other users. This also makes the GetPresence function of FOnlineFriend work after presence has been initially queried.
  • Added support for using Int64, Double and Bool attribute types in parties and party members.
  • Added a new EOS-specific RejectInvitation function that accepts a FOnRejectPartyInvitationComplete parameter and correctly exposes the EOS operation as async. This is currently used by the tests to ensure all invites are rejected before the test completes, but it is available for use if you cast the party system to it's EOS-specific type.
  • The plugin now logs exactly why a CreateSession or UpdateSession operation fails, including the details of any attributes that may have caused the failure. This should assist developers in ensure that their CreateSession and UpdateSession operations are written correctly.
  • The plugin now updates the unique net ID cached in ULocalPlayer and APlayerState when the local user is signed in or out through the IOnlineIdentity interface. This allows blueprint nodes such as "Find Sessions" to work without requiring a map change.
  • Fixed an issue where the EOS plugin would be loaded during packaging and cook, resulting in undesirable packaging failures. The EOS plugin now refuses to load during packaging and cook, since it is unnecessary in that context anyway.
  • Fixed an issue where the DisablePersistentLogin configuration option was ignored.
  • Fixed an issue where the authentication process would attempt to use authentication methods other than the Developer Tool when using the "Login before PIE" option. When using this option, it will now only authenticate against the Developer Tool.
  • Fixed an issue where party invites were not removed after they were accepted with a JoinParty call.
  • Fixed an issue where party data and party member data was not loaded when initially joining a party.
  • Fixed an issue where being kicked from a party would not cause the PartyExited event to be raised.
  • Fixed an issue where being kicked or disconnected from a party would not cause the party to be removed from the parties array when it no longer had any local users.
  • Fixed an issue where calling LeaveParty would effectively leave the party for all local members, since the party was unconditionally removed from the parties array, even if there were other local users who were still members.
  • Fixed a crash that could occur when restoring invites if an invite would be added and the only other remaining invite was rejected at just the right time.
  • Fixed a crash that could occur when receiving a lobby invite if the only other remaining invite was rejected at just the right time.
  • Fixed a crash that could occur if you kick a member from a lobby very quickly (on the same machine), causing the EOS_Lobby_CopyLobbyDetailsHandle operation to fail in the JoinLobby handler.
  • Fixed the party-related unit tests not cleaning up their parties or invitations, leading to unreliable test results.
  • Documented that you need to set bUseSteamNetworking=false when setting up Steam authentication.
  • Documented how to customize the UNetDriver settings for P2P connections.
  • Documented that party events are fired for all members of a party.
  • Documented how to register existing players after creating a session on an already listening server.
  • Documented how to query presence information on Epic Games friends.

2020.12.17

This release is only for the Free Edition, and updates the targeted SDK to 1.10.1.

Typically we'd release an update for all editions when a new EOS SDK version comes out, but it's only about a day until the Christmas break where we close until January. Thus, we need to mitigate as much of the risk associated with doing a new release as possible.

This optional update for the Free Edition is intended for users who can now only download EOS SDK 1.10.1 from the developer portal, as Epic Games does not make older versions of the EOS SDK available for download. If you are an existing Free Edition user, you can continue using 2020.12.16 with EOS SDK 1.10.

  • This release is not a mandatory upgrade if you're on the Free Edition. You can continue to use 2020.12.16 if you want to continue using EOS SDK 1.10.
  • Marketplace Edition users that have the plugin installed through the Epic Games Launcher: The EOS SDK 1.10 is bundled with the installation, so the release of 1.10.1 does not impact you.
  • Marketplace Edition users that are using the plugin from the source code repository: The latest commit on main supports EOS SDK 1.10.1 if you need to use that version. However, because support will be unavailable over the next two weeks we recommend sticking with 1.10 for now, as we will not be able to assist you with issues caused by 1.10.1 until we return in January.

2020.12.16

This release fixes a compatibility issue with Online Subsystem Blueprints, and includes the release of a blueprint-only example project:

  • Fix IOnlineSession::DestroySession so that it calls its local completion delegate, in addition to the global event.
  • Released a new blueprint-only example project for EOS Online Subsystem that uses Online Subsystem Blueprints.

2020.12.10

This release adds support for Unreal Engine 4.26, adds new features and fixes a range of issues:

  • Added support for Unreal Engine 4.26.
    • If you are a Marketplace Edition user, you can use any supported engine version (4.24, 4.25 or 4.26).
    • The Free Edition is now only built for Unreal Engine 4.26. Due to infrastructure limitations, we can't build the Free Edition for more than one Unreal Engine version at a time.
    • Important: If you are a Free Edition user, you should start upgrading your project to Unreal Engine 4.26 now. You will need to download 2020.12.10 for 4.26 through the License Manager, as you will not get a prompt in the editor to upgrade.
    • Free Edition users can continue to use 2020.12.01 while they upgrade their projects to Unreal Engine 4.26. Upon the next release in January, Free Edition users will be required to upgrade to a 4.26-only version of the plugin.
  • Added support for creating and updating sessions before the listen or dedicated server has started accepting connections. Now, when a listen server or dedicated server is started, it will automatically update any sessions you are the owner of when it is ready for receive connections.
  • Added the concept of "API versions", which allow you to keep the same functionality behaviour even when you upgrade the plugin to a later release to receive fixes.
    • Important: If you are an existing user of EOS Online Subsystem, you will need to set your API version depending on the behaviour you want after upgrading to this release.
  • In API version 2020-12-02 and later, the JoinSessionAccepted event fired from the EOS SDK is mapped onto OnSessionUserInviteAccepted instead of automatically joining the session for you. See API versions for more details.
  • In API version 2020-12-09 and later, sessions that are not ready to accept client connections will no longer be returned in search results by default. This means that clients will only find sessions they can actually connect to. If you want to retrieve all sessions or non-listening sessions, refer to API versions on how to do this.
  • Fixed an issue where IOnlineIdentity::GetUserPrivilege would fire the provided delegate more than once.
  • Fixed an issue where the Developer Tool could not be extracted due to the invocation not using absolute paths. It's likely this occurred when the EOS SDK was located on a different drive to Unreal Engine.
  • Fixed an issue where the OnPartyInviteReceived event would not fire if the user was a member of any party, rather than the check being only for the party the invite was sent for.
  • Fixed CPU trace and counter support for Unreal Engine 4.24, so profiling in that engine version will now return EOS statistics.
  • Updated documentation on profiling to include the alternate command line required in Unreal Engine 4.24.

2020.12.01

This release fixes a critical issue with the Free Edition, where the editor would crash if you had an older version of the EOS SDK installed:

  • The Free Edition now requires that you install EOS SDK 1.10. It will no longer accept older versions of the EOS SDK.
  • Fixed an issue where the editor would crash if the EOS SDK DLL could not be found at startup. This was most commonly encountered by Free Edition users when the version of the EOS SDK they had installed was different to the version of the EOS SDK that the Free Edition was built against.
  • Fixed an issue to ensure that the EOSSDK.Build.cs script in the Free Edition will only accept a matching version of the EOS SDK, rather than allowing a version other than the one the Free Edition binaries were built with.
  • Fixed an issue to ensure the project Makefile is correctly invalidated if the EOS SDK is ever renamed or deleted. If you move or delete the EOS SDK you have installed, Unreal Engine will now correctly re-scan for the installed EOS SDK.
  • Added PDB files to the Free Edition to resolve an issue that occurs when compiling games on the command line through UBT.
  • Added an automated test to the test suite that ensures the editor launches correctly when the EOS SDK DLL is not available at runtime.
  • Added an automated test to the test suite that builds the Example Project against the Free Edition, and ensures that the editor launches successfully both with and without the EOS SDK DLL present at runtime.

2020.11.27

This release adds support for the latest EOS SDK and fixes a few issues:

  • Added support for EOS SDK 1.10.
  • Added support for the IOnlineLobby interface. This custom interface provides generalized access to the lobby APIs outside the existing session and party interfaces. Support for this API is currently experimental and it may change in incompatible ways in a future release.
  • The build system now checks for the existence of dependent files before compilation, to ensure that all of the required dependencies are present on disk. This prevents issues caused by a corrupt or partially extracted SDK installation.
  • Fixed an issue that prevented macOS games from being able to be packaged.

2020.11.13

This release significantly improves the editor experience and fixes a few issues:

  • You can now launch the Developer Authentication Tool from the EOS dropdown in the editor. This will automatically extract the Developer Authentication Tool from the SDK if needed, and then start it.
  • You can now toggle "login before play-in-editor" from the EOS dropdown. When this setting is turned on, each play-in-editor instance will be authenticated against the Developer Authentication Tool before it starts. This is useful for testing online behaviour in game maps where AutoLogin won't be called (such as gameplay maps that would normally occur after the main menu). For more information, refer to Using the Developer Authentication Tool.
  • You can now hide the EOS button from the toolbar under Editor Preferences 🡒 Epic Online Services.
  • Sessions can now be advertised in the presence system in the Epic Games overlay. This allows players to join and invite other players to sessions that they are in. You must specifically enable this functionality by changing the PresenceAdvertises configuration option. For more information, refer to Joining sessions from the Overlay.
  • The Epic Games Overlay will now appear when launching the game in the editor through "Standalone Game". This means you can now test overlay functionality without creating a packaged build.
  • When launching multiple "Standalone Game" instances through the editor (from the Play dropdown), each instance will correctly use a different context from the Developer Authentication Tool. This makes "Standalone Game" behave the same as "Selected Viewport" when it comes to authentication.
  • Added performance counters to so that you can view how long EOS operations are taking on the main thread in Unreal Insights, as well as how many network packets and bytes are being sent over EOS P2P. For more information, refer to Profiling with Unreal Insights.
  • The plugin will now emit an error to the Output Log if you attempt to use CreateSession or UpdateSession, but you haven't enabled the EOS networking driver.
  • Fixed an issue where Android shipping builds would crash due to a bug in a third-party Android library.
  • Fixed an issue where custom properties would not be set when a user's presence status was updated.

2020.10.31

This release fixes a critical bug and adds support for the FindFriendSession function:

  • Added support for the IOnlineSession::FindFriendSession function. Refer to Reconnecting to a session on how to use this.
  • Fixed an issue which would prevent P2P network connections working in Shipping builds of games.

2020.10.29

This release adds support for EOS SDK 1.9, extends cross-platform party invites to all authentication modes and fixes a wide range of bugs:

  • Breaking Change: The ToString() function of FUniqueNetIdEOS now only returns the product user ID (without the Epic account ID). This makes the result unique per user and suitable to use as a key for TMap<>. Previously you could get two strings for the same user (one with the Epic account ID and one without) depending on where you obtained the user ID from. To access the Epic account ID going forward, you can either use ToDebugString, cast the instance to FUniqueNetIdEOS and use GetEpicAccountIdString(), or query for the full user account using the user/identity APIs and obtain it from the user attributes.
  • Added support for EOS SDK 1.9. This does not yet add support for the new modding APIs.
  • Added support for Unreal Engine 4.26 Preview 4. No changes were required to support this release, but Preview 4 has now been tested with this release of the plugin. Support for Preview 4 is only available for Marketplace Edition users building from source.
  • Added support for the IOnlinePartySystem::RestoreInvites function. You should call this when your game starts up and is ready to display invite notifications in-game.
  • Added an internal type TUserIdMap<> which is a variant of TMap<> that uses unique net IDs as it's keys. This type ensures that the map is unique per each ID value, rather than each pointer (when using TSharedPtr<const FUniqueNetId>). Although this is an internal type, it is a header-only implementation which you may find useful to copy into your own project if you're managing unique net IDs in C++. It is located in OnlineSubsystemEOS/Shared/UniqueNetIdEOS.h for Marketplace Edition users.
  • Cross-platform party invites now work in NoEAS and EASOptional authentication modes. Previously they were unnecessarily restricted to EASRequired.
  • Fixed an issue where a player's login would expire, and the plugin did not refresh credentials in response to the authentication expiry event. The plugin now attempts to refresh credentials when needed so that users do not get logged out.
  • When the EOS SDK signs out a user (due to credentials not being refreshed), the logout event will now be fired on IOnlineIdentity. Once the EOS SDK signs out a user, no further API calls will work until you sign the user in again.
  • Fixed an issue where calling IOnlineFriends::ReadFriends in NoEAS and EASOptional authentication modes would cause an error to be logged to the console, if the user was not signed into an Epic Games account.
  • Fixed an issue where FOnlinePartyIdEOS was relying on the lifetime of the EOS_LobbyId pointer, which was managed by the EOS SDK. In some circumstances, this led to the FOnlinePartyIdEOS referencing an invalid pointer after it was initially obtained.
  • Fixed an issue where the Discord authentication module did not correctly reference the Discord plugin for linking.
  • Fixed an issue where the IOnlinePartySystem::SendInvitation function could fire it's delegate twice if the underlying EOS SDK call failed.
  • Fixed an issue where the IOnlinePartySystem::SendInvitation function could fail if you called it too soon after creating the party. It will now retry up to 3 times with exponential backoff.
  • Fixed an issue where the IOnlinePartySystem::RejectInvitation function did not correctly compare user IDs and thus it would never reject invitations.
  • Fixed an issue where the IOnlinePartySystem::RejectInvitation function did not remove invites from the plugin's local cache of invites.
  • Fixed an issue where the IOnlinePartySystem::RejectInvitation function could log an error if the online subsystem shutdown before the call was able to complete.
  • Fixed an issue where invitation events could be fired even if the user is already in the party that the invitation is for. Instead, these events are now silently discarded.
  • Fixed a few areas of the plugin where local EOS structures and pointers were not initialized correctly. This could impact shipping builds. As part of this process, an Unreal Engine C++ linter was implemented and added to the source code repository. If you are a Marketplace Edition user and you are writing code directly against the EOS SDK, the source code for the linter is available so you can adapt it to check for issues in your own C++ code.
  • Fixed the URL of the "Getting Started" link in the License Manager for EOS Online Subsystem (Free Edition). This now links correctly to the documentation.
  • Added unit tests around sending and rejecting party invitations.

2020.10.17

This release adds features to authentication, improves documentation and fixes platform specific issues:

  • Added Discord authentication to the repository. Due to Discord Game SDK licensing restrictions, Discord authentication is only available to Marketplace Edition users that are using a source-based version of the plugin.
  • Added exchange code authentication support for games shipping on the Epic Games store. This is experimental so if you run into any issues, please notify support.
  • Documented how to enable Steam and Discord authentication in games.
  • Documented the supported attribute types when creating or updating sessions.
  • Documented how to handle connection failures when using the session subsystem.
  • Documented how to uninstall the plugin if you need to remove it from your project.
  • Fixed a crash that would occur in packaged Nintendo Switch builds when the game could not load the EOS SDK.
  • Fixed a crash that would occur in iOS games, caused by incorrect linking settings.
  • Fixed a crash that would occur when you attempted to use server travel. Seamless server travel now works as expected, though non-seamless server travel does not. Epic Games has recommended seamless server travel since at least 2015, so if you have a particular need to use non-seamless server travel in your game, please reach out to support in the Discord server.
  • Fixed an issue where the cache path was incorrectly set on iOS, preventing the SDK from starting up correctly.
  • Fixed an issue where ULocalPlayer::GetPreferredUniqueNetId would always return null.
  • Fixed an issue where building for Android would fail if you were using the 1.8 SDK.
  • Fixed an issue where for some games packaged for Android, the build process would fail due to missing (optional) files.
  • Moved the Steam authentication implementation and the default platform implementation into their own modules. This change should not impact any developers, unless you're referencing plugin internals.

2020.10.09

This release fixes a few critical bugs, including an issue that would prevent packaging projects using the Free Edition:

  • Fixed an issue where Free Edition users could not package projects, due to EOSSDK not being included in the list of dependency module names for OnlineSubsystemEOS.
  • Fixed an issue where the engine would call AutoLogin when starting a multiplayer session. For accounts that were not logged into an Epic Games account in EASOptional mode, this would cause an Epic Games login prompt to appear, as the AutoLogin call was treated as a "link an Epic Games account" request.
  • Fixed Unreal Engine 4.24 compatibility for source builds of the Marketplace Edition.
  • Clarified documentation on where the plugin expects the EOS SDK to be installed.

2020.10.05

This release focuses on fixing bugs and issues identified in the last major release:

  • Fixed a crash that would occur when using unsupported session attribute types with CreateSession or UpdateSession.
  • Fixed a crash that would occur if you left either ClientId or ClientSecret unset in the config.
  • Fixed listen servers being incorrectly detected as dedicated servers.
  • Fixed the product user ID not being available for API calls when running as a dedicated server.
  • Fixed a crash that would occur if the EOS online subsystem failed to initialize, but then the engine created a UEOSNetDriver for a network connection. This could happen if you configure the plugin incorrectly, and then attempt to start a multiplayer game in the editor.
  • Fixed dedicated servers not having their ports registered correctly with the EOS Sessions service.
  • Skip calling the player metrics APIs for the dedicated server (as it is not a player).
  • Support falling back to local IP addresses when connecting to a dedicated server in development. This allows you to test dedicated servers in the editor without any additional configuration.
  • Fixed connections to dedicated servers not working correctly if the server was listening on a port other than 7777.
  • Prevent two local users signing in with the same EOS account. This is not a supported scenario and may have previously introduced other issues. Now the authentication system will prevent a user from signing in if there is already another local user signed into that account.

2020.10.03

This is a major new release with tons of new features and improvements. With this release, the plugin now supports all Epic Online Services APIs. It's also the first official release of the Free Edition!

  • The Free Edition is now available! You can download it from the License Manager.
  • User Cloud (Player Data Storage) is now implemented. You can use this interface to store and retrieve player data across platforms.
  • Title File (Title Storage) is now implemented. You can use this store and retrieve game-specific data such as DLC downloads, etc.
  • Achievements, stats and leaderboards are now all implemented.
  • Metrics are now implemented. This comes in the form of an improvement to the sessions implementation, as it now makes the appropriate metrics API calls when players join or leave sessions.
  • Linux is now supported as a platform.
  • The plugin now adds a dropdown to the Level Editor Toolbar, allowing you quick access to settings and documentation.
  • You can now configure the plugin settings through the "Project Settings" window instead of editing .ini files.
  • Fixed an issue where the unit tests module could prevent Hot Reload from working for developers using a source version of the plugin.

2020.09.23

This release brings the following changes:

  • EOS SDK 1.8 is now supported. The new Title Storage API is not yet supported.
  • EOS SDK configuration has now been converted to an external module (EOSSDK) instead of requiring you to call EOSSDK.AddToModule(...). This change only impacts you if you are linking against the EOS SDK in C++ modules (for example, if you have custom code that uses the EOS SDK APIs directly). You should now add EOSSDK to your PrivateDependencyModuleNames instead.
  • Significant refactoring in the way the plugin handles string values and IDs, to fix some hard to diagnose heap corruption bugs.
  • Developers using the plugin in a source build of the engine can now enable Steamworks support by adding ProjectDefinitions.Add("ONLINE_SUBSYSTEM_EOS_ENABLE_STEAM=1"); to their .Target.cs files. The previous way of configuring plugin build behaviour through environment variables is deprecated and will be removed in a future version. If you are using the plugin from the Marketplace, the Free Edition or using the plugin source code with an engine installed through the Epic Games Launcher, this change does not impact you (Steamworks support is always enabled in those builds).
  • The ProductName and ProductVersion configuration values now have default values, to allow the EOS SDK initialize even when not fully configured yet.
  • Significant work has been done to add automated tests (with code coverage) to the plugin. This will allow us to improve reliability and stability as future versions are released.

2020.09.16

This release brings the following changes:

  • Android is now supported. This includes support for signing in with an Epic Games account.
  • Nintendo Switch is now supported for registered Nintendo Switch developers using a source version of the plugin. If you are currently using binaries from the Marketplace through the Epic Games launcher and are developing for Nintendo Switch, please follow the instructions in the License Manager to access the Nintendo Switch support.
  • Improvements to documentation, including the addition of video guides on how to configure the plugin.

2020.09.13

This release brings the following changes:

  • Developers can now override the UMG widgets used in the Authentication Graph. Refer to the documentation on customing the login UI for more information.
  • The Redpoint Games License Manager can now be used to manage your access to source code and support (instead of direct messaging receipts on Discord).
  • The networking driver can now be used for both P2P and IP-based connections. The documentation has been updated to recommend developers enable the networking driver in all games.
  • Fixed an issue where the authentication graph would crash if the map changed between starting the authentication process and it attempting to display UI.
  • Fixed an issue where an EOS account could not be created if signing in with an Epic Games account for the first time.
  • Allow the native platform library loaders to override the default authentication graph. This is used on console platforms to replace the authentication graph entirely.
  • Fixed an issue where retrieving the friends list would fail if an Epic account didn't have any friends (instead of it returning an empty friends list).
  • Added support for reading and writing party and party member attributes in the party interface.
  • Added support for firing the party member joined/left/promoted events in the party interface.
  • Added support for firing the party data and party member data events in the party interface.
  • Along with the networking driver update to support both P2P and IP-based connections, the session interface will now automatically use the public IP address of the server (as detected by the EOS backend) when listening on an IP-based connection. This will be the true public IP address of the server (as you would find out through "What's my IP" services).
  • Added support for the IOnlineUser interface, which can be used to lookup arbitrary user accounts and resolve external platform IDs to product user IDs (such as converting a Steam user ID into an EOS product user ID).

2020.08.29

This release brings the following changes:

  • Fix issues with the authentication graph showing UMG widgets.
  • For customers with source code access, you can now access the headers of internal classes under the Shared/ folder.
  • Improved compatibility with Unreal Engine 4.24.
  • Added support for modifying how the EOS SDK is loaded on console platforms.
  • Simplified linking against the EOS SDK in other modules, with EOSSDK.AddToModule now available in .Build.cs files.
  • Added support for using EOS SDK 1.7 (instead of 1.7.1 if you are still on an older version).
  • Removed Win32 from the list of whitelisted platforms in the .uplugin file, since Win32 support is no longer shipped in Unreal Engine itself.
  • The plugin has been updated to use the new versioning scheme that we are moving to across all of our products.

1.25.0 (25th August 2020)

Initial release.