Skip to main content

Setup for Android

Introduction#

The Android 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 Android:

  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("showTouches"), 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
    • showTouches - display user touches on screen
    • 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("showTouches"), 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.

Shipping your game#

Antidote SDK requires internet connectivity to verify the user session. If you are exporting your game for Android, please make sure to enable android.permission.INTERNET in your AndroidManifest.xml.

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 the 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.

How to enable internet permission on Android#

By default, if Unreal detects that you are using a network API, it will enable the INTERNET permission in your AndroidManifest.xml. Unfortunately this detection sometimes fails. In such cases we can force the permission, following the steps below:

  1. Go to Edit/Project Settings.
  2. Under Platform, select Android.
  3. Go to Advanced APK Packaging.
  4. Add the extra permission android.permission.INTERNET.
Force Internet Access Permission