Search public documentation:


Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

UE3 Home > Gameplay > Flurry Analytics Gameplay Events
UE3 Home > Mobile Home > Flurry Analytics Gameplay Events

Flurry Analytics Gameplay Events


Flurry is a third party analytics provider that is available for iOS. Their API and service is free to use. We provide an integration in UE3 that makes it easy to add new gameplay events and for them to be uploaded to Flurry. We do not provide the actual SDK, however. Please go to http://www.flurry.com/ for more info on getting setup with an account to download the necessary tools.

Getting Setup to Use Flurry

Flurry Account

In order to use Flurry you will first need to create an account via their website, http://www.flurry.com/. Once you've done this, you will be able to download their SDK and add a unique app entry for your particular game. You will also be able to provide others with access to these stats by sending them email invites in order to create new non-admin accounts.

NOTE: it is typically a good idea to create a developer-only app that can be used during development when generating temporary gameplay events for testing. Once you're ready to ship, then you can create a release-only app which should only be used by the game in a production environment.

UE3 Configuration

Configuration in UE3 is relatively simple and is done with a few ini values. The following should be added to your game's IPhoneEngine.ini:

This is the class name for instantiating FlurryAnalyticsIPhone as the analytics provider in the engine.


This is the config section for configuring Flurry. The first thing to add is your application's API Key. Note that there is both a "ApiKeyDev" and an "ApiKeyRelease". The release version is automatically used when the iOS game is built for production. You should have received your app's API Key when you downloaded the SDK from Flurry's website.

  ApiKeyDev="your dev only key"
  ApiKeyRelease="your production key"

Other configuration values:

* bUseSecureTransport - Set data to be sent over SSL (FALSE by default) * bEnableDebugLogs - Generate debug logs for Flurry support (FALSE by default) * bShowErrorLogs - Log all error info (FALSE by default) * bEnableEventLogs - Log all event info (FALSE by default) * bReportOnClose - Upload session report when app is closed (TRUE by default) * bReportOnPause - Upload session report when app is suspended (FALSE by default)

Adding Gameplay Events

Flurry events are represented as strings only. There are also some limitations on the number of unique events and unique event parameters that are allowed. Refer to the Flurry website for more information about these constraints.

Use Existing Game Stats System

See InstrumentingGameStatistics for more information on how the Game Stats system in UE3 is used for capturing and playing back gameplay events. These same events can also be uploaded to Flurry by creating your own subclass of GameplayEventsUploadAnalytics.uc. This allows the gameplay events that you add to be uploaded directly instead of being cached to disk like the GameplayEventsWriter.uc would do.

Use Raw Flurry Events

Another option is to simply use the Analytics interface to write raw events yourself without using the built in Game Stats system.

This is done by first grabbing the Analytics interface singleton (implemented by the Flurry instance):

  local AnalyticEventsBase Analytics;
  Analytics = class'PlatformInterfaceBase'.static.GetAnalyticEventsInterface();

Then you start the analytics session to begin recording your custom events:


This is an example of adding a simple string event with no parameters:

  Analytics.LogStringEvent("Event without parameters",false);

This is an example of adding a string event with a set of string parameters:

  local array<EventStringParam> Params;
  Params[Params.Length-1].ParamName = "Param Name 1";
  Params[Params.Length-1].ParamValue = "Param Name 1";
  Params[Params.Length-1].ParamName = "Param Name 2";
  Params[Params.Length-1].ParamValue = "Param Value 2";
  Analytics.LogStringEventParamArray("Event with parameters",Params,false);