Editor’s note: If you’re reading this, then we highly recommend that you also check out this Beta update article. It has lots more information about our methodology, our choice of future technology, and our reasoning for these major upcoming changes.
New features, you say?
Currently we are quite busy with introducing a modern data processing backend, free-to-use for all of you fine GameAnalytics users. Even so, we found the time to add some powerful new toys for you to play with. We are introducing 2 new platform features called Command Center & Experiments (AB testing).
Essentially, they’ll allow you to control your game from within GameAnalytics and (in Experiments) analyse what changes produce optimal results. All of this in real-time, without having to update a single line of code on the App stores!
How it works + documentation
Our new features provide 2 different ways of triggering these kinds of changes:
- Command Center (Configs).
Send key/value pairs (configs) instantly to all users playing your game in order to alter gameplay, or whatever is needed.
- Experiments (AB testing).
The ability to A/B test a variance of the above configurations on different audience segments.
These two features are currently available in our supported Beta SDKs. For more information about configuring them, click the links in the list above.
Getting started with Command Center (configs)
A Config is essentially a game variable in the form of a key-value pair that is provided on the player’s device when the GameAnalytics SDK is initialized. These ‘configs’ can be altered and defined in the Command Center UI, where changes get distributed to all players almost instantly.
Here’s how the Command Center works in GameAnalytics…
Key steps when creating a config
1. Calling configs in your game
The config is supposed to alter the game experience for users inside the game. In order to get active configs a call has to be made in the game code. Once the config is returned the game can be altered. Here’s some example code (Unity) for checking availability and for retrieving a config.
//Check if Command Center is ready and has been loaded with values
//It should be ready after initialize.
// call command center
//Gets Command Center value using specified key.
string value = GameAnalytics.GetCommandCenterValueAsString ("difficulty");
//Gets Command Center config using specified key. If there is no value at specified key the call will return the default value (1)
string value = GameAnalytics.GetCommandCenterValueAsString ("difficulty”, “1”);
2. Defining configs in GameAnalytics
Within GameAnalytics, you can use the Command Center feature to define configs (key/value pairs) that will then be immediately available in all your game clients. This can be used for many things, like triggering campaigns, or even changing the price of an item.
3. Filtering by configs
The data sent from devices will contain information about these config settings as well. This will enable filtering on all metrics by these settings and the values you sent.
Imagine using the config “difficulty=100”. You can then see basic metrics like DAU for users who had this setting. Or you could even choose to view other advanced custom events to discover how the difficulty adjustment affected the gameplay.
Getting started with Experiments (AB testing)
Experiments work a little like the Command Center (in the way that configs are sent to users), but with Experiments you can test different config values on different audiences to discover the best setting.
An example could be testing the frequency of mobile ad placements. Showing too many ads will make users leave fast and showing too few will make less money. Our Experiments feature can be used to discover the optimal balance for your game.
Configs in your game
Experiments work as Command Center configs (read above). The same Command Center call is used, the only difference is that all Experiments (A/B testing) configs are prefixed with “ab_”. Once the config is retrieved the game has to alter the experience for the user based on the config values.
Here’s an example of this code (Unity c#) in practice..
//Gets Command Center ab config using a specified key
string ab_value = GameAnalytics.GetCommandCenterValueAsString ("ab_difficulty”);
//Gets Command Center ab config using a specified key and with a default value returned (“rookie”) if not found
string ab_value = GameAnalytics.GetCommandCenterValueAsString ("ab_difficulty”, “rookie”);
Example: Experiment with difficulty
Game developers often have trouble gauging the difficulty level of their game, which is essential for refining user experience and in some cases also optimizing revenue.
In this case, you could define an Experiment with a key called “ab_difficulty”.
But first you would need to implement the GameAnalytics SDK, add a call to get the value of the “ab_difficulty” key, and then alter the game difficulty based on the value received. Once this is done, and the game is deployed, you can start adjusting your values.
Let’s further imagine that you only want to test this difficulty setting in the US. You define two audiences as shown below (including a control group).
|Control group||30%||Difficulty = control||country=US|
|Group1||30%||difficulty = 50||country=US|
|Group2||30%||diffculty = 100||country=US|
Once the experiment has run for some days it will be possible to compare the results (filtering on metrics) on the GameAnalytics Dashboards, or in the Explore tool.
In this case you might see some bad numbers for the “difficulty = 100” and you need to know more. Then keep experimenting!
|Control group||30%||Difficulty = control||country=US|
|Group1||30%||difficulty = 60||country=US|
|Group2||30%||diffculty = 85||country=US|
Results from the last test might give you the insight you need to truly understand the optimal difficulty setting or it might inspire you to look even deeper.
A thing to keep in mind is that a proper sample size is needed when running these experiments.
Defining an experiment
Start by defining a specific config key that you want to test and the period it should be active, as well as the audiences and different values for each audience.
Defining an audience
When defining an audience you can select the size (percentage) and add different filters.
Filtering by configs
It’s easy to filter and report on your configs within GameAnalytics because they will automatically show up in the filter picker. You can use it to compare groups within an individual experiment, as well as between users in different experiments.
Things to note
Experiments need more time before the configs show up on devices. This is due to the data processing having to filter very large audiences to ascertain what users belong. They will therefore not show up instantly on devices like they do in the Command Center.
Also the filters will not show up instantly in the tool; your players need to have received the configs and sent them back + it takes around 24 hours for the processing to surface the data. We recommend that you run an experiment for a particular period and check it 1-2 days after the period has completed.
Want to see it in action?
If you want to see the process in action before setting up configs in your own game, check out the video we made below.
GameAnalytics - Get ahead of the game with free game analytics