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!

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).

Thursday, October 10, 2013

Latest Purchase Statistics

Our campaign to geocachers combined with our decision to increase the size of the coin packages is paying off!  In the last week, we've had two people purchase our Unlimited Nets package for $14.99 and a few more purchases at $11.99 and $3.99.  With server costs of $30 a month, it looks like we will be profitable this month!  We have to take 30% out of that for Google and Apple, and one person bought the exact same $11.99 package twice in a row and may ask for a refund if that was a mistake, but even then we should still be close to profitable.

Some stats so far....
473 signed up players
$136 total purchases

after 30% to Google and Apple that leaves

$95.73 for us, which is
$0.20 per signed up player

That's not bad if we can get our registered users into the tens of thousands.

Tuesday, October 8, 2013

Feedback from Geocachers

Its been exciting for Monster Cache the last few days, after we sent emails to lots of geocachers.  We've had about 86 sign ups so far, and 25 of those have found a monster so far.  That's about 30%, which is about average, maybe a bit more.  So 136 on the Legends board now.

One critical thing an iOS user found right away was in the Store.  Since our in-app product of "Unlimited Nets" was rejected in iOS, I had just added more and bigger coin options.  I didn't realize that made the list so long that it scrolled off of the bottom of the screen on iPhones.  So the "CLOSE" button was not visible, so if you decided not to buy coins, you couldn't close that window or go to another tab, so you were stuck and had to exit the app.  Ideally, I would like to keep all the coin options and have that window scroll, but that means a new app version.  So for now I just disabled some purchase options.  Turns out there was the same issue on Android for my small phone, so I did the same thing on Android.

I also noticed that referral emails were coming from my kcwebprogrammers.com address, which wasn't good.  Google wasn't letting me authenticate with lanitek.com, and monstercache.com was still forwarding from GoDaddy.  So I had to set up a new email address on GoDaddy and do SMTP through them.  Worked fine, just took a while to figure out what was going on.

For the email fix, and to add an answer about binoculars to the FAQ, I had to do a web release.  Naturally, Windows Azure decided my release credentials had expired or something.  I'm really not sure why it stopped, or what credentials I had before.  But luckily I figured out how to create a certificate and found a good comment about where to upload it, so I got past it.

Last interesting thing (for now) was I got two nearly identical emails from two different people that were disappointed that they couldn't play forever for free.  Here is one, and the response I sent to both:

"This is going to be a very short lived game if the ONLY way to earn coins without spending real money is referring friends. What happens if your friends don't want to play or or you run out of friends to get signed up? The game HAS to be self sustaining. People will quit playing if they have to spend real money."

My Response:
"Hello,

Thank you for your feedback on Monster Cache.  Almost all phone applications try to generate revenue in some way -- either by advertising, or an up-front purchase price, or in-application purchasing.  For Monster Cache, we have chosen in-application purchasing.  We want people to evaluate the game for free, and hope that they will enjoy it enough to purchase more coins, or refer friends. If you feel that you did not have enough time to evaluate the game, then we are happy to give you some more coins so that you can play a while longer.  We have added another 100 coins to your account.  Also, if you reach Level 4, then there are some Treasure Chests with small amounts of coins that you can find as well.

Again, we appreciate the feedback.  Best of luck in your monster hunting!
Monster Cache Team"

Tuesday, October 1, 2013

Emails to Geocachers

After I got back from my fishing trip on September 8th and we wanted to send emails to geocachers that weekend of the 13th.  Somehow, we didn't get around to it, but we did try one new promotion that weekend.  We put up a poster at Kansas Coffee Company in Olathe that had a picture of a Cyclops Bunny and said "There is a Cyclops Bunny here", with a short description of the game and some QR codes for download links.  Very nice of our friends there to put the poster up.  It has its own referral code, but I haven't seen anyone sign up with it yet.

Anyway, we thought about sending the emails on the Sunday of the next weekend, the 22nd, but realized we'd rather send them out on a Thursday so that people might use right away on the weekend without forgetting about it.  So finally, we started sending out emails on the 26th.  Kathleen had a list of 230 or so emails she got from web sites.  We sent them in batches of about 30 at a time and sent all 230!

Soon, we got rejection notices from Google saying that all of the email but one had been rejected as potential junk mail, i.e. spam.  I guess technically you could say they were spam, in that they were unsolicited emails trying to promote something to a large number of people we don't know.  But on the other hand, they were very specifically targeted to people who put their emails online because they weer interested in geocaching.  We do think they'll like it and they can try it for free to decide for themselves, so we don't feel too bad about sending the emails.

Since only 30 got out that first night, Kathleen tried sending more the next day and only got another 10 or so out before getting the message again.  And then maybe 10 more the next day.  That resulted in about 8 sign-ups, and 2 more people on the leader board, consistent with our ratio of about 75% of signups never finding a monster.  And interestingly, one Like of Monster Cache on Facebook, so that was nice.  But still not quite yet the impact we were hoping for.

There were 111 on the Legends board last week, and 113 now after the first 50 emails.

Friday, August 30, 2013

Monster Cache 1.2 released on iOS

Good news, version 1.2 of Monster Cache was approved last night by Apple!  One wrinkle.... they wouldn't let me do the Unlimited Nets option without some modifications.  Coins are "consumable" In App Purchases, but an unlimited option would be "non-consumable", which requires a "Restore" button in the app.  Instead, I just made bigger coin options for iOS - 2500 and 5000.  It actually might be an interesting test to see how many people use those options compared to Unlimited Nets on Android.

I'm headed out of town all next week for fishing trip with Kathleen's brothers.  I told her to wait to start her geocaching club promotions until I get back, just in case any bugs were found.  So hopefully the numbers will start going up again in a couple weeks!

