Showing posts with label Games. Show all posts
Showing posts with label Games. Show all posts

Tuesday, August 16, 2016

5 Tips to help you improve game-as-a-service monetization

Posted by Moonlit Wang, Partner Development Manager at Google Play
Games, & Tammy Levy, Director of Product for Mobile at href="http://developers.kongregate.com/">Kongregate



In today’s world of game-as-a-service on mobile, the lifetime value of a player
is a lot more complex, where revenue is now the sum of many micro transactions
instead of a single purchase with traditional console games.


Of course you don’t need a sophisticated statistical model to understand that
the more time a player invests in your game, and the more money they spend, the
greater their LTV. But how can you design and improve monetization as a mobile
game developer? Here are 5 tips to help you improve game-as-a-service
monetization, with best practice examples from mobile games publisher, href="https://play.google.com/store/apps/dev?id=7580247376460930437&hl=en_GB">Kongregate:


1. Track player behavior metrics that have a strong and positive correlation with LTV




  • D1, D7, D30 retention indicates how well a casual player
    can be converted into a committed fan.
  • Session length and frequency measures user engagement and
    how fun your game is.
  • Completion rate at important milestones can measure and
    pinpoint churn.
  • Buyer and repeated buyer conversion, represents your most
    valuable user segment.


2. Optimize for long-term engagement and delight your best players

Retention is the first metric that can distinguish great games from mediocre
ones. Games with higher retention rates throughout the user’ lifecycle, monetize
better consistently. Retention is king, and more importantly, long-term
retention should be prioritized.
Therefore, when designing your game,
aim to create a sophisticated and engaging experience to delight your most
committed fans.



[This chart shows the retention of top games / apps over time]





  • When considering long term retention, focus on achieving a strong D30, but
    also look beyond the first 30 days. Measure long term retention
    by assessing the following rates: D30 to D60, D30 to D90, and D30 to D180. The
    higher the rate, the stickier your game is in the long term, which will increase
    your LTV.
  • Players are willing to pay a fixed amount of money per hour of “fun”, so
    think about updates when designing your game, to make
    the content rich and fun for those who will play at very high levels and
    spend the most time within your game
    , don’t gate your players or hinder
    their in-game progression.
  • Use the href="http://android-developers.blogspot.com/2016/01/new-features-to-better-understand.html">Google
    Play Games Services - Funnel Report
    to help you track different
    milestone completion rates in your games, so you can identify drop off points
    and reduce churn
.
3. Increase buyer conversion through targeted offers



First-time buyer conversion is the most important as player churn rate
drops significantly after the first purchase
, but stays relatively flat
regardless of the amount spent. Also, past purchase behavior is the best
predictor of future purchases. Find your first-time and repeated buyer
conversion rate directly in the href="https://developer.android.com/distribute/users/user-acquisition.html">Developer
Console.






  • Use A/B testing to find the price that will maximize your total
    revenue
    . Different people have different willingness to pay for
    a given product
    and the tradeoff between price and quantity is
    different for different products, so don’t decrease prices blindly.
  • Tailor your in-game experience as well as in-app purchase offersbased on the player’s predicted probability to spend using the href="https://developers.google.com/games/services/android/stats">Player Stats
    API
    ,
    which
    predicts players churn and spend.




For example, in href="https://play.google.com/store/apps/developer?id=Kongregate&hl=en_GB&e=-EnableAppDetailsPageRedesign">Kongregate’s
game href="https://play.google.com/store/apps/details?id=com.kongregate.mobile.spellstone.google&hl=en_GB">Spellstone,
testing two pricing points for a promotion called Shard Bot, which provides
players with a daily “drip” of Shards (the premium currency) for 30 days, showed
players had a much stronger preference for the higher priced
pack.
The first pack, Shard Bot, priced at $4, granted players 5 daily
shards, and the second pack, the Super Shard Bot, was priced at $8 and granted
players 10 daily shards.





[Two week test results showing preference for the more expensive pack, which also generated more revenue]




Kongregate decided to keep the higher priced Super Shard Bot in the store,
although both packs resulted in very similar retention rates:




