Understanding how your game is performing with players is important to having a “sticky” game that players return to again and again. Your game’s 1-day, 7-day, and 30-day retention numbers are good indicators of whether a player will continue to play your game or if they will churn out of your community. In a free to play game, these numbers are directly related to revenue for the product. A player that is retained is one that has another chance to spend. Of course retention is not the only Key Performance Indicator (KPI) that you need to look at, but it is one of the easiest to add to your game for tracking.
UE4 Analytics Support
In order to get data on how your game is performing, you must use an analytics provider to capture and process the data. Some larger studios have their own analytics solutions, but most indie developers don’t. For those without a homegrown solution, there are plenty of options available from free services to paid ones. UE4 provides an abstract interface for communicating with one or more analytics providers. Your game uses the interface, and analytics providers offer a backing implementation. In some cases, Epic has built the backing provider already. Before version 4.5, Epic provided an implementation to multicast (relay to multiple providers) analytics events and a provider that supports Swrve (www.swrve.com ,a paid service). UE4 version 4.5 adds support for Apsalar (www.apsalar.com, a free service) on iOS and a file based system primarily used for debugging. More provider plugins will become available over time. Also, implementing a provider is not very difficult, so you can add one if needed.
Instrumenting Your Game
The first step in capturing player retention data is to register an analytics provider for your game. This is done via your project’s DefaultEngine.ini file. You must register a default provider. Optionally, you can register different providers and account details for different build types of your game (development, testing, and production). The sections below are an example of configuring the Apsalar plugin:
[Analytics] ProviderModuleName=IOSApsalar ApiKey=YourAnalyticsKey1 ApiSecret=YourAnalyticsSecret1 SendInterval=60 [AnalyticsDevelopment] ApiKey=YourAnalyticsKey2 ApiSecret=YourAnalyticsSecret2 SendInterval=60 [AnalyticsTest] ApiKey=YourAnalyticsKey3 ApiSecret=YourAnalyticsSecret4 SendInterval=60
The [Analytics] section is the default one used and is where you should set the name of the default provider module. In the case above, it is set to the IOSApsalar plugin that is part of the 4.5 release. The ApiKey and ApiSecret fields come from the Apsalar website. Once you create an account, they will give you a key and secret to use.
Once you have it configured for your project, you are ready to start recording analytics events. To get just the basic player retention data, you need to create a session when the game starts up and end it when it is no longer in the foreground. This can be done using the lines of code* shown below:
FAnalytics::Get().GetDefaultConfiguredProvider()->StartSession(); FAnalytics::Get().GetDefaultConfiguredProvider()->EndSession();
*NOTE: In the 4.5 version, there is a Blueprint plugin so that you don’t need C++ code to record your analytics events.
With those calls as part of your game, you’ll automatically start gathering player retention data. Here’s an image from Apsalar’s dashboard showing you what that data looks like:
After getting basic player retention data, you can start adding more events to tell you even more about player behavior in your game. This should be enough to get you started on measuring your game’s success.