Scuba Chibi Postmortem #2: Data and Analytics

About two weeks ago on Thursday, June 18th, I released my game Scuba Chibi to the iOS App Store.  You may be wondering, how has it been doing since then?  I’m going to grab data from iTunes Connect App Analytics, Google Analytics, my blog, my Facebook page, and my Twitter.  Let’s see how this game held up day by day, week by week!


iTunes Connect App Analytics

This shows the number of app downloads

IOS Daily Downloads 6/19 - 6/28
IOS Daily Downloads 6/18 – 6/28
IOS Country Downloads 6/19 - 6/28
IOS Country Downloads 6/18 – 6/28

TOTAL APP DOWNLOADS (6/18 – 6/28): ~99-102 (?)


Google Analytics

New Users:

  • THU 6/18: 17
  • FRI 6/19: 37
  • SAT 6/20: 13
  • SUN 6/21: 3
  • MON 6/22: 2
  • TUES 6/23: 1
  • WED 6/24: 4
  • THURS 6/25: 0
  • FRI 6/26: 0
  • SAT 6/27: 3
  • SUN 6/28: 1
  • MON 6/29: 2
  • TUES 6/30: 15
  • WED 7/1: 4
  • THURS 7/2: ?

Active Users:

  • THU 6/18: 19
  • FRI 6/19: 39
  • SAT 6/20: 20
  • SUN 6/21: 11
  • MON 6/22: 7
  • TUES 6/23: 5
  • WED 6/24: 7
  • THURS 6/25: 2
  • FRI 6/26: 5
  • SAT 6/27: 5
  • SUN 6/28: 6
  • MON 6/29: 4
  • TUES 6/30: 19
  • WED 7/1: 6
  • THURS 7/2: ?
New Users / Active Users 6/18 - 7/2
New Users and Active Users 6/18 – 7/2

Countries:

  1. United States: 156 sessions (69.03%)
  2. China: 36 sessions (15.93%)
  3. Germany: 6 sessions (2.65%)
  4. Vietnam: 4 sessions (1.44%)
  5. Switzerland: 3 sessions (1.33%)
  6. United Arab Emirates: 2 sessions (0.88%)
  7. France: 2 sessions (0.88%)
  8. United Kingdom: 2 sessions (0.88%)
  9. Netherlands: 2 sessions (0.88%)
  10. Russia: 2 sessions (0.88%)
  11. Argentina: 1 session (0.44%)
  12. Canada: 1 session (0.44%)
  13. Spain: 1 session (0.44%)
  14. Indonesia: 1 session (0.44%)
  15. India: 1 session (0.44%)
  16. Philippines: 1 session (0.44%)
  17. Poland: 1 session (0.44%)
  18. Venezuela: 1 session (0.44%)
Countries 6/18 - 7/2
Countries 6/18 – 7/2

Top Device Models:

  • iPhone: 142 sessions (77.6%)
  • iPad: 41 sessions (22.4%)

User Engagement:

  • Screen Views: 285
  • Average Time On Screen: 00:02:33
  • Crashes: 0  😀
  • Events:
    • Ad Views: 500
    • Button Clicks:
      • Game Over Menu – Play Again: 367
      • Main Menu – Play Game: 240 
      • Main Menu – View Instructions: 98
      • Instructions Menu – Back to Main Menu: 94
      • Game Over Menu – Back to Main Menu: 52
      • Game Over Menu – Share Facebook: 4
      • Game Over Menu – Share Twitter: 2
    • Score View: Game Over Menu – LocalStorage Score: 147 (this is the number of times the high score was saved in the device’s local storage)
User Engagement 6/18 - 7/2
User Engagement 6/18 – 7/2

WordPress Blog – http://www.melkybee.com/blog

Best Views Ever: 197 on Friday, June 26

Blog Stats - June/July
Blog Stats – June/July

I couldn’t pull data that includes info from 6/18, but here is data from 6/25 – 7/5:

Blog Stats 6/29 - 7/5
Blog Stats 6/29 – 7/5

These are my all-time most popular blog posts:

Top 10 Most Popular Blog Posts
Top 10 Most Popular Blog Posts

Facebook Page – https://facebook.com/scubachibi