4. As well as what monetization features to implement, take into consideration why, when and how to do so





  • Why: “Buyer intent” is most important. Any item with a
    price tag should serve to enhance your players in-game experience.
    For
    example, a new map, a new power, something exciting and additional to the free
    experience. Don’t gate your players with a purchase-only item as happy users
    means more time spent with your game, which will lead to higher
    revenue. Educate users by gifting some free premium goods and currency during the tutorial, and let users experience the benefit first.





  • When: Time offers based on when users may need it.
    If your IAP is to continue gameplay after timeout, then you should surface it
    right when the timer ends. If your IAP is to offer premium equipment, then you
    should surface it when users gear up their characters. The offer should be
    contextually relevant, such that the content should cater to the player’s
    current status and needs in-game.




    In particular, Starter Packs or New Buyer Promos need to be well timed. Players
    need to understand the value and importance of all the items before they are
    shown the promotion. If surfaced too early, players will not feel compelled to
    purchase. If surfaced too late, the offer will not be compelling enough. The
    Starter Pack should appear within 3 to 5 sessions since install, depending on
    your game. Additionally, limiting its availability to 3 to 5 days will urge
    players to make a quicker purchase decision.









  • Powerful cards that have an immediate effect in battle
  • High rarity upgrade materials to upgrade your card deck
  • A generous amount of soft currency that can be used in all areas of the game
  • A generous amount of hard currency so players can purchase premium store
    items
  • Rare upgrade materials for Heroes




[Example starter pack offer in Battle Hands]


Thanks to the strength of the promotion over 50% of players choose the Starter Pack instead of the regular gems offerings:






  • How: There are many ways you can implement premium content and goods in your game, such as power-ups, characters, equipment, maps, hints, chapters etc. The two most impactful monetization designs are:


      Gacha - There are many ways to design, present and balance gacha but the key is to have randomized rewards, which allows you to sell extremely powerful items that players want without having to charge really high prices per purchase.



[Example of randomized rewards in Raid Brigade’s boxes]



      LiveOps - Limited time content on a regular cadence will also create really compelling opportunities for the players to both engage further with the game and invest in the game. For instance, Adventure Capitalist has been releasing regular limited themed time events with their spin on the permanent content, their own progression, achievements and IAP promotions.




[Example timed event for Adventure Capitalist]



Through this initiative, the game has seen regular increases in both engagement and revenue during event times without affecting the non-event periods:




[Timed events drastically increase engagement and revenue without lowering the baseline average over time]


5. Take into account local prices and pricing models



Just like different people have different willingness-to-pay, different markets have different purchasing powers.



    • Test what price points make sense for local consumers in each major market.
      Don’t just apply an umbrella discount, find the price points that maximize total
      revenue.
    • Consider charm pricing but remember it doesn’t work everywhere.For example, in the United States, prices always end in $x.99, but
      that’s not the case in Japan and Korea, where rounded numbers are used. Pricing
      in accordance to the local norm signals to the customers that you care and
      designed the game with them in mind. The Google Developer Console now
      automatically applies href="https://support.google.com/googleplay/android-developer/answer/6334373?hl=en&ref_topic=6075663">local
      pricing conventions
      of each currency for you.




href="http://android-developers.blogspot.co.uk/2016/06/android-developer-story-vietnamese.html">Check
out the Android Developer Story from games developer, Divmob
, who improved
their game’s monetization threefold simply by adopting sub-dollar pricing
strategies. Also, href="https://play.google.com/store/books/details/Google_Inc_The_Building_for_Billions_Playbook_for?id=cJEjDAAAQBAJ&e=-EnableAppDetailsPageRedesign">learn
more best practices about building for billions
to get more tips on
monetization.




href="https://play.google.com/store/apps/details?id=com.google.android.apps.secrets">Get
the Playbook for Developers app
and stay up-to-date with more features and
best practices that will help you grow a successful business on Google Play.

Wednesday, June 1, 2016

Android Developer Story: Vietnamese games developer Divmob finds more users with localized pricing on Google Play

Posted by Lily Sheringham, Google Play team




Based in Ho Chi Minh City in Vietnam, games developer Divmob has grown quickly from an original team of five people to 40 employees since
it was founded three years ago. Divmob now has over 40 million downloads across
its various titles, including the popular game, Epic Heroes War.



Watch Ngo Van Luyen, CEO & Founder at Divmob, and his team explain how
introducing sub-dollar pricing in various markets resulted in a 300% increase
in daily transactions, and increased the number of paying users threefold.






Find out more about local pricing models on Google Play



We recently introduced new features in the Google Play Developer Console to
help you meet local expectations when setting prices, to make purchases more
attractive to your users. The Developer Console will now automatically round
pricing to local conventions in each market, and you can also set up pricing
templates to manage pricing across multiple currencies more efficiently, and
easily make bulk changes to the prices of multiple apps and in-app products in
a single click. Learn more about the improved local pricing tools.


