This past week, TechCrunch had an article about the Flappy Bird developer removing his app from the App Store. As a game developer, the whole Flappy Bird app story was very interesting. It was a simple-in-concept game that was very difficult to play. Apparently, people found this very addicting and it became the #1 free game in the App Store. It did have ads in it, and supposedly, at one point it was generating $50,000 of ad revenue a day. But the developer found that it was a lot of pressure to deal with the popularity, so he took it down, and a bunch of clones appeared in its place.
But anyway..... the article referred to some statistics found on a site called App Annie. I'd never heard of the site, but it compiles statistics about iOS applications. It does that for free for every app, including Monster Cache. It seems it can also do the same for the Play Store, but only if you sign up for an account and then tell them your Google Developer Console password. I'm not sure I'm comfortable with that, but I did already learn some interesting things from the free data about the iOS version.
At one point, the iOS version of Monster Cache was in the top 500 grossing Adventure and Family apps in the United States. And more recently, it was in the top 500 overall Adventure and Family app downloads in Ireland and the Czech Republic. Based on the dates, the United States grossing ranking came after we got the good response from the Kansas geocaching club, even though that was only about $60. The Ireland and Czech Republic rankings came after our international Facebook ad. (That ad cost $100 and brought in about 100 new users, so it cost about $1 / new user). I don't know where App Annie gets this ranking data, since gross revenue and specific # of downloads aren't publicly displayed in the App Store. But since TechCrunch references them, I'll believe it.
(Current # players on Legends Board: 202)
Wednesday, February 12, 2014
High cost of developing for Apple
You could say that I am biased because I do all my daily development work on a Windows machine and use a lot of Google tools. But I've been very frustrated by how much money it costs to develop a phone app for Apple platforms.
First of all, you HAVE to have an Apple computer to develop for the Apple platform. The converse is not true for Android, you can develop for Android using a Mac. But Apple forces you to have an Apple computer in order to produce a testing profile through their development environment, XCode. So when I wanted to develop Monster Cache for iOS, I had to go buy an Apple computer that ran a certain version of XCode, which translated to needing OS X 10.7 (Lion). So I got a used iMac for about $400.
Next cost is the fee for a developer account. For a Google Play developer account, there is a one-time fee of $25. For Apple, its a YEARLY fee of $100. I just had to pay for my second year.
After paying for both of those, I was able to develop Monster Cache for iOS and make updates for a little over a year. Then iOS 7 came out. Developing for iOS 7 requires the latest version of XCode, XCode 5. XCode 5 requires that your Mac's operating system be at least OS X 10.8 (Mountain Lion). Apple no longer distributes version 10.8, so if you want to upgrade through the App Store, then you have to upgrade to OS X 10.9 (Mavericks). Of course, my older iMac does not support 10.9. So I will have to buy another Mac, which means another few hundred dollars.
The last Apple-specific cost I've been seeing is far less significant, and may not even be Apple's fault exactly, but its just a little salt in the wound. When people make In App Purchases, Google and Apple transfer the money to my bank account at the end of the month. Apparently, Google's transfer is a domestic one, but Apple's is an international transfer. My bank charges me $3.50 for each monthly transfer that Apple makes to my account.
First of all, you HAVE to have an Apple computer to develop for the Apple platform. The converse is not true for Android, you can develop for Android using a Mac. But Apple forces you to have an Apple computer in order to produce a testing profile through their development environment, XCode. So when I wanted to develop Monster Cache for iOS, I had to go buy an Apple computer that ran a certain version of XCode, which translated to needing OS X 10.7 (Lion). So I got a used iMac for about $400.
Next cost is the fee for a developer account. For a Google Play developer account, there is a one-time fee of $25. For Apple, its a YEARLY fee of $100. I just had to pay for my second year.
After paying for both of those, I was able to develop Monster Cache for iOS and make updates for a little over a year. Then iOS 7 came out. Developing for iOS 7 requires the latest version of XCode, XCode 5. XCode 5 requires that your Mac's operating system be at least OS X 10.8 (Mountain Lion). Apple no longer distributes version 10.8, so if you want to upgrade through the App Store, then you have to upgrade to OS X 10.9 (Mavericks). Of course, my older iMac does not support 10.9. So I will have to buy another Mac, which means another few hundred dollars.
The last Apple-specific cost I've been seeing is far less significant, and may not even be Apple's fault exactly, but its just a little salt in the wound. When people make In App Purchases, Google and Apple transfer the money to my bank account at the end of the month. Apparently, Google's transfer is a domestic one, but Apple's is an international transfer. My bank charges me $3.50 for each monthly transfer that Apple makes to my account.
Tuesday, January 21, 2014
Facebook Ad
Back in March of 2013, I ran a Google ad for Monster Cache. I had a $150 coupon if I spent $50, or in other words, $200 worth of advertising for $50. That $200 only got me about 20 signups as far as I could tell. So roughly $10 per signup, which is horrible.
A couple weeks ago I got a coupon from Facebook for $50 advertising credit without having to spend anything. So I started a Facebook ad yesterday. It works very similarly to a Google ad. You set a daily budget, you give it keywords and other parameters to target your audience, and it charges you per impression based on how "valuable" your target audience is, or something like that. I set my daily budget at $10/day, which I think is considered laughably low :-) But I'm not in a hurry and I want to see how it works before spending a bunch. So far I have spent $18 and about 16 people have signed up. That's just over $1 per signup, or about 10 times better than Google! Its' also resulted in 3 Facebook page likes, and 18 people who like my Facebook advertisement itself, LOL.
I'm also finding that the Facebook Ad Manager is easier to understand and navigate than the Google ads. I originally uploaded 2 images. It created 4 separate ads: one for the News Feed and one for the Right Column for each image. Of those original four ads, only one seemed to be getting many clicks -- the one with the large image in the News Feed. The others had used up $2 with no results, the large image in the News Feed had used up $16. Surprisingly, most of the signups it generated were in our European countries, not the US. So I took the good ad and split it into two more -- one for US only and one for Europe only. Now I want to see if the European ad clicks might be cheaper, so maybe I can get the price down to less money per sign up. (UPDATE: Turns out the European ones were more expensive).
Here's a screen shot of what my ads look like now:
A couple weeks ago I got a coupon from Facebook for $50 advertising credit without having to spend anything. So I started a Facebook ad yesterday. It works very similarly to a Google ad. You set a daily budget, you give it keywords and other parameters to target your audience, and it charges you per impression based on how "valuable" your target audience is, or something like that. I set my daily budget at $10/day, which I think is considered laughably low :-) But I'm not in a hurry and I want to see how it works before spending a bunch. So far I have spent $18 and about 16 people have signed up. That's just over $1 per signup, or about 10 times better than Google! Its' also resulted in 3 Facebook page likes, and 18 people who like my Facebook advertisement itself, LOL.
I'm also finding that the Facebook Ad Manager is easier to understand and navigate than the Google ads. I originally uploaded 2 images. It created 4 separate ads: one for the News Feed and one for the Right Column for each image. Of those original four ads, only one seemed to be getting many clicks -- the one with the large image in the News Feed. The others had used up $2 with no results, the large image in the News Feed had used up $16. Surprisingly, most of the signups it generated were in our European countries, not the US. So I took the good ad and split it into two more -- one for US only and one for Europe only. Now I want to see if the European ad clicks might be cheaper, so maybe I can get the price down to less money per sign up. (UPDATE: Turns out the European ones were more expensive).
Here's a screen shot of what my ads look like now:
Monday, January 13, 2014
Azure CPU spike all Sunday afternoon and evening
The Monster Cache server is hosted on Microsoft Windows Azure. I made that decision for a few reasons:
- Initially I was just going to use my existing Lanitek server, but I have another important web site running there, GPRA Upload. Once I had an issue on Monster Cache where I wasn't closing some database connections and it brought down not only Monster Cache, but GPRA Upload too. That convinced me to get Monster Cache its own server.
- At the time, I had just recently attended a seminar on Windows Azure, so I guess I was curious to try it out. And they were offering a 90 day free-trial (or maybe it was 180 day?), so that was good since we were several months away from being ready to launch.
- I had, and maybe still do have, a hope that if Google or Apple ever promote the game then there will be a spike in traffic, and then I could easily increase the server capabilities on a short-term basis, if needed.
I haven't been super happy with Windows Azure for these reasons:
- Its more complicated to use than a normal web server. Some things that took extra time that I can think of off-hand are web Sessions, file uploading, and making backups.
- They keep changing the features. When I signed up, they had pretty decent tech support. Now you have to pay extra for tech support, with the minimum plan being an extra $29 / month
- It hasn't worked perfectly, I've had a couple instances of long down time that I consider their fault.
One instance of down time was yesterday. I noticed in the afternoon that my Monster Cache app wouldn't log in, but I thought it was my phone's issue. When I tried the web site at 9 pm that night, I found the web site wasn't even coming up, but just failing to respond. I started looking for support options, and that's when I found that I no longer had tech support, just billing support. So then I looked for a way to "reboot" the app, since there isn't really a lone server to reboot. That's when I found the CPU monitoring tool. It showed that Monster Cache had been using 86% CPU since mid-afternoon. Here's their chart:
That was very strange since I know that our traffic is VERY low, like only dozens to hundreds of hits per day. There was an option to reboot an instance of a role. I only have one instance, so I rebooted it at about 10 pm. You can see that the CPU went back down to 0% and its been working fine so far today.
Monster Cache European Launch
Once Apple approved the latest Monster Cache version on iOS, we were ready to launch in Europe! I'd already generated all the monsters a couple months ago or so. I tried to use about the same monsters / square mile proportions as the U.S.. But when using the monster viewer, it still seemed like there were too many empty patches, so I added a lot more level 1 monsters than my initial calculations (And around the same time I generated another million level 1 monsters for the U.S., to try to reduce empty spots in U.S. as well).
To do the launch, I just went into the app configuration areas in both Android and iOS and selected all the new countries in which I wanted to release. It was pretty much that easy, after all the other preparations had been made in the application itself. Oh yeah, I also had to add the new countries to our "Supported Countries" table in the database so that they would show up on the registration form for people to indicate where they are from.
Next was promoting it. I only had two leads there.
To do the launch, I just went into the app configuration areas in both Android and iOS and selected all the new countries in which I wanted to release. It was pretty much that easy, after all the other preparations had been made in the application itself. Oh yeah, I also had to add the new countries to our "Supported Countries" table in the database so that they would show up on the registration form for people to indicate where they are from.
Next was promoting it. I only had two leads there.
- When we first made the beta and the Vimeo video a year ago, a German blogger had found Monster Cache and blogged about it. Unfortunately, Monster Cache wasn't ready for Germany at that time. Now that it was, I tried to comment on that blog post to let them know, but the comment never got approved.
- As a result of that post, 3 German people had signed up a year ago during that beta. I had had to email them to tell them we weren't ready for Germany. So now I was able to email them again and let them know it was ready! But I didn't hear back from any, nor did it seem like any started playing.
Even though both of those ideas seemed to fail, we started getting sign-ups from Germany and the UK. As it stands now, we have 9 German players on the Legends board, and one from the UK. Current Legend board total is 172 players with 2693 monsters found. And we got our first German In App Purchase too.
Here is the full list of European countries for which I generated monsters and released the app, along with their approximate square miles, which I think I got from Wikipedia. The countries I chose were essentially based on wanting to get the biggest Western European countries and then including other countries that fell within the large box that bounded all of those. Not sure why Apple did not provide the capability to release in Boznia and Herzegovina.
| UK | 94060 | |
| Ireland | 32595 | |
| Spain | 194897 | |
| Portugal | 35655 | |
| France | 211209 | |
| Germany | 137847 | |
| Belgium | 13120 | |
| Netherlands | 16485 | |
| Switzerland | 15943 | |
| Austria | 32383 | |
| Italy | 116304 | |
| Slovenia | 7819 | |
| Croatia | 21829 | |
| Czech Republic | 30365 | |
| Boznia and Herzegovina | 19741 | Android only |
Wednesday, December 18, 2013
Android 4.4 and iOS 7
The European launch got sidetracked by Android 4.4, aka Kit Kat, and iOS7. It all started when....November 12th I did a presentation for the Google Developers Group here in Kansas City.
A few people in the audience downloaded the app. Since these were avid Google users, a couple of them had the new Android 4.4 installed on their phones. They quickly learned, and showed me, that the app crashed on the registration screen right when you tried to open the dropdown menu that listed state names. I decided I better get that fixed before I opened the app up for wider distribution. Since it was an OS-specific issue, I figured it might be fixed by updating PhoneGap. I stopped updating PhoneGap when I realized it was going to break my In App Purchasing, so that wasn't a great option. Instead, I just put in a hack so that Android 4.4 replaces the drop down list with a type-in text field :-)
I made one other small bug fix to update a user's view range right after binoculars are purchased, then I released that version to Android. I then built it on Apple and submitted that version for iOS. I soon got an email from Apple that said "Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format". And there were a couple other sizes. Turns out they are all new sizes for iOS 7. We've already created sooooo many different size icons for Android and iOS, it was frustrating to have to make more. But our designer, Kent, got them to me pretty quickly, then all I had to do was get them in the bundle file. I couldn't remember how to do that, but I found this post on Stack Overflow, which helped. I resubmitted this afternoon, and no email yet about missing icons, so knock on wood, I think it worked. Made it just before Apple's December 21st cutoff for submitting apps before they take a week break of not allowing new submissions. That's from their email that said "iTunes Connect will be temporarily unavailable from Saturday, December 21, to Friday, December 27, 2013."
So now I'll wait until the iOS app is approved, and then on to Germany! Current Legends count is 158 with Whopper on top with 743 monsters!
A few people in the audience downloaded the app. Since these were avid Google users, a couple of them had the new Android 4.4 installed on their phones. They quickly learned, and showed me, that the app crashed on the registration screen right when you tried to open the dropdown menu that listed state names. I decided I better get that fixed before I opened the app up for wider distribution. Since it was an OS-specific issue, I figured it might be fixed by updating PhoneGap. I stopped updating PhoneGap when I realized it was going to break my In App Purchasing, so that wasn't a great option. Instead, I just put in a hack so that Android 4.4 replaces the drop down list with a type-in text field :-)
I made one other small bug fix to update a user's view range right after binoculars are purchased, then I released that version to Android. I then built it on Apple and submitted that version for iOS. I soon got an email from Apple that said "Missing recommended icon file - The bundle does not contain an app icon for iPhone / iPod Touch of exactly '120x120' pixels, in .png format". And there were a couple other sizes. Turns out they are all new sizes for iOS 7. We've already created sooooo many different size icons for Android and iOS, it was frustrating to have to make more. But our designer, Kent, got them to me pretty quickly, then all I had to do was get them in the bundle file. I couldn't remember how to do that, but I found this post on Stack Overflow, which helped. I resubmitted this afternoon, and no email yet about missing icons, so knock on wood, I think it worked. Made it just before Apple's December 21st cutoff for submitting apps before they take a week break of not allowing new submissions. That's from their email that said "iTunes Connect will be temporarily unavailable from Saturday, December 21, to Friday, December 27, 2013."
So now I'll wait until the iOS app is approved, and then on to Germany! Current Legends count is 158 with Whopper on top with 743 monsters!
Tuesday, November 5, 2013
Preparing for European Launch
Our ultimate promotional goal is still to get a featured spot in the Google Play store or Apple App Store. When/if that happens, then hopefully we'll see a big spike in number of downloads and signups. that number will, of course, be proportional to the number of people who see the promotion. So in order to make the largest number of people see that promotion when/if it happens, we want Monster Cache to be available in as many countries as possible at that time.
The only reason we haven't made Monster Cache available outside of the US up until now is because I was worried about that adding a lot more monsters to the database would slow down the performance. We already have 21 million monsters in the database for the US. The queries are pretty quick, I have indexes built for the main search parameters. Still, I wasn't sure how many more millions it would take before slowing down. So I moved the monster searching query to a stored procedure to try to speed it up. Its hard to tell how much it helps since the query takes less than a second, but I don't think it can hurt.
A lesser consideration is the space needed in the database. In SQL Azure, we pay by the GB, so adding another few million monsters might make it an extra $5-$10 / month.
And last, since we can't really test out the new monsters I'll be placing in Europe, I wanted a way to be able to view the placements of new monsters. So I built a new monster viewing administration tool. Its almost the same Google Map code lifted straight from the game, but I can move anywhere I want, zoom however I want, and see monsters of any level.
Now that the monster viewer and stored procedure are in place, I'm almost ready to generate the monsters! Its a bummer that the timing has worked out such that its now middle of Fall. Not sure how many people will want to roam around looking for monsters if its cold and snowy soon. But at least its ready so I can generate them at any time now.
The signups from the first round of emails to geocachers seem to have stalled now. We're at 151 users on the Legends board from about 493 total signups (31% of signups find one or more monsters).
The only reason we haven't made Monster Cache available outside of the US up until now is because I was worried about that adding a lot more monsters to the database would slow down the performance. We already have 21 million monsters in the database for the US. The queries are pretty quick, I have indexes built for the main search parameters. Still, I wasn't sure how many more millions it would take before slowing down. So I moved the monster searching query to a stored procedure to try to speed it up. Its hard to tell how much it helps since the query takes less than a second, but I don't think it can hurt.
A lesser consideration is the space needed in the database. In SQL Azure, we pay by the GB, so adding another few million monsters might make it an extra $5-$10 / month.
And last, since we can't really test out the new monsters I'll be placing in Europe, I wanted a way to be able to view the placements of new monsters. So I built a new monster viewing administration tool. Its almost the same Google Map code lifted straight from the game, but I can move anywhere I want, zoom however I want, and see monsters of any level.
Now that the monster viewer and stored procedure are in place, I'm almost ready to generate the monsters! Its a bummer that the timing has worked out such that its now middle of Fall. Not sure how many people will want to roam around looking for monsters if its cold and snowy soon. But at least its ready so I can generate them at any time now.
The signups from the first round of emails to geocachers seem to have stalled now. We're at 151 users on the Legends board from about 493 total signups (31% of signups find one or more monsters).
Subscribe to:
Posts (Atom)