Current number of users on Legends board is 105.

Friday, August 23, 2013

Your app status is Rejected

Apple's developer portal finally let me accept the agreements it wanted me to accept, and I was able to submit the new version of Monster Cache about 6 days ago.  This morning in finally went in to review.  And in the same day, I got a notice that it was rejected.  Specifically, our new "Unlimited Nets" IAP.  Here was their reason:

We found that the Purchasability Type for one or more of your In App Purchase products was inappropriately set, which is not in compliance with the App Store Review Guidelines.

Unlimited nets +1500 monster coins is set to consumable.

However, based on product functionality, it would be more appropriate to use the Non-Consumable In App Purchase type. Non-consumable products are only purchased once by users and are always available on all devices that are associated with that user's iTunes account. 

For more information about Purchasability Type, please to refer to the iTunes Connect Developer Guide.

The Purchasability type cannot be changed once an In App Purchase product has been created. Therefore, you will need to create a new In App Purchase product with the correct Purchasability Type. To create a new In App Purchase in iTunes Connect, go to Manage Your In App Purchases, select your app, and click "Create New". The current product will show in iTunes Connect as "Rejected".Note: Apps that offer In-App Purchase products that must be restorable are required to include a "Restore" feature. The following In-App Purchase types must be restorable:

- non-consumable products
- auto-renewing subscriptions
- free subscriptions

For more information, please see the section, Restoring Transactions, in the In-App Purchase Programming Guide
--------------
And my response....
------------
Hello,
I understand your point about the Purchasability Type.  However, our application requires users to create a login account, and all their account information, including In App Purchases, is stored on our server.  Therefore, even if a user had a new device and installed the app on the new device, once they logged in with the same account they used on the old device, all of their purchases would still be remembered on our server and would carry over to the new device.  We actually believe that making this IAP non-consumable could lead to abuse, as one player could log in with their account on another player's device who has purchased the non-consumable IAP, then click "Restore" and have the IAP "restored" from the App store to the second account without paying for it.  I hope that makes sense and that you will allow us to keep this IAP as consumable.

Thank you for your consideration, please let us know.
Eric Barr
------------------------

Just a few minutes later, they came back with:
------------------------
Thank you for your feedback. 

If you wish to appeal your review, you can submit a request to the App Review Board. The App Review Board was created for developers to appeal an app review they have concerns with. Once the App Review Board has completed their evaluation, they will contact you directly with the decision.
-----------
So I decided just to create two more Monster coin packages for iOS.  Instead of the $14.99 Unlimited nets and 1500 Coins, I'll try $14.99 for 2500 Coins, and $17.99 for 5000 Coins.  It may actually turn into a neat comparison test between Android and iOS.

Once the app is approved, then maybe I'll try the appeal.

Sunday, August 11, 2013

All Developer Program Services Are Now Back Online - Not exactly

I got an email yesterday with a big headline that said
"All Developer Program Services Are Now Back Online"
I was excited that I can finally Accept their changed contracts and release our new version on iOS!

Well, turns out I didn't get far.  There are two contracts I'm supposed to accept.  I have to accept one before the other.  Before Apple's email that all services are back, I couldn't renew either.  Now, I was able to renew the first, but all the warnings don't seem to acknowledge that, and it still won't let me accept the second.  I had to email their support today:

"When I log in to my developer account, I see a message that says "Review the iOS Paid Applications Agreement", and also "To accept this agreement, the user with the Team Agent role must have already accepted the iOS Developer Program License Agreement in Member Center.".  I have accepted the new Developer Program License Agreement, but I don't see any option for me to accept a new iOS Paid Applications Agreement in the Contracts, Tax, and Banking module.  All I see are options to Edit Contact info or Banking info, or View tax info.  Please help me get past this so that I can submit a new version of my application.
Thanks,
Eric
"
My wife and I are going to try work-camping tomorrow.  That means we're taking our laptops and getting a camp spot with electrical outlets.  But my Mac is not a laptop, so I guess the earliest I'll get this resolved is when I get back Tuesday.

Thursday, August 8, 2013

Installing / Renewing SSL certificate for Windows Azure


Today I had to do one of my least favorite things in web development: install an SSL certificate.  And even worse than usual, this is my Monster Cache certificate so it needs to go on Windows Azure.  I guess I mainly don't like it because there are a lot of steps and I don't do it often, so its easy to forget the process.  And there are event more steps for Azure.  And often something goes wrong which means I have to call GoDaddy, where I buy my certificates.  Such was the case today.  So I wanted to document all the steps for when I have to do this again in two years.

