Links
Comment on page

Unreal Engine

Plugin installation

The SDK is available in GitHub repository. Download the Source code (zip) of latest release. Unzip the archive and copy DTDAnalytics folder to the Plugins folder of your project.
For a C++ project type, add the DTDAnalytics name to the list of dependency module names to the <module_name>.Build.cs file of the module in which you plan to use the plugin.
Example:
PublicDependencyModuleNames.Add("DTDAnalytics");

Data types

class UDTDAnalyticsLibrary

A class that implements analytic methods.
Header file:
#include "DTDAnalytics/Public/DTDAnalyticsBPLibrary.h"

class UDTDUserCardLibrary

A class that implements user card methods.
The class header:
#include "DTDAnalytics/Public/DTDUserCardBPLibrary.h"

enum class EDTDTrackingStatus : uint8

SDK tracking status.
Header file:
#include "DTDAnalytics/Public/DTDTrackingStatus.h"
Values:
  • Unknown = 0 - leave tracking unchanged
  • Enable = 1 - tracking enabled
  • Disable = 2 - tracking disabled
Example:
EDTDTrackingStatus TrackingStatus = EDTDTrackingStatus::Enable;

enum class EDTDLogLevel : uint8

SDK logging level.
Header file:
#include "DTDAnalytics/Public/DTDLogLevel.h"
Values:
  • Unknown = 0 - leave logging level unchanged
  • No = 1 - logging disabled
  • Error = 2 - logging of errors
  • Warning = 3 - logging of warnings and errors
  • Info = 4 - logging of information messages, warnings and errors
  • Debug = 5 - logging of debugging messages, informational messages, warnings and errors
Example:
EDTDLogLevel LogLevel = EDTDLogLevel::Info;

enum class EDTDAccrualType : uint8

Types of resource accumulation.
Header file:
#include "DTDAnalytics/Public/DTDAccrualType.h"
Values:
  • Earned = 0 - earned resources
  • Bought = 1 - purchased resources
Example:
EDTDAccrualType AccrualType = EDTDAccrualType::Earned;

enum class EDTDSocialNetwork : uint8

Predefined social media.
Header file:
#include "DTDAnalytics/Public/DTDSocialNetwork.h"
Values:
  • Facebook = 0
  • Vkontakte = 1
  • Twitter = 2
  • Googleplus = 3
  • Whatsapp = 4
  • Viber = 5
  • Evernote = 6
  • Googlemail = 7
  • Linkedin = 8
  • Pinterest = 9
  • Reddit = 10
  • Renren = 11
  • Tumblr = 12
  • Qzone = 13
Example:
EDTDSocialNetwork SocialNetwork = EDTDSocialNetwork::Facebook;

enum class EDTDGender: uint8

User gender.
Header file:
#include "DTDAnalytics/Public/DTDGender.h"
Values:
  • Unknown = 0
  • Male = 1
  • Female = 2
Example:
EDTDGender Gender = EDTDGender::Female;

enum class EDTDReferralProperty : uint8

Referral properties.
Header file:
#include "DTDAnalytics/Public/DTDReferralProperty.h"
Values:
  • Source = 0
  • Medium = 1
  • Content = 2
  • Campaign = 3
  • Term = 4
Example:
EDTDReferralProperty ReferralProperty = EDTDReferralProperty::Source;

struct FDTDOptionalInt32

An optional parameter of int32 type
Header file:
#include "DTDAnalytics/Public/DTDOptionalInt32.h"
Member
Type
Description
HasValue
bool
Option label
Value
int32
Parameter value
For your convenience, we implemented the conversion constructor:
FDTDOptionalInt32(int32 value) : HasValue(true), Value(value) {}
Example:
FDTDOptionalInt32 OptionalParameter = 1;

struct FDTDOptionalString

An optional parameter of FString type.
Header file:
#include "DTDAnalytics/Public/DTDOptionalString.h
Member
Type
Description
HasValue
bool
Option label
Value
FString
Parameter value
For your convenience, we implemented the conversion constructor:
FDTDOptionalString(FString value) : HasValue(true), Value(value) {}
Example:
FDTDOptionalString OptionalParameter = FString("StringValue");

struct FDTDAnalyticsConfiguration

Configuration of the analytics plugin.
Header file:
#include "DTDAnalytics/Public/DTDAnalyticsConfiguration.h"
Member
Type
Description
LogLevel
EDTDLogLevel
Logging level
CurrentLevel
FDTDOptionalInt32
Current level
UserId
FDTDOptionalString
User ID
ApplicationVersion
FDTDOptionalString
Application version (Windows)
TrackingAvailability
EDTDTrackingStatus
Tracking settings
Example:
FDTDAnalyticsConfiguration config;
config.LogLevel = EDTDLogLevel::Debug;
config.CurrentLevel = 3;
config.UserId = FString("CUID");
config.ApplicationVersion = FString("1.2.3");
config.TrackingAvailability = EDTDTrackingStatus::Enable;

