Using the Anti-Cheat interfaces

20 mins to read

The Anti-Cheat Client interface supports the Windows, Mac, and Linux platforms and requires a 64-bit operating system installation.

To use the Anti-Cheat interface(s), you must:

  1. Review and adhere to the Development Prerequisites.
  2. Determine your network architecture and client policy type.
  3. Configure your client module, anti-cheat integrity tool, and Anti-Cheat Bootstrapper executable.
  4. (Windows Only) Configure the Windows Service Installer.
  5. Integrate the Anti-Cheat interfaces with your game code:
    1. Establish user identity with the Connect Interface.
    2. Register callbacks for Client-Server or Peer-to-Peer mode.
    3. Set up session notifications.
  6. Confirm the Anti-Cheat interfaces are working properly by going through the Integration Checklist.

Client Module Setup and Updates

At each game start, the anti-cheat bootstrapper fetches the latest configured anti-cheat client module for your game. Updates may include bug fixes and improvements to anti-cheat prevention and detection.

Set Up, Update, and Revert Your Client Module

  1. Go to your Developer Portal.
  2. Click Your Product > Game Services > Anti-Cheat.
  3. Select the appropriate System (Windows, Linux, or macOS) from the dropdown menu.
  4. (For updating and reverting) Test that the module works with your game as expected.
  5. Select Activate Build from the More Options button of the Client Module you want active.

When you need to update your client module with a live game, it is important to test if the new module works as expected in your game before activating it.

Testing a Module
  1. From the list of Client Module Releases in the Developer Portal, select the More Options button of the new Client Module.
  2. Choose Download Config File. This downloads a plain text configuration file to force a test system to download and use the specified anti-cheat module instead of your active one.
  3. Place the downloaded configuration file in the same directory as your game executable with the same name.
    1. For example, if your game’s executable name is MyGame-Win64-Shipping.exe, then the configuration file must be placed in the same directory with the name MyGame-Win64-Shipping.exe.eac.
  4. Start your game as normal with the anti-cheat bootstrapper.
  5. Locate the anti-cheat bootstrapper’s log file.
  6. Verify that the anti-cheat bootstrapper’s log file shows the expected timestamp and indicates that the URL in the configuration file was used.
  7. Run the game through an appropriate testing procedure selected for your game. At minimum, you should be able to successfully connect to a protected multiplayer game session and use any critical functionality like in-game purchasing overlays.
  8. Remove the .eac configuration file when finished so that your test system aligns with your live environment. This .eac file should never be shipped as part of your game distribution.
  9. When you are confident that the new module works as expected in your game, choose Activate Build.
Reverting Your Client Module

You may need to revert to a previous anti-cheat module if you suspect a recent update is causing problems in your game.

Follow the same instructions as you would for an update, but select a previous version instead of the most recent.

Anti-Cheat Service Configuration in Developer Portal

At the top of the anti-cheat service page in the EOS Developer Portal, two configuration statuses are displayed. Client Protection indicates whether the anti-cheat client module and protection are being delivered through the anti-cheat bootstrapper when each player starts the game. Server Kicks indicates whether the anti-cheat protection is being enforced in protected game sessions and players who are not running the anti-cheat or have a violation will be marked for removal through the appropriate SDK callback.

Clicking the Configure button will allow you to choose between three different configuration options.

  • Enable all

    • This configuration should be used in normal operation. The anti-cheat client module will be delivered at game start and its presence will be enforced during protected game sessions.
  • Enable Client protection while Server kicks is disabled

    • This configuration may be used temporarily if there is a problem that is causing too many players to be removed from protected game sessions with anti-cheat errors. The anti-cheat client module will be delivered at game start but its presence will not be enforced during protected game sessions so it will not be effective in preventing or detecting cheats.
  • Disable all

    • This configuration may be used temporarily in case of emergency such as a crash related to anti-cheat affecting many players that cannot be solved by reverting to an earlier anti-cheat client module. The anti-cheat client module will not be delivered at game start and its presence will not be enforced during protected game sessions. Reverting to an earlier anti-cheat client module is always preferable instead if possible. If you use this configuration setting you must enable the Client Protection only for a transition period of several hours before returning to the Enable all state to avoid large numbers of players being suddenly removed from protected game sessions.

Anti-Cheat Integrity Tool Configuration

Anti-cheat must be able to verify that critical game files on each player’s machine match the files you shipped as a developer. You can use the anticheat_integritytool included with the SDK’s EOS_AntiCheatTools package to configure file integrity checks.

The Anti-Cheat Integrity Tool is a command line tool designed to be easily added at the end of your build process that generates the following two files:

  • A signed list (catalog) of hashes for game files that you can define using a config file. At runtime, the anti-cheat service loads this signed catalog and confirms the content files match as they are accessed.
  • A signed runtime configuration for the client-side anti-cheat, allowing for the developers to configure certain product-specific settings.

Because game files are verified upon access, the tool does not prevent cataloged files from being deleted. If a critical file is missing from disk then the game code is responsible for handling it appropriately.

If the catalog file itself or a cataloged file it covers has been modified and is then loaded, the game client will automatically be blocked from protected multiplayer sessions. However, the game will not be prevented from running in offline, solo, or unprotected modes which are outside the scope of anti-cheat protection.

You must run the tool for every game release or update that operates with anti-cheat enabled. You should configure it to run automatically for every shipping