By the way, big thanks to Avkash Chauhan's Blog for this post that got me through installing an SSL certificate in Windows Azure the first time.  This time I was renewing the certificate so some of the steps were a little different for me, so that's why I'm making another list.
  1. Open IIS 7.  This can be on any machine with IIS7.  I use the IIS7 on my Windows 7 development machine.
  2. Go to the Server Certificates section
  3. WARNING: Here is where my problems were today.  Even if you have an existing certificate and you are renewing it, do not click on your existing certificate and choose "Renew...", at least if you are getting your certificate from GoDaddy.  The CSR that is generated for a renewal is not accepted by GoDaddy.  You'll see that it is about twice as long as a CSR for a new certificate, or as the GoDaddy support person said "Using renew puts a bunch of extra code in there that can't be recognized".  So whether you're renewing or creating a new one, choose "Create Certificate Request".  You'll have to enter your company data.  I always use 2048 bits, I think GoDaddy requires it.  Then save the resulting file as a .csr somewhere.
  4. On GoDaddy (or other CA), purchase your certificate for however many years you want.
  5. When asked to enter your CSR, paste your ENTIRE CSR file contents into the CSR request text box.  Continue through rest of steps until certificate issuance is Pending.
  6. On the "Manage Certificates" tab of the "Secure Certificate Services", download the certificate when its ready by checking the checkbox and clicking Download.  (It only takes a minute or so to go from Pending to Current, just hit Refresh occasionally.) Save .zip file to same folder as your .csr file
  7. Unpack zip file
  8. Go back to IIS7 and click "Complete Certificate Request". It will ask you to browse to the response file.  Select the .crt file that was in the zip file.  Choose whatever you want for a friendly name, but if you're renewing, then make sure that your new friendly name is different from your original.
  9. Now you have a certificate installed on your local IIS.  Right click on it in the certificate list and choose "Export...".  Save it as a .pfx file in the same location as your other files and make up a password for the exported file.
  10. This blog post details how to tell your Azure project about your new certificate and how to upload the certificate to your Azure Developer Portal.  I can't improve on that post, but I will say that:
    • I did NOT follow step 7.  And I did not do the verification in steps 8 and 9 either.
    • After logging into the developer portal, it was hard to find the place to upload the certificate.  I found it by going to "Cloud Services" on the left, then clicking my service name on the right, and then "Certificates" was at the far right of the horizontal navigation that appeared on the introduction page.
  11. Now all you have to do is publish your project!
  12. There's one last step in Avkash's blog about setting up the CNAME records if you haven't done that yet.  He links to this blog for those instructions.
Whew, that's it!  Thank goodness I don't have to do it again for two years. Maybe I should have bought even more years though, two years sounds too soon.

Sunday, August 4, 2013

New iOS version delayed by offline Apple Developer Center

I was hoping to release version 1.2 of Monster Cache for iOS today. I went to Apple's developer Member Center and didn't get far.  They still have some things offline since they were hacked a couple weeks ago.  There were two updated agreements that i'm supposed to review before releasing any new versions, and it seems I can't review them because that part of the site is down.  Big bummer. I sure hope they get it fixed soon.

Sunday, July 28, 2013

Signing and zip Aligning Android .apk file

Since I just released a new Android version of Monster Cache, this confusing process is fresh in my mind.  So I thought I'd jot it down for reference later, and for others.

When you want to upload a .apk file to the Google Play store, it has to be signed and zip aligned.  The .apk that Eclipse normally generates and that I send to people for testing can not be uploaded.  Instead, you have to follow these steps to prepare the .apk for uploading

1) You have to set android:debuggable="false" in your AndroidManifest.xml before you can create the signed .apk.  So do that first.

2) In Eclipse 3.7.2, choose File/Export...

3) The first part of the wizard shows a list of folders.  Choose "Export Android Application" in the Android folder

4) In next step, browse to select your project.  At this point, you'll get a warning if your manifest is still set to allow debugging.  Otherwise, it should say "No errors found.  Click Next"

5) This is the confusing part.  A keystore is a password protected file that holds keys that each have their own password.  So if you need to make a keystore, choose "Create new keystore" and choose a location for it and a password for the keystore file itself.  Then you'll create the internal key (aka alias?) and give it a password too.  If you've already created one, then just specify its location here and type in its password.  The rest of these steps assume you had an existing keystore.

6) Once you type in the password for your key store, choose your Alias/Key and type in its specific password

7) Last step of the wizard is to specify the location for your signed .apk file.  I name mine with the version and Signed, like MonsterCacheV120Signed.apk

8) The .apk file still needs to be zip aligned.  The zipalign.exe file is somewhere in the Android SDK folder. Sorry, I don't remember where.  I copy it to the same folder as my .apk file

9) Open a command prompt in folder where you have the .apk file and the zipalign.exe

10) Run this command
zipalign 4 <infile> <outfile>
So for example
zipalign 4 MonsterCacheV120Signed.apk MonsterCacheV120SignedAligned.apk

11) Now you have a signed and aligned file that can be uploaded to the Play store

Version 1.2 Android released

Finally, almost exactly 6 months after version 1 of Monster Cache came out on Android, version 1.2 is out. I devoted most of the day to testing, and I have to admit, I found more issues than I would have liked. Specifically, I would have liked to have found 0 issues, but I found a couple kinda big ones.  Unlimited nets wasn't properly displaying the infinity sign, and registration wasn't properly redirecting people straight to the map.  They were both easy fixes and I did a lot more testing after I fixed them.  So even though it made me a bit nervous at first, I felt better after more testing and went ahead with the Android release.  I'll do the iOS one later this week, assuming their Developer portal doesn't prevent me, since Apple has had parts shut down for a while due to a hacking issue.

Last note, we did hit the 100 mark on the Legend board this week!  We're now at 101.

Monday, July 15, 2013

Version 1.2 Android Beta 2

Unfortunately, did not hit my July 1st goal for release of version 1.2.  Honestly, I can't remember what happened exactly.  I think Kent had a few suggestions, and then I found an issue maybe....not sure.  But the good news is that now we've added even more good features, most suggestions from Kent, including:

-- 2x resolution map icons!
-- more padding on opening instruction text
-- fixed formatting on monster details page
-- store page now shows "YOU BOUGHT IT" if you've purchased special items
-- BUY MONSTER COINS is now green
-- Changed "10 Nets Remaining" to "10 NETS" in header, per readability consultant, Kathleen. She'd prefer it to be white, but I think the caps help enough and are more consistent.