Page Likes

  • THU 6/18: 14
  • FRI 6/19: +30
  • SUN 6/21: +11
  • MON 6/22: +3
  • TUES 6/30: +2
    • TOTAL: 60 likes
Facebook Likes 6/18 - 7/2
Facebook Likes 6/18 – 7/2

Twitter – http://twitter.com/scubachibi

THU 6/18 – THU 7/2:

  • Tweets: 4
  • Tweet Impressions: 727
  • Profile Visits: 67
  • Mentions: 1
  • Followers: 43
  • Engagement Rate: 4.3%
  • Link Clicks: 12
  • Retweets: 8
  • Favorites: 12
Tweet Impressions 6/18 - 7/2
Tweet Impressions 6/18 – 7/2

 

Conclusion

What can we draw from this data?  Hrmmm…

  1. Well, I admit that I am no expert in marketing, and I spent $0 on marketing, so the numbers are not high and are also decreasing.  :'(  Lol.
  2. Also, although we saw some low numbers in New Users in Google Analytics, we still saw that there were Active Users each day, even on the days when New Users were at 0.
  3. Interestingly, if the data holds correct, there were more app downloads in China (according to iTunes Connect App Analytics), but more sessions in the U.S. (according to Google Analytics).
  4. Furthermore, the day after the release (Friday, 6/19) had the highest number of downloads, New Users, Active Users, and the highest increase in Facebook likes.  I think it had to do with people seeing the news about the app up to a day late, because the other Fridays don’t necessarily have any high numbers.
  5. There was a bit of an increase in New Users and Active Users on Tuesday, 6/30.  I am not sure how or why that happened.  I didn’t do any blog posts, Facebook posts, or tweets on that day.  Hrmmm!
  6. However, on Friday, 6/26, the Scuba Chibi blog was mentioned on the Phaser website, so that day I received 197 views, my best views ever for my blog!

In my next postmortem, I am going to write about the backstory of Scuba Chibi and how the game evolved into what it became.  It should be interesting from a game design perspective.  Stay tuned!

Scuba Chibi: What’s Next?

In as much as I would like to move on to my next project, there are still a few things I need to finish with Scuba Chibi:

1. Android Support

Android friends, I haven’t forgotten about you.  I’ve tried out the game on Android, but it appears that Ad Mob and Phaser.js are not working well together.  If I remove Ad Mob, then the game loads fine.  I might have to look into using another Ad Mob plugin that works in Phonegap, or maybe I’ll do some Javascript magic without a library.  We’ll see.  There are also some resizing issues that I would need to take care of.  The game does not resize to the screen for my Android tablet.  This will be fun…

2. Suggestions?

I’ve had some suggestions as far as leaderboards, more enemies, and more backgrounds.  All are possibilites!  🙂  Any other suggestions?  🙂

Stay tuned for my upcoming blog post when I do my Postmortem #2 – Data and Analytics!

Scuba Chibi Postmortem #1: The Technical Learnings

I can finally say that Scuba Chibi is done and will soon be released to the iOS App Store!

As simple as this game is, it actually took me a whole lot longer to finish than I had expected.  Most of it was due to finding the free time to actually work on it.  But it was a lingering item on my To-Do list and I wanted it done and over with so that I can move on to my next project.  🙂

Nevertheless, from a technical and artistic standpoint, it was fun to work on.  It was a game that I had made with Phaser, Javascript, and Phonegap Build.  I do Javascript for work and I have played around with some small Phaser examples, but I am new to Phonegap Build.  So there would be times when I ran into some issues here and there and after googling for some solutions, I could not find any, so I resulted in doing a bit of trial and error.  That is where my blog comes into play.  I’ve always thought that my blog would be my way to remind my future self on how to do things.  Because let’s face it, I have a bad memory :-).

So here is a compilation of technical things that I have learned along the way while making Scuba Chibi:

Also, here are some blog entries for the art that I made for the game:

So, look out for my game Scuba Chibi, coming soon to the iOS App Store! 😀

Check if Device is Ready in Phonegap

Apparently, you have to check if your device is ready before you can use Phonegap plugins like Google Analytics and Admob.  Use the “deviceready” listener:

