Skip to main content

Setup for Windows

Introduction

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

Engine VersionSupport
5.0 – 5.7✅ Supported
4.26 – 4.27✅ Supported
4.25 and older⚠️ Not 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"
});
}
}
  1. 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
  2. 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.