Skip to main content

Setup for Windows

Introduction#

The Windows version of the Antidote SDK is compatible with various Unreal Engine versions:

  • 5.3: supported
  • 5.2: supported
  • 5.1: supported
  • 5.0: supported
  • 4.27: supported
  • 4.26: supported
  • 4.25 and older versions might be supported, but these haven't been officially tested
note

Only C++ projects are currently supported. Blueprint projects are not yet supported.

Setup#

Unreal#

Here's how to integrate the Antidote SDK with your Unreal Engine game on Windows:

  1. Download the latest version of Antidote SDK for Unreal.

  2. If you don't have a Plugins folder yet, create it.

  3. Unzip the downloaded file

  4. Copy the folder AntidoteSDK into your project's Plugins folder. The result will be: /YourProject/Plugins/AntidoteSDK/.

  5. Generate the project Files.

  6. Close the editor.

  7. Recompile the project in Visual Studio.

  8. Add AntidoteSDK as a dependency in your project's build file. Example:

    YourProject.Build.cs
    using UnrealBuildTool;
    public class YourProject : ModuleRules
    {
    public YourProject(ReadOnlyTargetRules Target) : base(Target)
    {
    PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
    PublicDependencyModuleNames.AddRange(new string[] {
    "Core",
    "CoreUObject",
    "Engine",
    "InputCore",
    "HeadMountedDisplay",
    // this line adds AntidoteSDK as a dependency
    "AntidoteSDK",
    // this is required for the watermark
    "UMG"
    });
    }
    }
  9. In your GameMode's BeginPlay, initialize the SDK with the desired options. Example:

    Example: YourProjectGameMode.cpp
    // (...) <-- Other Includes
    #include "Antidote.h"
    #include "AntidoteWatermark.h"
    void YourProjectGameMode::BeginPlay()
    {
    Super::BeginPlay();
    // (...) <-- Some Awesome Configuration
    // Antidote Initialization
    TMap<FString, bool> Options;
    Options.Add(TEXT("validate"), true);
    Options.Add(TEXT("showWatermark"), false);
    UAntidote::Setup(Options);
    UAntidote::Load();
    }
    • validate - verify that the player is authorized to launch the game, and terminate if they aren't
    • showWatermark - enable watermarking
  10. To enable Watermarking, one more step is required.

    1. Add the following to each of your GameMode classes:

      YourProjectGameMode.h
      class AYourProjectGameMode : public AGameModeBase
      {
      GENERATED_BODY()
      public:
      // (...) <-- Some Awesome Existing Code
      TSubclassOf<class UAntidoteWatermark> watermarkClass;
      virtual void BeginPlay() override; // <---
      };
    2. On your GameMode base class add this code:

      YourProjectGameMode.cpp
      // (...) <-- Other Includes
      #include "Antidote.h"
      #include "AntidoteWatermark.h"
      YourProjectGameMode::YourProjectGameMode()
      : Super()
      {
      // (...) <-- Some Awesome Existing Code
      // Find and set the watermarkClass variable
      static ConstructorHelpers::FClassFinder<UAntidoteWatermark> wmClassFinder(TEXT("/AntidoteSDK/BP_Watermark"));
      watermarkClass = wmClassFinder.Class;
      }
      void YourProjectGameMode::BeginPlay()
      {
      Super::BeginPlay();
      // (...) <-- Some Awesome Existing Code
      // Antidote Initialization
      TMap<FString, bool> Options;
      Options.Add(TEXT("validate"), true);
      Options.Add(TEXT("showWatermark"), true);
      UAntidote::Setup(Options);
      // Watermark Initialization
      if (watermarkClass)
      {
      auto watermark = CreateWidget<UAntidoteWatermark>(GetWorld(), watermarkClass);
      watermark->AddToPlayerScreen(9999);
      UAntidote::SetWatermark(watermark);
      TMap<FString, float> Settings;
      Settings.Add(TEXT("textSpeed"), 70.f);
      Settings.Add(TEXT("changePositionSpeed"), 15.f);
      UAntidote::ConfigureWatermark(Settings);
      UAntidote::EnableWatermark(FLinearColor(1.0f, 0.0f, 0.0f, 0.8f));
      UAntidote::ChangeWatermarkBehaviour(UAntidoteWatermark::BehaviourType::TICKER);
      }
      UAntidote::Load();
      }
note

If you have multiple GameModes in your project, you have to add the watermark initialization code to each.

Game Events#

Events can be emitted during gameplay to track once-off events, and the duration of long-running events. These can be viewed on the session recording. To emit an event:

UAntidote::SendEvent(TEXT("action"), TEXT("eventName"));

where action can be one of the following:

ActionDescription
startmark the start of a long-running event (e.g. boss_battle)
endmark the end of a long-running event (e.g. boss_battle)
onceemit a once-off event (e.g. collected_powerup)

Tips & Troubleshooting#

How to create a GameMode Class#

  1. Go to Unreal Editor.
  2. Click File/New C++ Class.
  3. Scroll down, select GameMode (Base class of the heads-up display).
  4. Click Next.
  5. Set a Name (e.g YourProjectGameMode).
  6. Click Create Class.
  7. Go to ProjectSettings/Maps & Modes.
  8. Set GameMode to your custom GameMode.

Unreal Editor doesn't start or shows an error regarding a plugin is not found#

  1. Close Unreal Editor.
  2. Open the project in Visual Studio.
  3. Clean Solution.
  4. Rebuild Solution.
  5. Open the project in Unreal Editor again.