What % of your active users use GameCenter?

I'm thinking of implementing GameCenter functionality but of course there's no point if only 10% of my userbase is going to care.


Anyone have stats they can share?


Thank you! —David

Replies

Since the user base varies from app to app it is impossible to answer your question as asked. For my app ‘Forty Twelve Solitaire’ the percentage is much higher than for my app ‘Watch My Stocks’ for obvious reasons. But perhaps you can convince your users who do not use Game Center to sign up. It’s quite easy and can be done without leaving your app.

Hard to be sure, but for Six Ages, about 59% (this is based on dividing the number of Authenticated events I track by the number of Launch events).

Are you comparing only application:didFinishLaunchingWithOprtions: to Game Center Authentication or are you comparing (application:didFinishLaunchingWithOptions + applicationWillEnterForeground:) to Game Center Authetication. If the later - good information! If the former - you are comparing apples to apple trees.

I track a Launch for application:didFinishLaunchingWithOptions: — why is that not similar for a conventional game? (I realize there can be situations where apps launch but don’t go foreground, but I can’t think of why a game would ever do that.)

If a Game Center enabled app is 1) launched and then 2) enters background and then enters foreground and then 3) enters background and then enters foreground before 4) terminating then you will get one launch event and three authentication events. Are you correctly accounting for this?

Ah, yes, I think so. I am only logging once per player (not once per authentication callback), so the only way to double-count would be if they sign out while still running the game.

I don't fully understand what you are doing. We agree that simply "dividing the number of Authenticated events I track by the number of Launch events" will not do unless you mean something more elaborate by "events" than just "events".


"Launch events" - A single user will have multiple launch events - you need to be sure you log only one of those for each user. There are many ways of doing that but there are also many ways of not doing that. Are you sure you log only once for a given player even if they launch multiple times?


"Authenticated events" - A single user will authenticate each time their app launches and each time their app enters foreground. There are many ways of assuring that you count only once for each user but there are also many ways of not doing that. Are you sure you log only once for a given player even if they autheticate many times?

Yes I am sure I log a Game Center authentication only once per player per launch. And I choose to call this an authentication event.


I don’t understand what you mean by multiple launches. I also mentioned that above — I log each application:didFinishLaunchingWithOptions:. I choose to call this a launch event.


So I know how many times the app is launched, and I know how many times a launched game authenticates (for the first time that launch) with Game Center. So I think it is reasonable to say that 59% of my players are using Game Center. (That does assume that all players launch with the same relative frequency, but I can’t see making any other assumption there. If that’s your quibble, then I don’t know what to say. I’m trying to give useful information to the original poster.)

> Yes I am sure I log a Game Center authentication only once per player per launch.


Good, thank you for confirming.


> I don’t understand what you mean by multiple launches.


I mean that one user will open the app after the system has completely closed the app. That will result in a launch not a return to foreground.


>So I think it is reasonable to say that 59% of my players are using Game Center. (That does assume that all players launch with the same relative frequency, but I can’t see making any other assumption there.


Well this is a bit of a problem. Assume you have 100 users who launch once and never play the game again - perhaps because they are not Game Center users. And you have one user who plays the game over and over again and because they are using lots of systme memory somewhere the system terminates the app each time they close it. Your statistics will be skewed.


> If that’s your quibble, then I don’t know what to say.


I will ignore the tone of the word 'quibble'.


> I’m trying to give useful information to the original poster.


Yes, and your data was useful and became even more useful when you clarified that you were triggering on authetications that occur after a launch event not authetications that occur after a return to foreground event. If you logged the user's activity in something as simple as NSUserDefaults and reported a user authengtication and launch only once then your data would be most useful.

Getting off in the weeds about data collection techniques here, but my first thought is that your proposal has its own problems.
One reason for that is that I do not even try to authenticate every launch. I authenticate when the player does something that could plausibly generate an achievement. (The idea is to present the initial authentication dialog only once the player is into the game a little.) So it’s just as likely that Game Center is under-reported, if players launch and get distracted before getting as far as authentication.

Mostly mentioning this because I think it’s a best practice (like the way you shouldn’t ask to do push notifications until you have established a case for it).

I agree with your best practices. As far as using your data to estimate % of users using Game Center; what I am saying is compare equals and don’t double count. I assume you are comparing number of users who run the app to number of users who achieve something and use Game Center - and you see the undercounting issue if 99% of users never achieve anything. Double counting depends on how your code decides not to count a user a second and third time. The better approach is to trigger something only the first time the user achieves something not on launch.