Halfbrick increases revenue by 16% with Remote Config personalization
Introduction
With a team of 70 fully-remote developers,
Halfbrick strives to make games
that people remember for a lifetime. While they began by
developing licensed games back in 2001, they quickly made a name
for themselves by developing original titles with a retro,
nostalgic feel. Halfbrick is responsible for popular titles like
Jetpack Joyride,
80s-style action platformer
Dan the Man,
and the instant-classic
Fruit Ninja,
which has now been downloaded over a billion times.
Challenge
As most of Halfbrick's revenue comes from running ads with
AdMob, maximizing ad placement
without damaging user retention is a constant concern.
Previously, the team ran a lot of manual experiments and A/B
tests to find the ideal number of ads, but it took up a lot of
engineering time and resources. They wanted a way to run more
granular experiments with less manual input, allowing them to
quickly and easily optimize their ad placement.
They also wanted to maximize user engagement by showing a rating
prompt at the moment when a player is most enjoying the game,
like at the end of a tutorial or checkpoint. This was another
manual process that the team hoped to automate and optimize.
Solution
Many of Halfbrick's games were already powered by Firebase
products such as Cloud Functions,
Cloud Storage, and
Realtime Database on the
backend. And they were also using
Remote Config to dynamically
control and change the behavior and appearance of their
games, so they were quick to adopt Firebase's latest feature,
Remote Config personalization.
This new feature allows developers to specify objectives and
then uses machine learning to find the best parameters for
each user to maximize those objectives, essentially
performing individualized, continuously-improving A/B tests.
Halfbrick used Remote Config personalization to optimize
three key metrics: ad frequency, time to unlock a new level,
and the timing of a ratings prompt.
By using personalization to decide when and how often to show
interstitial ads, Halfbrick's games now automatically show
players the optimal number of ads based on their behavior and
preferences, delivering a better user experience, and
increasing retention and return on ad spend. They were able to
increase the average number of ads per user from 3.4 to 4.2 —
which led to a 16% increase in average revenue per daily
active user (ARPDAU) — without affecting engagement,
retention, or ratings. Personalization also helped Halfbrick
determine the right amount of time to make each player wait
to unlock a new level, increasing the overall amount of time
they spent watching ads.
In addition, Halfbrick is using personalization to determine
the best time (i.e. when users are most enjoying the game) to
ask users to rate their app, without any manual setup or
guesswork from the team. Personalization helped them increase
engagement with the rating prompt by 4% and increase the
number of positive ratings by 15%.
When they ran these experiments manually, it would take a
dedicated teammate one week to configure, test, analyze, and
roll out the results. Now, they can set up Remote Config
personalization in a day or two, then allow it to keep
learning and optimizing without regular human intervention.
This has allowed Halfbrick to save money and time, using that
engineering time to build new features for their games.
Results
16% - increase in average revenue per daily active user (ARPDAU)
15% - increase in positive app store ratings
"The granularity achieved with Remote Config's personalization feature is impossible for a human to instrument. Personalization has given us new insight into how we can optimize our ad strategy and even helped us challenge our own assumptions that players don't like too many ads. Incredibly, we've been able to increase the frequency of ads and grow ad revenue without seeing an uptick in negative reviews or customer complaints."
- Miguel Pastor, Product Manager, Halfbrick
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],[],[],[],null,["# Halfbrick Case Study\n\n[*arrow_back*\nExplore other case studies](/case-studies) \n[View more solutions](/solutions) \n\n##### Halfbrick increases revenue by 16% with Remote Config personalization\n\n*** ** * ** ***\n\n##### Introduction\n\nWith a team of 70 fully-remote developers,\n[Halfbrick](https://www.halfbrick.com/) strives to make games\nthat people remember for a lifetime. While they began by\ndeveloping licensed games back in 2001, they quickly made a name\nfor themselves by developing original titles with a retro,\nnostalgic feel. Halfbrick is responsible for popular titles like\n[Jetpack Joyride](https://play.google.com/store/apps/details?id=com.halfbrick.jetpackjoyride),\n80s-style action platformer\n[Dan the Man](https://play.google.com/store/apps/details?id=com.halfbrick.dantheman),\nand the instant-classic\n[Fruit Ninja](https://play.google.com/store/apps/details?id=com.halfbrick.fruitninjafree),\nwhich has now been downloaded over a billion times.\n\n*** ** * ** ***\n\n##### Challenge\n\nAs most of Halfbrick's revenue comes from running ads with\n[AdMob](https://admob.google.com/home/), maximizing ad placement\nwithout damaging user retention is a constant concern.\nPreviously, the team ran a lot of manual experiments and A/B\ntests to find the ideal number of ads, but it took up a lot of\nengineering time and resources. They wanted a way to run more\ngranular experiments with less manual input, allowing them to\nquickly and easily optimize their ad placement.\n\nThey also wanted to maximize user engagement by showing a rating\nprompt at the moment when a player is most enjoying the game,\nlike at the end of a tutorial or checkpoint. This was another\nmanual process that the team hoped to automate and optimize. \n\n*** ** * ** ***\n\n##### Solution\n\nMany of Halfbrick's games were already powered by Firebase\nproducts such as [Cloud Functions](/products/functions),\n[Cloud Storage](/products/storage), and\n[Realtime Database](/products/realtime-database) on the\nbackend. And they were also using\n[Remote Config](/products/remote-config) to dynamically\ncontrol and change the behavior and appearance of their\ngames, so they were quick to adopt Firebase's latest feature,\n[Remote Config personalization](/docs/remote-config/personalization).\nThis new feature allows developers to specify objectives and\nthen uses machine learning to find the best parameters for\neach user to maximize those objectives, essentially\nperforming individualized, continuously-improving A/B tests.\n\nHalfbrick used Remote Config personalization to optimize\nthree key metrics: ad frequency, time to unlock a new level,\nand the timing of a ratings prompt.\n\nBy using personalization to decide when and how often to show\ninterstitial ads, Halfbrick's games now automatically show\nplayers the optimal number of ads based on their behavior and\npreferences, delivering a better user experience, and\nincreasing retention and return on ad spend. They were able to\nincrease the average number of ads per user from 3.4 to 4.2 ---\nwhich led to a 16% increase in average revenue per daily\nactive user (ARPDAU) --- without affecting engagement,\nretention, or ratings. Personalization also helped Halfbrick\ndetermine the right amount of time to make each player wait\nto unlock a new level, increasing the overall amount of time\nthey spent watching ads. \nIn addition, Halfbrick is using personalization to determine\nthe best time (i.e. when users are most enjoying the game) to\nask users to rate their app, without any manual setup or\nguesswork from the team. Personalization helped them increase\nengagement with the rating prompt by 4% and increase the\nnumber of positive ratings by 15%.\n\nWhen they ran these experiments manually, it would take a\ndedicated teammate one week to configure, test, analyze, and\nroll out the results. Now, they can set up Remote Config\npersonalization in a day or two, then allow it to keep\nlearning and optimizing without regular human intervention.\nThis has allowed Halfbrick to save money and time, using that\nengineering time to build new features for their games.\n\n*** ** * ** ***\n\nResults\n\n16% - increase in average revenue per daily active user (ARPDAU)\n\n15% - increase in positive app store ratings \n\n\"The granularity achieved with Remote Config's personalization feature is impossible for a human to instrument. Personalization has given us new insight into how we can optimize our ad strategy and even helped us challenge our own assumptions that players don't like too many ads. Incredibly, we've been able to increase the frequency of ads and grow ad revenue without seeing an uptick in negative reviews or customer complaints.\"\n\n\n- Miguel Pastor, Product Manager, Halfbrick \nTry Firebase today\n\n\nIntegrating it into your app is easy.\n[Get started](https://console.firebase.google.com/) \n\n#### All Firebase products\n\n##### Build\n\n- [App Check](/products/app-check)\n- [App Hosting](/products/app-hosting)\n- [Authentication](/products/auth)\n- [Cloud Functions](/products/functions)\n- [Cloud Storage](/products/storage)\n- [Data Connect](/products/data-connect)\n- [Extensions](/products/extensions)\n- [Firestore](/products/firestore)\n- [Firebase ML](/products/ml)\n- [Genkit](https://genkit.dev/)\n- [Hosting](/products/hosting)\n- [Realtime Database](/products/realtime-database)\n- [Firebase AI Logic client SDKs](/products/firebase-ai-logic)\n\n[Generative AI](/products/generative-ai) \n\n##### Run\n\n- [A/B Testing](/products/ab-testing)\n- [App Distribution](/products/app-distribution)\n- [Cloud Messaging](/products/cloud-messaging)\n- [Crashlytics](/products/crashlytics)\n- [Google Analytics](/products/analytics)\n- [In-App Messaging](/products/in-app-messaging)\n- [Performance Monitoring](/products/performance)\n- [Remote Config](/products/remote-config)\n- [Test Lab](/products/test-lab)"]]