Thursday, November 19, 2015

Hungering for Game Utilities?

Posted by Alex Ames, Fun Propulsion Labs*



Originally posted to the Google Developers blog





At Fun Propulsion Labs we spend some of our time building sample games to help demonstrate how to make easy-to-build, performant, cross-platform games. With the growth of Google Cardboard, we got to work and over many long evenings, feeding our animal hunger on sushi, we came up with Zooshi. Zooshi is an open source, cross-platform game written in C++ which supports:



  • Android, Android TV, Windows, OSX, and Linux

  • Google Cardboard

  • Google Play Games Services sign-in and leaderboards on Android

  • Level customization


Zooshi serves as a demonstration of how to build Android games using a suite of newly released and updated open source game technologies from Google:



  • Motive drives our Animation system, giving life and movement to the characters and environment.

  • CORGI, the Component Oriented Reusable Game Interface, is an Entity-Component system designed to allow users to define complicated game objects as collections of modular, custom-defined behaviors.

  • FlatUI is a straightforward immediate mode GUI system with a light footprint that makes building up user interfaces a breeze.

  • Scene Lab allows designers to design levels and edit entities from right in the game without needing to use an external editor.

  • Breadboard provides an easy to use node based scripting system for editing entity behaviors that's accessible to designers without deep knowledge of programming.

  • FPLBase is a cross-platform API layer, for abstracting low-level tasks like reading input and creation of graphical contexts.


As in our previous release, Pie Noon, we also made extensive use of Flatbuffers, Mathfu, fplutil, and WebP.



You can download the game in the Play Store and the latest open source release from our GitHub page. We invite you to learn from the code to see how you can apply these libraries and utilities in your own Android games. Take advantage of our discussion list if you have any questions, and don’t forget to toss some sushi around while you’re at it!



* Fun Propulsion Labs is a team within Google that's dedicated to advancing gaming on Android and other platforms.

Thursday, November 12, 2015

Developer tips for success with Player Analytics and Google Play games services

Posted by, Lily Sheringham, Developer Marketing at Google Play



Editor’s note: As part of our series featuring tips from developers, we spoke to some popular game developers to find out how they use Player Analytics and Google Play game services to find success on Google Play. - Ed.



Google Play games services, available in the Developer Console, allows you to add features such as achievements and leaderboards to your games. Google Play games services provides Player Analytics, a free games-specific analytics tool, in the Developer Console Game services tab. You can use the reports to understand how players are progressing, spending, and churning backed by a data-driven approach.





Bombsquad grows revenue by 140% per user with Player Analytics



Independent developer Eric Froemling, initially created the game Bombsquad as a hobby, but now relies on it as his livelihood. Last year, he switched the business model of the game from paid to free-to-play. By using Player Analytics, he was able to improve player retention and monetization in the game, achieving a 140% increase in the average revenue per daily active user (ARPDAU).



Watch the video below to learn how Eric uses Player Analytics and the Developer Console to improve gamers’ experience, while increasing retention and monetization.













Tips from Auxbrain for success with Google Play games services



Kevin Pazirandeh, founder and CEO of games developer Auxbrain, creator of Zombie Highway, provides insight into how they use Google Play games services, and comments:



“While there are a few exceptions, I have not run into a better measure of engagement, and perhaps more importantly, a measure for change in engagement, than the retention table. For the uninitiated, a daily retention table gives you the % of players who return on the nth day after their first play. Comparing retention rates of two similar games can give you an immediate signal if you are doing something right or wrong.”



Kevin shares his top tips on how to best use the analytics tools in Google Play games services:



  1. You get Player Analytics for free - If you’ve implemented Google Play game services in your games, check out Player Analytics under Game services in the Developer Console, you’ll find you are getting analytics data already.


  2. Never assume change is for the better - Players may not view changes in your game as the improvement you had hoped they were. So when you make a change, have a strategy for measuring the result. Where you cannot find a way to measure the change’s impact with Player Analytics, consider not making it and prioritize those changes you can measure.


  3. Use achievements and events to track player progress - If you add achievements or events you can use the Player progression report or Event viewer to track player progress. You’ll quickly find out where players are struggling or churning, and can look for ways to help move players on.


  4. Use sign-in to get more data - The more data about player behavior you collect, the more meaningful the reports in Player Analytics become. The best way to increase the data collected is to get more players signed-in. Auto sign-in players, and provide a Play game services start point on the first screen (after any tutorial flow) for those that don’t sign-in first time.


  5. Track your player engagement with Retention tables - The Retention table report lets you see where players are turning away, over time. Compare retention before and after changes to understand their impact, or between similar games to see if different designs decisions are turning players away earlier or later.