And..... I generated 500,000 treasure chests of 3,7,13,17,23 coins. That was a bit of a funny process. I asked Kent what he thought about a graphic for coins --- maybe a pile, maybe a bag. He suggested a chest, and then maybe we could have other things in them later. That sounded good, so we had Matt draw a chest. Only after tat did we discuss amounts of coins to drop. 50 coins can be bought for $1.00 and we didn't want to be dropping dollar's worths of coins everywhere. So we came up with 5 amounts under 25 coins. I realize now that it seems funny to have a whole treasure chest that has only 23 coins at most, LOL. So I made a couple jokes about it in descriptions for chests of 3 and 7. Also made them visible at level 4 and put in some teasers in descriptions about them being dropped by vampires, which are next level

Hoping to release some time next week.  Then Kathleen will start contacting some geocaching clubs to let them know about it.  Hopefully that will ramp up the registrations again.  We'd been getting one every day or two for a couple months and finally stalled at 96 people on the leader board.  I really think the new version has a better registration experience and will make more new players active players.

Monday, June 24, 2013

Version 1.2 Android Beta

I just sent Kent and Matt the hopeful version 1.2 for Android.  It has these new features and more:
-- Can buy binoculars that give you increased view range
-- Touching net or monster on Google map gives you an info window
-- 20% of the time on Legends page there is a message asking you to rate the app.  It goes away if you ever click the link.
-- New Rawr sound on startup (created by Matt)
-- New monster catching trumpet sound (purchased on Audio Jungle from same user as New Level sound)
-- Can find chests of coins.  Plays a "magic" sound when you get them (also purchased on Audio Jungle)
-- Better formatting on Monster Details page
-- After you buy silver or binoculars, they'll disappear from the market list
-- Allows for future In app Purchase of Unlimited Nets
-- Some changes to make registration easier

I'm hoping to release it on July 1st.  Then we'll figure out how many chests of coins to generate. Then Apple version can be released shortly after, maybe August 1st.  Then more promotion!

Friday, May 10, 2013

Server release - Badges and View Range

This week I released a new version of server code.  Most changes won't be noticeable until people upgrade to the next phone version, which should be ready in a few weeks.  Even then, you can't force people to upgrade, so there will always be people using older phone code with new server code.  So it seems like there is no harm in releasing the web changes earlier than phone changes.

One change that takes effect immediately though is new badges.  New badges are calculated on the server and their images are stored on the server too (until they are built into the next phone version).  So we've got all kinds of new badges, a few shown below.

But first, here is something funny/stressful that happened with the release.  One of the changes was to return the user's view range from the server.  This is to enable different view range(s) if the user buys Monster Binoculars.  Since the circle on the map has a radius of meters, I made the view range in meters.  But my distance calculations on the server were in kilometers.  I thought I should be consistent and change everything to one or the other to reduce the change of mistakes.  Of course when doing so, I introduced a mistake.

What happened is I changed the pickup tolerance (the range that you have to get within to be close enough to catch the monster) to meters, but I still had the distance in kilometers.  So it was basically checking that if your distance from a monster in kilometers -- say 0.1 kilometers -- was less than the pickup tolerance in meters -- 100 -- than you caught the monster.  So people could catch monsters from 100 kilometers away!  That is, monsters at your level, and it actually only gets them in batches of about 5 KM, so really it was within 5 KM.  But right when I tried out the new version, I caught 4 monsters simultaneously.  I realized what was happening right away and fixed it before anyone else caught a big batch.  Then I deleted mine to be fair in the leader charts.  Thank goodness I caught it right away or I could have had a mess of data on my hands.

Some new badges, below:






Friday, May 3, 2013

Game Sound Effects

We've all been thinking a lot lately about sounds for the game.  The first version of the game has two sounds -- a siren-like noise for catching a monster and a trumpet call for a new level.  One user gave us feedback that the siren is not a great sound if you're in a car, and we had to agree with that.

So Matt made a "Rawwwr" sound that is really good and we were planning to use instead.  We liked it so much, we thought "let's make more monster sounds"!  One per monster is quite a lot, but we started giving it a try.  Matt made some good sounds, but we couldn't really agree on what monsters they matched with.  It was seeming like it might be even more work than we already knew it would be.  So then we thought maybe we could make one sound per level, like a sound for trolls, a sound for vampires, etc.  Even that was tricky because monsters at other levels wouldn't have a consistent sound.  It would be weird if you hear some strange rodent noise when you catch a Vulture, or a bird noise when you catch a rabbit.

Now I think we're going to make a new musical sound for catching a monster and use the "Rawr" sound when the map appears, kinda like a "Hello", which is consistent with our web site.  That should be in our next version, which I hope to have ready in a couple weeks.

In-app purchases so far


We have had three people spend 8.99 on 1000 coins.  That's our most expensive option.   It seems like a good ratio that of the 80 people playing, 3 went straight to spending 8.99.  And we've had a couple 0.99 and 1.99 purchases and a 3.99

The bad news is that one of those users sent me an email that he is "concerned about the longevity of the game" considering he has already spent his 1000 coins and thinks its too much to keep paying. Honestly, I thought the 1000 coins would last longer.  

So we're thinking of a few changes.  First, we're going to make an even bigger coin package. Second, we might make an unlimited nets package.  Third, I might drop the coin price of the special items.  Right now, the Medusa mirror costs 300 and the silver 200.

But anyway, the purchases are encouraging!

Friday, April 19, 2013

Upcoming Monster Cache Releases

It's been about 2 weeks since our Monster Cache promotions at Planet Comicon and it looks like our momentum on the sign ups from the show has ended.  We're at 71 users on the Legends board now, so that makes 29 new Legends that caught monsters after the show.  Lots more people than that downloaded the app and registered though, they just never caught a monster.

