Once your game is live, it's important to keep monitoring key metrics with Gaming Insights. Keeping a close eye on your metrics will help inform your feature design, give you insights about your audience, and validate that your updates are keeping your game on the right track.
Gaming Insights automatically logs many events and pieces of demographic information. You can get aggregated and anonymous information about your audience such as age groups, country, and languages spoken. You can also see engagement information such as retention and daily active users.
Thanks to functionality in the Web Hosting section, you can distribute your game package to a subset of your audience and closely follow data changes to validate that your game updates are improving your metrics.
Initial loading shouldn't take more than 5 seconds (6MB): Instant Games need to be "instant", and players will tend to churn away if the initial loading takes too long. Only load up to 6MB of content during loading to start the game. The total size of your bundle can be up to 200MB, but we'll only load the files explicitly required by your index.html
during initial loading. So make sure to use that time to only load essential assets for the first session and postpone loading of other assets for when they are needed.
Report initial loading progress: During initial loading, you should inform us on your loading progress by using setProgress
.
Avoid secondary loading screens: Once the native loading ring shows completion at 100%, the player shouldn't be thrown into another waiting experience - they should be able to play right away.
Optimize for desktop: You can have a different orientation for desktop browser by using the override_web_orientation
in the bundle config. This will allow you to make good use of all web estate.
Optimize for mobile: Although Instant Games works on desktop browsers, it's a good idea to optimize rendering and aspect ratio for popular iOS and Android devices.
Load resources in parallel with initializeAsync
: You shouldn't wait for the initializeAsync
promise to resolve before downloading your resources. You can download in parallel.
Consider code minification and/or uglification: You can reduce download size and memory requirements for code assets significantly and the obfuscation applied to the code in the process makes more difficult to cheat or steal your game code.
Allow seasoned players to come back to the tutorial if they choose to. It can be that they haven't played the game in a while, or that they want to show the tutorial to a friend. Take note not to force the tutorial in every session, but give experienced players the opportunity to jump right into play.
Consider group settings for new players who join the group later. You should ensure that these players see the tutorial on their first play.
Use playable tutorials over text if possible. The best tutorials are those that users do not know are tutorials.
The tutorial should be accessible for new players and seasoned players, but it should be easy to skip.
Consider prompting users to add a shortcut to your games to increase long term retention by creating an additional persistent entry point. Use the Home Screen Shortcut API to place a dialog in-game for players to save the game to their home screen on Android devices. You can incentivize this action. You can use the canCreateShortcutAsync
method to determine whether the current gameplay session supports creation of a shortcut.
Localize your game: players tend to engage more with the game if they can play in a language that's natural to them. The table below will help you decide which languages to translate your game content to:
Ranking | Languages | Priority |
---|---|---|
Top 10 Languages | EN (English), ES (Spanish), PT (Portuguese), FR (French), AR (Arabic), ID (Indonesian), VI (Vietnamese), TH (Thai), PL (Polish), DE (German) | Must have |
Next Top 10 Languages | IT (Italian), ZH (Chinese), RU (Russian), TR (Turkish), MY (Burmese), MS (Malay), RO (Romanian), NL (Dutch), SV (Swedish) | Nice to have |