Get started with Google Play Games Services or learn more about products and best practices that will help you grow your business on Google Play globally.

Saturday, October 24, 2015

Virtual currency: Sources and Sinks

Posted by Damien Mabin, Developer Advocate



More and more mobile games base their economic model on virtual currencies and free to play, yet there are plenty of pitfalls to be aware of while developing your game. One of these pitfalls is having an unbalanced economy. Sources and Sinks, a handy feature included in the Play Games Services toolset, is specifically designed to help measure the balance of your game’s virtual economy.



It helps you visualise in one simple diagram the state of your current in game economy. In diagram 1 (below), along the x-axis (time), and y-axis (amount of virtual currency), we see 2 curves:




  • One showing the amount of virtual currency earn by players (orange line)

  • The other one showing the amount spent by players (green line)





Diagram 1: Poorly Monetizing Economy



What do the curves in the diagram tell us? In this case, that our game is likely not going to monetize well. Users are spending less currency than they are earning: resulting in a surplus. There is no sense of scarcity for the user which may indicate that your players do not understand how they can spend currency or that there is value to them in doing so. It would be a good idea in this case to re-evaluate how much content is available to spend virtual currency on and how discoverable this content is to your users. Alternatively, you may want to consider decreasing the amount of in game earned currency is available (inflation can be a bad thing). Ultimately, you want your curves to change as demonstrated in diagram 2 (below).




Diagram 2: Balancing economy



That’s a lot better! Now your users are spending more than they earn… Wait! How is that possible? Two reasons: Players are spending the stock of money they accumulated before your changes. Moreover, there is another important point not to forget: you should not track in the above diagrams the amount of virtual currency the user purchase through in app purchases. If you wait a few more days, you should see the 2 curves converge a bit; the delta of them being the amount of virtual currency users purchase through IAP:




Diagram 3: Stabilised economy



With play game services you can get this visualisation with 2 lines of codes! It works on iOS and Android and doesn’t require the user to sign in to Play Games. What you will have in your Android or iOS app is something like this:





You can find more information about the integration here.



Once the client integration done you can go into your Play Store Developer Console to visualise the curve. Go into the “Game services” section, and click on “Player analytics->overview.”


Friday, October 16, 2015

Game Performance: Vertex Array Objects

Game Performance: Vertex Array Objects

Posted by Shanee Nishry



Previously, we showed how you can use vertex layout qualifiers to increase the performance and determinism of your OpenGL application. In this post, we’ll show another useful technique that will help you produce increased performance and cleaner code when drawing objects.



Binding the vertex buffer



Before drawing onto the screen, you need to bind your vertex data (e.g. positions, normals, UVs) to the corresponding vertex shader attributes. To do that, you need to bind the vertex buffer, enable the generic vertex attribute, and use glVertexAttribPointer to describe the layout of the buffer.



Therefore, a draw call might look like this:



const GLuint ATTRIBUTE_LOCATION_POSITIONS   = 0;
const GLuint ATTRIBUTE_LOCATION_TEXTUREUV = 1;
const GLuint ATTRIBUTE_LOCATION_NORMALS = 2;

// Bind shader program, uniforms and textures
// ...

// Bind the vertex buffer
glBindBuffer( GL_ARRAY_BUFFER, vertex_buffer_object );

// Set the vertex attributes
glEnableVertexAttribArray( ATTRIBUTE_LOCATION_POSITIONS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_POSITIONS, 3, GL_FLOAT, GL_FALSE, 32, 0 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_TEXTUREUV );
glVertexAttribPointer( ATTRIBUTE_LOCATION_TEXTUREUV, 2, GL_FLOAT, GL_FALSE, 32, 12 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_NORMALS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_NORMALS, 3, GL_FLOAT, GL_FALSE, 32, 20 );

// Draw elements
glDrawElements( GL_TRIANGLES, count, GL_UNSIGNED_SHORT, 0 );


There are several reasons why we might not like this code very much. The first is that we need to cache the layout of the vertex buffer to enable and disable the right attributes before drawing. This means we are either hard-coding or saving some amount of data for a nearly meaningless task.



