Game analytics in UE4


Investigating a little I found a couple of related to analytics classes - FEngineAnalytics, IAnalyticsProvider, FAnalyticsET and a few more. By default Engine uses FAnalyticsET, but there’re other in the source that are not referenced anywhere - FAnalyticsMulticast, FAnalyticsSwrve. What are they? For learning purposes?

As I said earlier, by default engine uses FAnalyticsET. What is this ET - for editor only? What about shipped game - should I implement all logic myself?

And the most important question - data visualization. I saw an entry in roadmap about this, but can you, staff guys, bring some light about it please. How work is doing, when can we see it, what kind of metrics will be available, how can we implement our own?

Thank you.

IAnalyticsProvider is the interface you need to implement in order to plugin a new analytics provider.

FAnalyticsSwrve is the provider for the premium service Swrve.

FAnalyticsMulticast is used to send your game events to multiple providers, e.g. both Flurry and Apsalar.

FAnalyticsET is our internal analytics gathering one and should only be used by Epic.

Hey Nikitiablack!

As Joe mentioned, those are analytics providers for different purposes. AnalyticsET is for our own Editor data gathering.

You are welcome to set up an account Flurry, Swrve, Apsalar, etc and use the exisiting providers to send game data to them, or you can do what we do for our games and set up a custom provider to send the data to yourself.

It all depends on what type of analytics you would like to collect.

We don’t currently have a timeframe for the in-editor analytics on the roadmap, but I will check into it with the dev team and see if there are any updates.

Let me know if we can be of any help


FAnalyticsSwrve - will this work on Mobile?

And any chance to stup Flurry/Swerve using Blueprints or Project Settings? Send data by blueprints will be really fast in production.

Currently, the Swrve code is wrapped in a PLATFORM_DESKTOP #ifdef, so it won’t be compiled for mobile. Typically, there’s a specific library for mobile platforms, while the code in there now is using their REST API. It will require more research as to whether we have a version that works on mobile yet.

Blueprints being able to submit events makes sense. One thing that might be clunky is that the event recording often takes an array of data about the event, which might not be as easy to build in BPs.

Thank you for answers.

Yeah, help is very appreciated. I can’t see a way to add new module without changing EngineAnalytics.cpp. Maybe I missed something?

Swrve does have mobile API libraries that they suggest you use instead of the REST APIs. Those have not been integrated. You can fairly easily write a new module that implements an AnalyticsProvider that does this and exposes configuration the same way the existing providers do.

Does anybody have an example on how to use FAnalyticsMulticast to setup Flurry ?
There is no documentation for this class. I tried “Add code to project…” but this class is not available. I found it in the source code but I’m not sure how to use it. How to I link it with the flurry sdk ? Does FAnalyticsMulticast work on mobile ?

Thank you.

Apologies for necro-ing this thread, but for the benefit of OP who asked about the in-editor analytics - I’m currently working on an implementation which will be submitted as a pull request when complete, that should support in-game visualisation as well as local storage of gameplay events via a database or compliant container. My intention is to add support for the basic metrics that would be associated with FPS gameplay in a similar way to the UDK’s GameplayStatsVisualizer functionality, but of course you would be able to call methods to log whatever other data you wanted as well as define a means for visualizing it in-game. It will also support blueprints.
As a bit of a status update on my current implementation:

**SQLite support for platforms that don’t natively provide it (ie Windows, in particular)
**Implemented as a module in ThirdParty
**Saving of gameplay stats to local SQLite database
**Currently player position and rotation with a timestamp; intended other metrics: player weapon fire, player deaths, player kills - could fairly easily use a database server instead of local files too
Toggleable UI overlay in-game via console command, Toggleable collection of data via console command, blueprint support
UI is functional and can bind to a list of gameplay sessions and retrieve which players were part of that session, but as yet doesn’t allow for toggling of visualization of individual player data or scrubbing through the game session by time. UI display and session capture are currently enabled via level blueprint and custom events, but I still plan to implement console commands for both.
In-game visualization of recorded data
Currently player position and rotation are displayed via an Actor subclass per player that contains a SplineComponent- the intention is to have some sort of selectable handle for each data point that will allow the associated data to be inspected numerically when clicked on too - Kill and death events will be represented as selectable nodes. Also I’d like to have some sort of heat map functionality too, either 2d or 3d, or both.