FDTDCustomEventParams

Custom parameters of a custom event.
Header file:
#include "DTDAnalytics/Public/DTDCustomEventParams.h"
Member
Type
Description
StringParameters
TMap<FString, FString>
String parameters
IntParameters
TMap<FString, int64>
Integer parameters
FloatParameters
TMap<FString, float>
Real parameters (floating-point numbers)
BoolParameters
TMap<FString, bool>
Boolean parameters
Warning: avoid duplicating keys in parameters of different types, because in native code dictionaries are merged into a single dictionary [string: any].
Example:
FDTDCustomEventParams params;
params.BoolParameters.Add("BoolKey", true);
params.FloatParameters.Add("FloatKey", 3.3);
params.IntParameters.Add("IntKey");
params.StringParameters.Add("StringKey", "StringValue");

struct FDTDStartProgressionEventParams

Parameters of the progression start event.
Header file:
#include "DTDAnalytics/Public/DTDStartProgressionEventParams.h"
Member
Type
Description
Difficulty
FDTDOptionalInt32
Difficulty
Source
FDTDOptionalString
Source
Example:
FDTDStartProgressionEventParams params;
params.Difficulty = 3;
params.Source = FString("Source");

struct FDTDFinishProgressionEventParams

Parameters of the progression completion event.
Header file:
#include "DTDAnalytics/Public/DTDFinishProgressionEventParams.h"
Member
Type
Description
SuccessfulCompletion
bool
Successful completion of the progression (‘false’ by default)
Duration
int32
Duration (if 0, duration is calculated automatically)
Spent
TMap<FString, int64>
Resources spent
Earned
TMap<FString, int64>
Resources earned
Example:
FDTDFinishProgressionEventParams params;
params.Duration = 200;
params.SuccessfulCompletion = true;
params.Earned.Add("CurrencyName1", 1);
params.Spent.Add("CurrencyName2", 2);

Delegates

Header file:
#include "DTDAnalytics/Public/DTDDelegates.h"
Definitions:
DECLARE_DELEGATE_OneParam(FDTDLongListenerDelegate, int64);
DECLARE_DELEGATE_OneParam(FDTDGetterStringDelegate, const FString&);
DECLARE_DELEGATE_OneParam(FDTDGetterBoolDelegate, bool);
DECLARE_DELEGATE_OneParam(FDTDGetterIntDelegate, int32);
DECLARE_DELEGATE_OneParam(FDTDGetterLongDelegate, int64);
DECLARE_DELEGATE_OneParam(FDTDGetterGenderDelegate, EDTDGender);
DECLARE_DELEGATE_TwoParams(FDTDGetterOptionalStringDelegate, bool, const FString&);
DECLARE_DELEGATE_TwoParams(FDTDGetterOptionalBoolDelegate, bool, bool);
DECLARE_DELEGATE_TwoParams(FDTDGetterOptionalFloatDelegate, bool, float);
DECLARE_DELEGATE_TwoParams(FDTDGetterOptionalLongDelegate, bool, int64);
DECLARE_DELEGATE_ThreeParams(FDTDGetterOptionalStringWithKeyDelegate, bool, const FString&, const FString&);
DECLARE_DELEGATE_ThreeParams(FDTDGetterOptionalBoolWithKeyDelegate, bool, const FString&, bool);
DECLARE_DELEGATE_ThreeParams(FDTDGetterOptionalFloatWithKeyDelegate, bool, const FString&, float);
DECLARE_DELEGATE_ThreeParams(FDTDGetterOptionalLongWithKeyDelegate, bool, const FString&, int64);

SDK initialization

SDK initialization without parameters:

Blueprint
Member
Type
Description
appKey
FString
You can find it in the settings of the corresponding application in devtodev (Settings → SDK → Integration → Credentials)
UDTDAnalyticsBPLibrary::Initialize("AppKey");

SDK initialization with parameters:

Blueprint
Member
Type
Description
appKey
FString
You can find it in the settings of the corresponding application in devtodev (Settings → SDK → Integration → Credentials)
config
FDTDAnalyticsConfiguration
Initialization parameters
FDTDAnalyticsConfiguration config;
config.LogLevel = EDTDLogLevel::No;
config.CurrentLevel = 3;
config.UserId = FString("CUID");
config.ApplicationVersion = FString("1.2.3");
config.TrackingAvailability = EDTDTrackingStatus::Enable;
UDTDAnalyticsBPLibrary::InitializeWithConfig("AppKey", config);