Are you a Closed Beta partner? If you are not participating in the Closed Beta release, you can access documentation by using your Epic Games account to sign in to the Knowledge Base.
While the Epic Games Store does not have a formal build certification process, we strongly recommend applying the Epic Online Services and Player Experience test cases below to all games and updates released in the Store to ensure the best possible player experience. Crossplay test cases are verified for all games implementing Multiplayer Cross-platform Functionality.
Epic Online Services
Epic Account Services player consent
Games using Epic Account Services require player consent to share data. For games sold in the Epic Games Store, this consent is automatically granted during the purchase flow. However, players have the ability to revoke consent at any time from their Account Connections page. As long as games use the correct CredentialType, players should be directed to grant consent a single time when next launching the game.
Test steps
Sign into an account that is not associated with your Dev Portal Organization
Ensure the game is not listed on the Account Connections page
Launch the game
Complete the consent flow when prompted
Exit and relaunch the game, confirming consent flow is not displayed
Expected Results
The account should be able to proceed into gameplay, without seeing the consent flow a second time; games on the Epic Games Store should use ExchangeCode rather than AccountPortal to ensure correct behavior.
The Epic Account Services application should be in a Verified state by the time your game launches; Unverified applications will prevent accounts outside your organization from granting consent.
Connect Interface access token renewal
The Connect Interface requires games to renew the player's access token on an hourly basis to maintain a connection to Epic Online Services. Games should use the AddNotifyAuthExpiration function to be notified when the access token is about to expire, and renew their login. Failure to carry out this renewal process will result in service calls failing once the token expires.
Test steps
Launch the game and complete the initial sign-in flow
Wait for 60 minutes
Attempt to use the Epic Online Services functionality implemented by the game (achievements, multiplayer, Player Data Storage, etc.)
Verify through your game application's local log file that the game client receives the OnAuthExpirationCallback notification from EOS SDK, and successfully refreshes the authentication using the EOS_Connect_Login API
Expected Results
Features of the game using Epic Online Services continue to function as expected after at least 60 minutes have passed.
Offline Mode support
The Epic Games Launcher allows users to opt into Offline Mode, which will pass the epicusername and epicuserid command-line arguments to the game process on launch, but no Exchange Code is provided, and no Epic Online Services functionality is available to the game, including entitlement checks. Developers may opt to restrict or allow access to any additional content gated by entitlements, or may implement a secure entitlement cache to allow players to proceed offline for a set period.
Test steps
While connected to the Internet, select Enable Offline Mode Browsing in the Settings menu of the Epic Games Launcher
Exit the Launcher, and remove the computer's Internet connection
Restart the Launcher, entering your account's email address to proceed
Launch the game
Expected Results
The game remains stable, and messages the lack of Internet connection to the player when attempting to enter areas of the game that require an active connection.
Sandbox/Deployment ID handling (Publishing Tool products only)
All products configured using the Publishing Tools (SPT) are equipped with a standard set of three sandboxes: Dev, Stage and Live. As static Sandbox ID and Deployment ID values are required to initialize Epic Online Services, we recommend the following implementation to ensure that the build is able to handle being downloaded and used within multiple sandboxes:
Sandbox ID can be obtained from the Epic Games Launcher at launch-time, in the form of the epicsandboxid launch argument provided to all games
Deployment ID can be set within your build in a custom if/switch statement block targeting the expected deployment for the sandbox in question
Test steps
Promote the build from the Dev to Stage sandbox
Sign into an account that owns the game in both the Dev and Stage sandboxes. Note: An upcoming Launcher improvement will add "Dev" and "Stage" labels within the Library; until this release, the two library tiles will appear identical.
Launch the game in the Dev sandbox, and ensure implemented Epic Online Services features act as expected
Exit and relaunch the game in the Stage sandbox, testing the same features
Expected Results
Game features should remain usable across different sandboxes.
Player state should be distinct between sandboxes; if achievements or add-on purchases have only been completed in a single sandbox, they should not be displayed in others.
Player Experience
Unicode character support
Both Windows and Epic Accounts allow players to use characters outside the Latin alphabet in their display names. Games should include users with this configuration in their test pass.
Test steps
Sign into a Windows user account including a non-Latin character
Sign into an Epic Account with a display name including a non-Latin character
Launch the game
Proceed into each game mode and create save data
Exit and relaunch the game
Expected Results
All game modes should function as expected
Save data should remain accessible after relaunching the game
Redistributable installation
The Epic Games Store does not currently handle automatic installation of common redistributables like DirectX or Visual C++; partners must handle the installation of any prerequisites needed for their games. Refer to the Game Prerequisites Installer Options documentation for more information around the options available. The Epic Games Launcher will install prerequisite redistributables configured using the PrereqIds argument when uploading builds using the BuildPatchTool. However, players may choose to uninstall these redistributables at any time; games should message the missing prerequisites and provide players with the information needed to address the issue.
Test steps
Install the game, including any configured redistributables. Note: The Launcher will treat return codes 0, 1638 and 3010 as success.
Launch the game, and proceed into gameplay
Uninstall the required redistributables
Attempt to launch the game
Expected Results
The game should inform the player of the missing redistributable(s) needed
After successful installation in Step 1, the Launcher will not reattempt installation of the same redistributable with later installations of the game; to retest the full flow, you will need to remove the row(s) containing installed prerequisites from the following file:
C:\ProgramData\Epic\EpicGamesLauncher\BuildPatchServicesLocal.ini
Language and locale settings
Games have access to three key settings detailing a player's location, language, and locale:
Account region is used by the store to determine which offers, prices and age ratings a player sees. For games using regional builds and launch times tied to local time zones, account region is also used to drive these features. This region code can be obtained for a player through the Country property of EOS_UserInfo.
Preferred communication language is used to determine which language to use when contacting the player over email. This language code can be obtained for a player through the PreferredLanguage property of EOS_UserInfo.
Launcher language is used to determine which language to display within the Epic Games Launcher. This language code is provided to all games via the epiclocale argument when launching a game:
Launcher Language |
epiclocale argument |
---|---|
Arabic |
ar |
English |
en-US |
German |
de |
Spanish (Spain) |
es-ES |
Spanish (Latin America) |
es-MX |
French |
fr |
Italian |
it |
Japanese |
ja |
Korean |
ko |
Polish |
pl |
Portuguese |
pt-BR |
Russian |
ru |
Thai |
th |
Turkish |
tr |
Chinese (Simplified) |
zh-Hans |
Chinese (Traditional) |
zh-Hant |
Test steps
Set the Epic Games Launcher Language setting to a language supported by the game
Launch the game
Expected Results
The game automatically sets the correct display language, or allows the player to freely switch between supported languages via in-game options
The game is able to handle and parse all command line parameters provided by the Launcher without crashing
Build update size optimization
As part of the build upload process, BuildPatchTool automatically compares the data in the build to previous uploads, and optimizes the generated patches to reduce the download size for existing players.
This process has been improved with BuildPatchTool v1.5.0 , and data is now compared across all artifacts tied to a product, rather than the single artifact of original upload. We strongly recommend using the latest version of BuildPatchTool available for download in Dev Portal.
Test steps
Install the current version of the game using a staging artifact or private sandbox. Note: The ability to download from a private sandbox is only available to partners participating in the Self-Publishing Tools Closed Beta.
Set the next update of the game live in the test environment
Restart the Launcher, and observe the download size of the update
Expected Results
The update should result in a download size roughly representative of the binary delta between the builds, rather than a full redownload of the game
The download size for the update between two specific build versions can be further optimized by using BuildPatchTool's BinaryOptimiseDelta mode; this command should be run with an empty CloudDir folder, and may take additional time to complete processing compared to previous uploads for the game
Launcher Cloud Saves
We encourage all games that save data locally to take advantage of the Launcher Cloud Saves feature. For detailed test cases, please refer to the Cloud Save Setup and Testing page.
Crossplay
At Epic Games we want to ensure players can play with their friends, regardless of which store they use to purchase a game. Therefore, all titles coming to the Epic Games Store that have online multiplayer must support cross-platform multiplayer with all other PC storefronts. Cross-play with other non-PC platforms, like consoles, is optional, but encouraged. Learn more: Multiplayer Cross-platform Functionality.
The Epic Games Store does not require that you implement crossplay via any particular service nor account system. Epic provides Epic Online Services and Epic accounts free of charge as one potential solution. Other third party solutions or publisher-based solutions are supported and welcomed. Where supported, multiplayer functionality on Epic Games Store must be at parity with other PC storefronts. Please use the checklist below to verify you meet the crossplay criteria and contact your Business Development Manager or Technical Account Manager in a timely fashion if you have any questions or concerns about these criteria. They can also share more detailed guidance on how you can implement crossplay functionality across PC storefronts.
Please be aware that you must provide a crossplay enabled build at least four weeks prior to any public launch to allow sufficient time for independent testing and verification.
Server browser / matchmaking
If server browser or matchmaking is supported, players must be able to connect across storefront boundaries by default (e.g. without having to manually opt-in through a menu option).
Test steps
Have one or more players launch the game on the Epic Games Store
Have one or more players launch the game on another storefront (e.g. Steam)
If the game has a server browser:
Have one player on the Epic Games Store create a game
Have the other players on the Epic Games Store and other storefront join the game
If the game has matchmaking:
Have all players across both storefronts look for a match at the same time
Expected Results
All Epic Games Store and other PC store (e.g. Steam) games should be listed together
An Epic Games Store player can join a game hosted via an Epic Games Store or another PC platform via server browser / matchmaking
A player on another PC platform can join game hosted via an Epic Games Store or another PC platform via server browser / matchmaking
Game session invites
If direct game session invites are supported, invites must be supported across storefront boundaries. Where supported, in-game friend functionality on Epic Games Store must be at parity with other PC storefronts. These invites should work bi-directionally.
Test steps
Have one or more players launch the game on the Epic Games Store
Have one or more players launch the game on another storefront (e.g. Steam)
Create friend relationships between two or more players across storefronts through whatever means the game supports (ie. Epic accounts, Discord, custom accounts, etc.)
Have one player send a game session invite to another player playing on another storefront
Expected Results
An Epic Games Store player has a way to send a direct game invite to a friend playing on another PC platform
A player on another PC platform has a way to send a direct game invite to a friend playing on the Epic Games Store
Epic Account Services
If your game uses Epic Account Services to provide crossplay functionality, please use the following checklist to validate all required scenarios are covered. Note that while this is one of the ways you can implement crossplay, it is not required and you are welcome to implement any other solution of your choice.
Steam account linking
If a player has never linked their Steam and Epic accounts, the game should prompt for account linking if a player chooses to authenticate to Epic Account Services using their Steam account.
Test steps
Launch the game on Steam
Trigger the in-game Epic Account linking flow (e.g. through a menu option)
Expected Results
Steam account linking is requested if not already linked
Steam account re-linking
If a Steam account is unlinked from a player's Epic account, the game should offer players in-game UI to reconnect their Steam and Epic accounts (for example, through a "Link Epic Games Account" button).
Test steps
Unlink an existing Steam account on the Accounts tab at https://www.epicgames.com/account/connections
Launch the game on Steam
Trigger the in-game Epic Account linking flow (e.g. through a menu option)
Expected Results
Steam account linking is re-requested
Epic Account Services consent on Steam
As part of the Epic Account Services login flow, users will be prompted for consent to share their account information with your game/application. This prompt happens as part of the Auth Interface login. If a player has previously connected their Steam and Epic accounts, but Epic Account Services application consent for the game has not been provided yet, the EOS SDK will automatically prompt the user for consent during the Auth Interface Login API call.
Test steps
Launch the game on Steam
Trigger the in-game Epic Account authentication flow
Expected Results
Epic Account Services application consent requested if not already provided
Epic Account Services re-consent on Steam
Through the Epic account management page, users can review the list of applications they have given data sharing consent to. On this page, users may also revoke access to any of the applications. If application consent is revoked, the user will be prompted for consent the next time they attempt login within your game application.
Test steps
Revoke consent to the game on the Apps tab at https://www.epicgames.com/account/connections
Launch the game on Steam
Trigger the in-game Epic Account authentication flow
Expected Results
Epic Account Services application consent re-requested