One of the things we learned (or actually already knew, but it became even more clear) is that we should make the sign up process easier, specifically with requiring people to verify their email accounts.  The point of the email verification was so that people couldn't refer fake accounts and then sign up with the fake account to get a referral bonus.  So now we're not going to require account confirmation unless you've been referred by someone else.  Once the account is confirmed, both users will get a bonus.

So I'm going to work this weekend on an immediate Version 1.3 release for Android and iPhone:
-- simplify registration process
-- fix android 4.1.2 bug with map
-- new monster sound (got good feedback that current siren noise was scary while driving, so Matt made new sound)
-- Monster Binoculars to let you see further on map
-- new In App Purchase pricing
-- some new badges
-- info windows for monsters that shows their Level

The new In App Purchase price changes are motivated by one of our new users who bought our $8.99 package of 1000 coins and used them way faster than we expected people would.  Still not sure what the new price offerings will be, but we're going to make some even higher ones.

Then in two months or so, we hope to release a version that has:
-- a unique sound per monster, or at least per level.  That will be a big but hopefully fun task, probably for Matt.
-- users can find piles of coins
-- (maybe) users can place statues
-- try to improve database performance on finding monsters

Then once I'm convinced the database performance is okay, I'll make some monsters in Europe :-)

Tuesday, April 9, 2013

Planet Comicon

Planet Comicon was this past weekend.  Above is a picture of our booth, with Hellzapalooza (a horror novel) booth on the left and Jeff Balke (comic colorist) on the right.  It was great meeting our booth neighbors and all the visitors to the booth.  And it was fun seeing all the costumes and other exhibits at the convention.

As far as results of our promotional effort....not as much as I'd hoped, but not bad!  We entered people in a raffle for 4 prints of the monsters if they downloaded the app at the booth.  Based on raffle tickets, that would be 45 downloads.  But actually, we got about 41 downloads on Android alone (from 47 to 88) and 34 on iPhone, for real total of 78 on the weekend.  A lot of people took our business cards to download it later, so I guess that accounts for the extras.

Most if not all of those people registered accounts, as I can see them all in the database.  There are 22 new people on the Legends board since Friday, so 56 of the people who downloaded this weekend haven't found a monster yet.  That kinda surprises me, but then again, people may not have time to go get a monster right when they download it.

Nobody bought any of the prints that we made, so that was a bummer.  But then again, that wasn't our main goal.  Mainly we wanted to publicize the game, but I thought of printing the cards as a way to hopefully get some money back to cover the booth expenses.  Didn't sell any, but I'll be sending some to the raffle winners (we picked two).

By the way, total iPhone downloads appears to be about 140, and 88 for Android, for grand total of 228 downloads so far.

Friday, March 29, 2013

Google Ad Words

Today I started the Google Ad Words ad for Monster Cache.  That means that it will be running during the comic show.  I really didn't want to do that because I wanted to be able to tell how many people signed up as a result of the comic show vs. how many sign up as a result of the Google ad.  Now it might be hard to tell them apart.  But the reason I did it now is because Google sent me an offer for a free extra $150 credit if I signed up by this weekend and then spend $50.  That seemed too good to pass up.

One thing I did to try to tell marketing efforts apart is I added a feature to accept promotional codes as the Referral Code.  Before, Referral Codes were just for other people. Now I can make one for a marketing campaign, so as long as people use the code when they register, then I'll be able to tell how they heard about the game.

The way Google Ad Words works is you "bid" on how much you will pay if someone clicks on your ad.  They give you a suggested bid based on what other advertisers are paying for the same key words, and my suggested bid was $0.85.  So that's approximately 250 clicks for $200.  Hard to imagine that we would make $200 back from 250 people, but for now its just about getting people to use it, and hopefully word will spread from there.  You can also set a max spending amount per day, and I set mine at $3, so that means it should run for at least 60 days.

I've been disappointed that nobody new has shown up on the Legends board all week.  And also paranoid that something was broken.  So 2 nights ago I asked my neighbor to sign up.  She did and caught 1 monster, so now we have 38 on the Legends board.  There are actually 138 records in the table of registered users.  So what's going on with the other 100?  Many of those are our test accounts.  But lots of people sign up and then never catch a monster.  Makes me wonder if they don't understand how to play it, that you have to actually walk to the monster.  And some people start the registration but never finish it by clicking the link in their email.  In some cases that's because they incorrectly entered their email address, like with an accidental space added.  I think I'm going to work next on a way to resend those emails if I can tell where the typo is and fix it.

Sunday, March 24, 2013

Monster Cache trademark