The second reason is performance. Having to tell the drivers which attributes to individually activate is suboptimal. It would be best if we could precompile this information and deliver it all at once.



Lastly, and purely for aesthetics, our draw call is cluttered by long boilerplate code. It would be nice to get rid of it.








Did you know there is another reason why someone might frown on this code? The code is making use of layout qualifiers which is great! But, since it’s already using OpenGL ES 3+, it would be even better if the code also used Geometry Instancing. By batching many instances of a mesh into a single draw call, you can really boost performance.




So how can we improve on the above code?



Vertex Array Objects (VAOs)



If you are using OpenGL ES 3 or higher, you should use Vertex Array Objects (or "VAOs") to store your vertex attribute state.



Using a VAO allows the drivers to compile the vertex description format for repeated use. In addition, this frees you from having to cache the vertex format needed for glVertexAttribPointer, and it also results in less per-draw boilerplate code.



Creating Vertex Array Objects



The first thing you need to do is create your VAO. This is created once per mesh, alongside the vertex buffer object and is done like this:



const GLuint ATTRIBUTE_LOCATION_POSITIONS   = 0;
const GLuint ATTRIBUTE_LOCATION_TEXTUREUV = 1;
const GLuint ATTRIBUTE_LOCATION_NORMALS = 2;

// Bind the vertex buffer object
glBindBuffer( GL_ARRAY_BUFFER, vertex_buffer_object );

// Create a VAO
GLuint vao;
glGenVertexArrays( 1, &vao );
glBindVertexArray( vao );

// Set the vertex attributes as usual
glEnableVertexAttribArray( ATTRIBUTE_LOCATION_POSITIONS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_POSITIONS, 3, GL_FLOAT, GL_FALSE, 32, 0 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_TEXTUREUV );
glVertexAttribPointer( ATTRIBUTE_LOCATION_TEXTUREUV, 2, GL_FLOAT, GL_FALSE, 32, 12 );

glEnableVertexAttribArray( ATTRIBUTE_LOCATION_NORMALS );
glVertexAttribPointer( ATTRIBUTE_LOCATION_NORMALS, 3, GL_FLOAT, GL_FALSE, 32, 20 );

// Unbind the VAO to avoid accidentally overwriting the state
// Skip this if you are confident your code will not do so
glBindVertexArray( 0 );


You have probably noticed that this is very similar to our previous code section except that we now have the addition of:



// Create a vertex array object
GLuint vao;
glGenVertexArrays( 1, &vao );
glBindVertexArray( vao );


These lines create and bind the VAO. All glEnableVertexAttribArray and glVertexAttribPointer calls after that are recorded in the currently bound VAO, and that greatly simplifies our per-draw procedure as all you need to do is use the newly created VAO.



Using the Vertex Array Object



The next time you want to draw using this mesh all you need to do is bind the VAO using glBindVertexArray.



// Bind shader program, uniforms and textures
// ...

// Bind Vertex Array Object
glBindVertexArray( vao );

// Draw elements
glDrawElements( GL_TRIANGLES, count, GL_UNSIGNED_SHORT, 0 );


You no longer need to go through all the vertex attributes. This makes your code cleaner, makes per-frame calls shorter and more efficient, and allows the drivers to optimize the binding stage to increase performance.








Did you notice we are no longer calling glBindBuffer? This is because calling glVertexAttribPointer while recording the VAO references the currently bound buffer even though the VAO does not record glBindBuffer calls on itself.



Want to learn more how to improve your game performance? Check out our Game Performance article series. If you are building on Android you might also be interested in the Android Performance Patterns.



Tuesday, September 1, 2015

Games developer, Dots, share their Do’s and Don’ts for improving your visibility on Google Play


Posted by Lily Sheringham, Developer Marketing at Google Play


Editor’s note: A few weeks ago we shared some tips from game developer, Seriously, on how they’ve been using notifications successfully to drive ongoing engagement. This week, we’re sharing tips from Christian Calderon at US game developer, Dots, on how to successfully optimize your Play Store Listing. -Ed.









A well thought-out Google Play store listing can significantly improve the discoverability of your app or game and drive installations. With the recent launch of Store Listing Experiments on the Google Play Developer Console, you can now conduct A/B tests on the text and graphics of your store listing page and use the data to make more informed decisions.



Dots is a US-founded game developer which released the popular game, Dots, and its addictive sequel, TwoDots. Dots used its store listings to showcase its brands and improve conversions by letting players know what to expect.