if(( /(ipad|iphone|ipod|android|windows phone)/i.test(navigator.userAgent) )) {
  document.addEventListener('deviceready', initApp, false);
} else {
  initApp();
}

How to add Google Analytics to a Phaser.js and Phonegap Build Project

Sign in to (or sign up for) Google Analytics

Go to Dashboard

Go to Account (or Create a new Account)

Create a new Property – Mobile App  (At first, I had it on Website and got no data.  So, make sure you select Mobile App.)

Fill in the details. Website URL can be fake since it’s a mobile app and not a website. Whatever you put, place it in the code below where it says “yourwebsite.com/this_can_be_a_fake_url.”

You’ll see Tracking ID after clicking button Get Tracking ID. Whatever the Tracking ID is, place it in the code below where it says “UA-x-x.”

Directory can look like this:

- js
  boot.js
  menu.js
-- lib
   phaser-no-physics.min.js
index.html

NOTE:  Notice that the index.html below will include the script src “cordova.js” and “GAPlugin.js.”  You don’t need to have these files physically in your directory; they’ll be generated with the build in Phonegap automatically for you when you create your IPA.  You just need to include the script src in your index.html and that’s it.

Add this to your config.xml:

<!-- Google Analytics -->
<gap:plugin name="com.adobe.plugins.gaplugin" />

Add these to your <body> in index.html:

<script type="text/javascript" src="cordova.js"></script>
<script type="text/javascript" src="GAPlugin.js"></script>
<script type="text/javascript" src="js/lib/phaser-no-physics.min.js"></script>
<script type="text/javascript" src="js/boot.js"></script>
<script type="text/javascript" src="js/menu.js"></script>
<script>
  var gaPlugin; // Google analytics stuff
  if(( /(ipad|iphone|ipod|android|windows phone)/i.test(navigator.userAgent) )) {
    // alert('hello world! this is a device');
    document.addEventListener('deviceready', initApp, false);
  } else {
    // alert('hello world! this is NOT a device');
    initApp();
  }

/**
 * Init game, init google analytics
 */
function initApp() {
  game.state.add('menu', Title);

  // Init google analytics
  gaPlugin = window.plugins.gaPlugin;
  gaPlugin.init(onGASuccess, onGAError, "UA-x-x", 10);  // replace UA-x-x with your Tracking ID
}

function onGASuccess() {
  // track page
  gaPlugin.trackPage( gaPluginResultHandler, gaPluginErrorHandler, "yourwebsite.com/this_can_be_a_fake_url");
  continueApp();
}

function onGAError(err) {
  //alert('Error in initializing Google Analytics : ' , err);
  continueApp();
}

function gaPluginResultHandler() {
  // success
}

function gaPluginErrorHandler(err) {
  // error
  //alert('Google Analytics plugin error : ' , err);
}

/**
 * Continue app after google analytics initialization
 */
function continueApp() {
  game.state.start('menu');
}
</script>

In boot.js:

// Phaser game object
var game = new Phaser.Game(GAME_WIDTH, GAME_HEIGHT, Phaser.AUTO, 'game_div', { preload: this.preload, create: this.create, update: this.update, render: this.render }),

  // buttons
  playButton;

// booting / preloading assets
Boot = function () {};
Boot.prototype = {
  preload: function() {
    // loading screen
    game.stage.backgroundColor = '#000';

    // preload all of the game assets

    // menu assets
    game.load.image('playButton', 'assets/images/play-btn.png', 180, 44);
  },
  create: function() {
    // transition to title screen when loaded
    game.state.start('menu');
  }
};

In menu.js:

// Title Page
Title = function(){
};
Title.prototype = {
  preload : function() {
  },
  create : function() {
    // button
    playButton = game.add.button(100, 100, 'playButton', this.transitionGame, this, 0, 0, 0);
  },
  transitionGame : function() {
    // google analytics
    gaPlugin.trackEvent(gaPluginResultHandler, gaPluginErrorHandler, "Button", "Click", "Main Menu - Play Game", new Date().getMilliseconds());
  }
};

Did the code work?  Open your mobile app.  With the app still open, sign in to Google Analytics and go to the Realtime > Overview.  It should say that there is at least one active user online right now (and that’s you!).