Got a response this week from the US Patent and Trademark Office regarding my application for a Monster Cache trademark.  It was temporarily denied :-(  But it sounds like its easy to fix.

What happened was that I applied for a trademark for MonsterCache, no space.  All the time I was developing the application, I never used a space in the name.  There were a few reasons for that:

  1. There's no space in geocache, which is what the name is based on
  2. When I make development folders/projects on my system, I don't use spaces in file or folder names
  3. There are no spaces in domain names
So to me, MonsterCache had no space. 

When Kent designed the graphics, he added a space.  I didn't have a problem with that, I didn't care much either way.  When I launched the app, I found that there were some technical advantages to having a space:
  1. When "Monster Cache" is displayed under the icon on the phone, it can line break at the space instead of line breaking at some weird point near the end
  2. Anyone searching in the store for Monster or Cache or "Monster Cache" will find the app if I have the space in it, but wouldn't find it with those terms otherwise
So eventually, I liked it with a space anyway.  I think that no spaces is more of a common thing for developers, but general public probably likes spaces.

Well, the USPTO did not like that I had applied for a trademark on the term MonsterCache (no space) and supplied graphical specimens that had "Monster Cache" with a space.  They denied it for now, but issued an "Office Action" that says that I can update one or the other.  Like I said, I prefer it with a space now.  AND I don't want to update all the graphics, or more specifically, have to have Kent update the graphics.  So I plan to alter the application to apply for "Monster Cache".

A funny thing I've learned about this is that apparently all the trademark applications are public information, because I've received several emails and letters from lawyers offering to help me with the application.  I got some when I first filed, and now that I have the Office Action, I got a a few more.  Two that I got for the Office Action offered to help for flat fees.  One was $175, the other $275.

Monster Cache 1.1 for Android

Today I released a new version of Monster Cache for Android.  It's version 1.1.  The main difference is that it has the high-res "2x" graphics that we made for the iPhone retina display.  There is some CSS and JavaScript code that you can use to detect the high-res display, and we learned along the way that my phone, the Samsung Galaxy S3, uses the same high-res graphics as the retina displays.  It really looks better.  And now the current iPhone and Android releases have virtually the same features.

One small thing I changed yesterday that is now in the Android version but not iPhone is the login page.  We were finding that when people first install the app and launch it, then the first thing on the page is the login form, and then they just type in their email address and password in the login form, thinking that its a registration form.  Without totally rearranging the pages to show the registration form on launch, I just moved the "New to Monster Cache?" and the "Register Here" button below it to the top of the page.  Then just below that is "Already have an account?" and then the login form.  So hopefully that will be less confusing for first time players.

I thought about submitting a new iPhone version just for that fix.  But since iPhone has to be approved, I'm afraid of a couple things.  One is that I wouldn't want to have the approval go through just before the comic show (in two weeks), find out there is a problem with the version, and then not be able to fix it before the show.  Or even worse would be if the second time they reviewed it, the reviewer noticed something they didn't like and pulled the app just before the show.  So I'll wait to do that release until a couple weeks from now.

Also added a feature to the server side this weekend to allow referral codes for different marketing campaigns.  Hoping that will help me determine which marketing things help most.  Only got one new user this week, so we're definitely ready for some more marketing.

Sunday, March 17, 2013

Promotion ideas

As I mentioned, we had 21 players when iOS launched two weeks ago (we decided not to hide anyone on leader board based on activity, yet).  Kent and I sent out some emails and Matt has been telling people, and now we're up to 36.  Still not growing as fast as I'd hoped, so now we're talking about some other promotional ideas.  So far,

  • I ordered 1500 color business cards from Vistaprint to hand out to people at Planet Comicon, or anytime.  They always have great deals on business cards.  We uploaded our own design, full color, front and back.  1500 was around $50 with shipping using one of their coupons.  Here it is:


  • Matt has this week of for Spring Break, so he wants to put up some fliers at some game stores and other places.  So I made a basic black and white flier that I think looks okay.
  • We looked into printing 8x10 card stocks pictures of monsters to sell at Planet Comicon.  They were about 50 cents each online, but it seems scary to order online without seeing finished product. And that was for a batch of 100 of same picture. Kathleen found we could get 5x7s at Kinkos for about the same price, but in smaller batches of 25 per picture, and we can see before we order.  So we'll do that and get 100 to try to sell for $5 each at show
  • Also going to get a banner to hang on table at show for around $50.
  • Kathleen still hasn't sent her email out to people, so that will definitely help too.
  • Eventually, I will run a Google AdSense ad too.
It will be very interesting to see how each of these things does and what the # users / dollar spent will be for each one.

Saturday, March 2, 2013

In App Purchase product sequencing

One last minute change I had to make right before submitting Monster Cache for review was that the In-App Purchasing products on iPhone were displaying in what seemed like a random sequence.  For iOS, you send a request to the App Store for your available products, then it returns you a list of your products.  I iterated through the list in the order it was sent, and the order was not the sequence I wanted.

What was really happening is they were sorting based on their hidden product ID.  Well, I put numbers in those representing numbers of coins, like coins50, coins100, coins500, coins1000, etc.  As many people know from sorting music tracks with numbers, they don't sort numerically, they sort alphabetically, so 100 comes before 50 because it starts with 1 which is less than 5.

Once I figured that out, I considered trying to sort the array that they returned before I iterated through it, but it wasn't just the product ID's, it was an array of objects.  That seemed like too much hassle, so I just deleted and recreated half of my in app purchasing products to give the product ID's leading 0's, like coins0050. (You can't change a product ID once it has been set, which is why I had to delete and recreate).

Launched on iPhone and iPad

Today is the day we launched on iPhone and iPad!  I just added the App Store button to our web site.

Funny story on the launch date...I thought it was going to launch yesterday.  Since Android launched on February 1st, I was hoping iOS would launch on March 1st.  iTunes connect gives you an option to set the release date, so I had set it to March 1st long ago. Well.... I forgot that when a March 1st release did not seem likely, I changed the release date to March 15th.  I didn't submit it for review until February 21st and I  didn't think it would get approved so fast.  I heard that it could take a couple weeks, and that's if they didn't ask you to fix anything.  I was especially worried that PhoneGap might be doing strange things that they wouldn't link and would ask me to fix. What actually happened is it took 6 days before they started reviewing it on the 27th, and then it was approved that same day!  All in-app purchasing items also approved!  So on March 1st when I realized that it didn't get released, I went and changed release date to March 2nd.

I made a change to the app weeks back so that the leader board only shows people who have logged on in the last 30 days. The board lost a couple inactive users this week, so its down to 19. That's our starting point for iOS launch.  We'll send out some emails, Facebook, etc. soon.  I'm optimistic that we'll get at least as many players in next few weeks as we got for Android.  My hope is that we'll have 40 on the board before Comicon.

Thursday, February 21, 2013

Talked at Geo U in Kansas City

Thanks to my friend and Monster Cache beta tester Steve for inviting me to talk about Monster Cache at his Geocaching University.  I wasn't sure how interested traditional geocachers would be in the app.  There were about 30 people there, and I think 4 or 5 of them installed the app in the next few days, and that's with only Android available.  So I thought that was a pretty good response.

Before the meeting, we had about 15 people on Legend board.  So after a few days we had close to 20, and now we have 21 total.  Still with Android only.  Hoping for a big jump once we launch on iPhone and go to Planet Comicon.

Submission to Apple app store

Finally got the app submitted to the Apple app store.  I'd hope to do it last weekend, but we weren't quite sure that the sounds were working on iPhone.  I was going to get my neighbors as a couple more iPhone testers, but couldn't coordinate our schedules.  Then it seemed like sound was working, so I went ahead and submitted it.  We really didn't have as much iPhone beta testing as we would have liked, but we did get it tested on a few different devices and OS's.  Comparing findings with testers, it seemed that the XCode iOS simulator was a good representation of the devices.  I was able to duplicate problems and I was able to switch devices to try different resolutions.  So I feel good about the submission.

We are now "Waiting for Review", which means we are in the review queue.  They had some stats in iTunes Connect that said that 90% of apps were reviewed in last 5 business days.  Not quite sure if that means the queue is 5 days long, or the whole process takes 5 business days.  I'm just hoping I'll hear something within 2 weeks.  Won't quite hit my hopeful March 1st launch, but close enough.  If I need to fix anything, I should still have time to fix it before.....

Planet Comicon!  Matt found us an event to be our first promotional event.  Looks great!  Cost for a table in Artist Alley is $150 for two days.  They hope to have 10,000 people, and it seems like comic enthusiasts might like our art and games in general, so hopefully its well worth it.  We may even try to sell some artwork to try to make up the money.

Friday, February 1, 2013

Android Launch!

Today we launched MonsterCache on Android.  Very exciting to see it show up in the Play store.  I made a screencast of myself launching it:

Only two new accounts so far, but I guess that's not a big surprise.  Not sure how likely it is that people install it when they've never heard of it, so the two new accounts are friends.  We'll do more of our own promotion once the iPhone version launches. But for now, just excited to have it out there.

Here are a few more details in an email I sent the team:

NOW it's official
We are officially in the Play store!

Download stats are updated once a day, so we may not have any stats on that until tomorrow.  But we can watch the Legend board for new players too. I'll also be adding the Android button back to the web site home page now that I have the URL.

Also, I noticed that currently a search for MonsterCache brings the app right up but Monster Cache (two words) doesn't.  So I changed the name of the app to Monster Cache, two words.  Looks like changes don't take effect for a couple hours.  But that should help us if someone searches for it as two words, or for all searches with "Monster".  And I put it as one word in the app description so hopefully that will force it to come up for searches when used as one word.  We may have to talk more about one word vs two  later.

But we're up!  And prior to launch, video has 107 views, will be interesting to see how that changes too.

Saturday, January 26, 2013

Marketing Refresh including video

This week Kent and Joshua focused on marketing and did a great job!  When I first built the site, my main focus was making it an extension of the game, so that logging in on the site you were able to see all the same data as on the phone.  Kent and Joshua looked at other web sites for mobile games and found that they were really more about marketing.  They also pointed out that there wasn't much need to do things on the site that you could do on the phone already.  So we shifted in the marketing direction.

The site looks great.  Below are some before and after shots of the home page.  And most notably, Joshua made a hilarious promotional / instructional video which is highlighted on the new home page.


 (As a funny aside on the video, we first tried posting it on YouTube on an account that was connected to my Lanitek Google Apps account.  Maybe it was something related to Google Apps, but we could not figure out how to make a channel or upload the video on that account.  So Kent and Joshua made a Vimeo account.  Well, turns out the Google Play store will only let you specify a promo video if it is hosted on YouTube.  I've come to expect that kind of thing from Apple, but it surprised me that Google did that.  So we made a totally new GMail / YouTube account for MonsterCache, and then we were able to upload the video there.  And its still on Vimeo too).

BEFORE:
AFTER:


Monday, January 21, 2013

iOS 6 caching Ajax data

Wow, it's been a crazy 24 hours for MonsterCache development.  Kent and Joshua had found a few bugs once they got their iOS versions of the app.  Sunday morning I got a chance to work on them and fixed most of them!  So I sent Kent a new version with:
  • sound for caught monster fixed in iOS
  • restyled popup windows
  • splash screens
  • badge images now showing up
  • "Recenter Map" button
I was very excited about the progress!  But there was one issue I couldn't figure out.  He said that each time he logged in, it was resetting his nets and coins back to their original values, even after he had used some nets and coins.  This was a new account for him, so every time he logged in, it just said 100 coins and 5 nets.  I asked him to make sure he did a Force Quit and try once more and he said it does same thing after many Force Quits.  So then I was depressed because this sounded like a major problem.

All that data is stored in window.sessionstorage, so I thought something was wrong with that, and that the values wouldn't overwrite. I've never heard of an issue like that. I just kept searching and couldn't find anything. I *thought* I had not seen this in the ios simulator in XCode.  But I think I didn't see it before because I occasionally have to do a "Reset content and settings" which must clear the cache. Or I just didn't notice.  Luckily I tried one more time to duplicate in the simulator before sending a version with some little storage tests to Kent and I was able to duplicate it.  I bought a net, logged out, logged in, and it showed the old numbers.

From there, I just had to put in a couple of alert() boxes to discover that the data coming back from the Ajax login call was incorrect.  The storage wasn't the problem, the data coming back from the login call was cached data! iOS was caching those results, which is terrible because the result changes all the time.

Turns out over 630 people had the same frustration, as evidenced on stackoverflow:

Now I'm back to excited!  I think I introduced a small bug yesterday with the "Show Found / Hide Found" monsters, and I still have some JavaScript confirm() boxes to restyle, so I need to make a few more fixes.

In the meantime, Kathleen spent a couple hours MonsterCaching yesterday and has blown by Reed on the leader board.  She now has 33!

Wednesday, January 16, 2013

Pricing

Started a conversation about pricing for our In App Purchasing today.  All of our In App Purchasing products will be bundles of coins.  The question is how much to sell each bundle of coins for.  Here were my thoughts on it today:

We definitely want to offer better value for higher amounts.  My first idea was:

$3.99 - 100 coins
$5.99 - 300 coins
$7.99 - 500 coins

But now I think that is too high.  With 100 coins, you can currently buy 13 nets (10 nets for 70 coins and then 3 single nets at 10 each).  So that means $4/13 nets = 30 cents / net.  That seems like quite a bit to charge.  Especially since people have been easily getting 13 in a week or two at the start.  So I'm thinking either 2.99 or 1.99 for 100.  I like $1.99 because its little enough that I think people will do it. Maybe

$1.99 - 100 coins = 2c / coin = 15c / net
$3.99 - 300 coins = 1.3c / coin = 10c / net (or less with bigger net packages)
$5.99 - 600 coins = 1c / coin
$8.99 - 1000 coins = .9c/coin

If we also have bulk buying options of nets for coins, then someone could probably buy about 200 nets for 1000 coins / $8.99.  I like the idea that if you're willing to spend $8.99, you can play *almost* indefinitely   Matt has gone WELL over 200 nets with his GOD account though, so the real dedicated users may still have to pay more.

----------------------

Kent agreed that $1.99 is a good starting point.  He indirectly brought up the issue of consumables vs. non-consumables.  Since our Silver and Mirror items do not diminish, we could sell them as non-consumables in the app store.  But I kinda like keeping it consistent with just selling coins.  We'll see.

iOS for Kent! After Provisioning Profile confusion

Good day for MonsterCache.  Kent had an intern, Joshua, helping him today and they were asking me some MonsterCache questions.  That gave me the extra little motivation I needed to try getting an iOS version to them.  Even though I was able to get the iOS version running on my parents' phones already, that was much easier because I could hook their phones to my computer.  That's called Developer Provisioning (I think).

Kent and Josh are in Colorado and I'm in Kansas, so to get the app to them, I had to email it along with a provisioning profile.  That's called Distribution Provisioning (I think).  It's all quite confusing.  You have to make these special Provisioning Profiles for each case.  Besides the Developer Profile and Distribution (also called Ad Hoc) profile, XCode makes a Team Profile for you. That may be the same as the Developer one. I don't know.

Anyway, the first time I built and signed the archive file for the app and sent to Kent, he tried installing and it failed.  So I read a bit and figured I'd used the wrong profile.  So I downloaded all the profiles from my Developer account to XCode and tried again.  Turns out I hadn't downloaded the Ad Hoc profile the first time, so I hadn't signed with it either.  Once I had it and signed it with the Ad Hoc, then I sent to Kent and it worked!  Since I was happy to have figured that out, I posted an answer about it on StackOverflow.

Oh, and I got the iOS In-App Purchasing working last weekend, so now things are VERY CLOSE!  Just need to do a few more styling things.  And its great that Kent and Joshua have the app now, and Matt's coworker, Reed, is beta testing on Android.  Very exciting.

Saturday, January 5, 2013

Phonegap In App Billing plugin for Android - v2 API

Yesterday I got motivated to make my first PhoneGap contribution.  I planned to add some calls to a couple of API functions that weren't implemented in the plugin.  I don't know Java, but I hoped that I could just copy some parts that were making other API calls and just make the changes for the calls that I needed.

As I started looking at the Java code in the plugin, I noticed that there was basically just one API call being made with a different command message being sent as a parameter.  That wasn't what I was expecting to see.  So I started looking back at the Android API documentation and found that the calls being used in the plugin were from the version 2 (v2) API.  The v3 API is the latest, but just came out in last month or so.  But its quite a bit different.  So essentially the plugin would need a major upgrade to support the v2 API.  Not knowing Java, that seemed to be too much for me, so I had to give up on helping with the plugin :-(

And MonsterCache will just have to get by with the v2 API features for now.  The two v3 features I was trying to implement were:

  • Getting the list of available products and prices from the store.  I can store those myself, but getting them from the Play store may send you a converted currency in other countries, I'm not sure.
  • Consuming items.  In v3 all items in the store are "Managed", meaning Google keeps track of whether a user has bought them so that they don't have to be bought again.  But if your item should able to be bought again -- like in-game currency -- then you have to "consume" the item so that the user can buy it again.  In v2 though, they have "Unmanaged" items, and you can still make those in the Play store, so v2 still works
So once I coded for v2, it looks like Android In App Purchasing is working.  I'll have to have my test user (my wife) run a test tomorrow to be sure.  Google doesn't let you buy your own product.

I also got a JQuery popup dialog working today.  That was very good because I have lots of basic ugly alert() boxes that I could replace now with something that would look better.

Tomorrow I'm going to take a shot at the iOS In App Billing plugin.