Christian Calderon, Head of Marketing for Dots, shared his top tips with us on store listings and visibility on Google Play.






Do’s and Don’ts for optimizing store listings on Google Play
























Do’s
Don’ts
Do be creative and unique with the icon. Try to visually convince the user that your product is interesting and in alignment with what they are looking for.

Don’t spam keywords in your app title. Keep the title short, original and thoughtful and keep your brand in mind when representing your product offering.
Do remember to quickly respond to reviews and implement a scalable strategy to incorporate feedback into your product offering. App ratings are important social proof that your product is well liked.
Don’t overload the ‘short description’. Keep it concise. It should be used as a call-to-action to address your product’s core value proposition and invite the user to install the application. Remember to consider SEO best practices.

Do invest in a strong overall paid and organic acquisition strategy. More downloads will make your product seem more credible to users, increasing the likeliness that a user will install your app.
Don’t overuse text in your screenshots. They should create a visual narrative for what’s in your game and help users visualize your product offering, using localization where possible.
Do link your Google Play store listing to your website, social media accounts, press releases and any of your consumer-facing channels that may drive organic visibility to your target market. This can impact your search positioning.
Don’t have a negative, too short or confusing message in your “What’s New” copy. Let users know what updates, product changes or bug fixes have been implemented in new versions. Keep your copy buoyant, informative, concise and clear.
Do use Video Visualization to narrate the core value proposition. For TwoDots, our highest converting videos consist of gameplay, showcasing features and events within the game that let the player know exactly what to expect.
Don’t flood the user with information in the page description. Keep the body of the page description organized and concise and test different structural patterns that works best for you and your product!






Use Google Play Store Listing Experiments to increase your installs


As part of the 100 Days of Google Dev video series, Kobi Glick from the Google Play team explains how to test different graphics and text on your app or game’s Play Store listing to increase conversions using the new Store Listing Experiments feature in the Developer Console.










Find out more about using Store Listing Experiments to turn more of your visits into installs.

Monday, August 24, 2015

Get the Do’s and Don’ts for Notifications from Game Developer Seriously

Posted by Lily Sheringham, Developer Marketing at Google Play



Editor’s note: We’ve been talking to developers to find out how they’ve been achieving success on Google Play. We recently spoke to Reko Ukko at Finnish mobile game developer, Seriously, to find out how to successfully use Notifications.






Notifications on Android let you send timely, relevant, and actionable information to your users' devices. When used correctly, notifications can increase the value of your app or game and drive ongoing engagement.




Seriously is a Finnish mobile game developer focused on creating entertaining games with quality user experiences. They use push notifications to drive engagement with their players, such as helping players progress to the next level when they’ve left the app after getting stuck.



Reko Ukko, VP of Game Design at Seriously, shared his tips with us on how to use notifications to increase the value of your game and drive ongoing engagement.



Do’s and don’ts for successful game notifications






























Do’s

Don’ts

Do let the user get familiar with your service and its benefits before asking for permission to send notifications.

Don’t treat your users as if they’re all the same - identify and group them so you can push notifications that are relevant to their actions within your app.

Do include actionable context. If it looks like a player is stuck on a level, send them a tip to encourage action.

Don’t spam push notifications or interrupt game play. Get an understanding of the right frequency for your audience to fit the game.

Do consider re-activation. If the player thoroughly completes a game loop and could be interested in playing again, think about using a notification. Look at timing this shortly after the player exits the game.

Don’t just target players at all hours of the day. Choose moments when players typically play games – early morning commutes, lunch breaks, the end of the work day, and in the evening before sleeping. Take time zones into account.

Do deep link from the notification to where the user expects to go to based on the message. For example. if the notification is about "do action X in the game now to win", link to where that action can take place.

Don’t forget to expire the notifications if they’re time-limited or associated with an event. You can also recycle the same notification ID to avoid stacking notifications for the user.

Do try to make an emotional connection with the player by reflecting the style, characters, and atmosphere of your game in the notification. If the player is emotionally connected to your game, they’ll appreciate your notifications and be more likely to engage.

Don’t leave notifications up to guess work. Experiment with A/B testing and iterate to compare how different notifications affect engagement and user behavior in your app. Go beyond measuring app opening metrics – identify and respond to user behavior.



Experiment with notifications yourself to understand what’s best for your players and your game. You can power your own notifications with Google Cloud Messaging, which is free, cross platform, reliable, and thoughtful about battery usage. Find out more about developing Notifications on Android.