Monday, May 27, 2013

Poker Tournament - Texas Hold'em Week 1

Poker Tournament - Texas Hold'em

So far, after week 1, the poker app has already received more downloads than Boxes and is closing in on Matchee.  While perhaps not paying the bills, it is at least promising that poker is receiving more traction than the previous efforts.

Proceeds:

Total Cost: $1330
Matchee Earnings: $44
Boxes Earnings: $23
Poker Tournament - Texas Hold'em Earnings: $33

Total Proceeds: ($1230)

Poker Tournament - Texas Hold'em Summary

Poker Tournament - Texas Hold'em

To Date:

1 week in the Windows 8 app store
205 hours spent
33 sales for $33.97
195 page views
0 non-friend comments
1 friend comments

Poker Tournament - Texas Hold'em

I lost ~2 months of development time due to working overtime at my real job, but on 5/20/2013, I was able to pass the certification and get into the app store a 3rd time.

Poker Tournament - Texas Hold'em

A screenshot from the gameplay:

Screen shot 1

When playing tournament mode, this it map that shows where you are in the country on the path to Vegas:

Screen shot 2

Showing the winning of a badge during gameplay.  There are 45 different badges that can be earned in the game.

Screen shot 3

The trophy room showing the badges/trophies that have been earned to date:

Screen shot 4

The start screen:

Screen shot 5



It took me longer to complete poker than my previous apps.

Code: 185 hours
Art: 20 hours

Total Time: 205 hours

Sunday, May 26, 2013

App #3

With the holiday I took a short break for creating apps to try to think of the next idea.  I settled on creating a Texas Hold'em poker app.  I wanted to create a framework where I could use the idea for other card games in the future.  My hope would be that after an initial investment, I would be able to turn around and produce new games such as Blackjack, etc. using the same code base.

My other thought was that I needed to turn out a higher quality app.  While I was pleased with Matchee and had added new twists to the game, I hadn't taken the same enhancement to Boxes and that was showing in the sales.

Proceeds

6 months in:

Total Costs: $1330
Matchee Proceeds: $44
Boxes Proceeds: $24

Net Proceeds: ($1262)

Boxes Summary

Boxes

To date:

6 months in the Windows 8 app store
25 hours spent
24 sales for $24.82
666 page views
0 non-friend comments
3 friend comments

Boxes: 6 Months Later

Boxes

After 6 months in the app store Boxes followed a similar start to Matchee, though quickly showed signs of not selling at the same pace, even though that was very slow.

Looking at the graph for Boxes:

 
 
Things looked promising in November in the launch and then in December with 11 sales.  Things took a dramatic plunge after the holidays and to date sales are almost non existent.  In the last 3 months I've had 3 sales.

Let's take a look at how many views Boxes has had:


 
This makes the conversion rate 24/666 = 3.6%

Compared to Matchee for a similar 6 month period
Matchee: 755 page views for 43 sales
Boxes: 666 page views for 24 sales

Boxes

On 11/26/13 my second app, Boxes, passed certification and was available in the app store.  I was happy that in 2 weeks I was able to go through the process and get an app in for the Christmas rush.

http://apps.microsoft.com/windows/en-us/app/boxes/a7ebc33d-1abd-4248-80fe-6e18e3dd7614

Human vs. Human game on hard difficulty:

Screen shot 1

Start screen:

Screen shot 2

Statistics screen:

Screen shot 3

Human vs computer on easy difficulty:

Screen shot 4

Medium difficulty:

Screen shot 5

Windows Store Submission Part 2

Having learned my lesson with the two lost weeks in the store with Matchee, I made sure that I focused on the startup time of the app.  I was fairly confident that Dots and Boxes would pass the tests and sure enough, I was able to make it through the process on the first attempt.

Dots and Boxes App Completion

Dots and Boxes went fairly according to schedule.  I was able to turn out the finished product in much shorter time frame than the previous effort with Matchee.

Coding: 20 hours
Artwork: 5 hours

Total hours: 25 hours

I was happy with the turn around of the app in the short time, I hoped it was proof that the setup of my framework would pay off for future apps.

Friday, May 24, 2013

App #2

As Matchee was completing its approval process I decided to start my next app.  In retrospect I was concerned that targeting essentially a kids game with my first app wasn't a smart move as families were probably not going to be the first adopters of Windows 8.

I also wanted to work on an app that required less effort on the art aspect and more on the code.  I decided to work on an app based on the game Dots and Boxes.  I figured that I would be able to finish the app in time for the Christmas rush.

Matchee: Summary

Matchee

To date:

6 months in the Windows 8 app store
115 hours spent
43 sales for $44
755 page views
0 non-friend comments
3 friend comments

Laptop

After completing my first app I decided that my work environment was not conducive to generating apps on a regular basis.  Not only was my desk setup uncomfortable, but sitting in the office away from my family was not going to be a long term solution that would allow me to continue to develop new apps.

Still not frustrated by the lack of initial success, I decided to go all in and purchase a new Windows 8 touch screen laptop.  I figured this would allow me to develop in the family room when the kids were in bed and we were watching TV.  In addition it would provide a touch enabled device that would allow me to test a more representative piece of hardware as my target systems.  Finally, buying a new laptop with an i5 processor would allow me to emulate ARM mode to have more complete testing.

After much research I settled on the Lenovo Yoga 13 and found a holiday sale for roughly $1080 with tax.

Total Costs: $1330
Total Sales: $44

Net Proceeds: ($1286)

Matchee: 6 Months Later

Matchee

After 6 months in the Windows 8 app store with Matchee I have sold 43 copies to date.  The following graph shows the adoption per month:


As you can see, I had an initial lead up of sales towards Christmas that gave some promise, but things have stalled in 2013.  The 11 sales in January was sort of exciting because I took it as indicative that more families with kids ( my target audience ) had been purchasing my app, or an increase of Microsoft Surface RTs was paying dividends.

Up until this point I'd done no advertising and relied solely on the Windows App Store search in order to lead to the discovery of Matchee.  Apparently this was not a winning strategy.

To date, Matchee has had 755 page views:


It is hard to tell how many of those 755 views were me in my initial excitement at having the app in the store and refreshing the page :).  Ignoring that, my conversion rate is currently 43/755 = 5.7%

Matchee: Month 1

As my first month ended within the app store, it came with dubious results.  I had a grand total of .... 7 sales.  4 of which had come from friends I had enlisted.  Not the start I had hoped for, but I was willing to chalk it up to not many people having Windows 8 and hoped that it would get better.

I made $1.49 per sale, of which Microsoft takes 30%.  I have to earn up to $200 in my account before receiving payment.

Total Costs: $250
Total Sales: ~$7

Net Proceeds: ($243)

Matchee

Matchee: Windows 8 Store Search

Excited to see my app finally make it into the store I wanted to see what the competition looked like and how easy it was to find my app.  On submission to the store you were asked to select a handful of keywords that were associated with your app.   I assumed that these would be the criteria used for searching the Windows 8 app store.

The first step was looking at the New Releases in the store.  Hmm, Matchee didn't appear to be listed here.  Why not?  I never figured that out.

Next, I decided to search for one of my keywords: Memory.  Sure enough, putting memory into the search bar returned over 100 apps, but unfortunately, none of them were Matchee.  This was also frustrating as it was one of the keywords I had selected.

A search for "Match" did return Matchee, though I presume only because "Match" was in the name Matchee.  It appeared the keywords I had entered did not carry the same weight as the title of the app, at the moment it appeared that they carried almost no weight.

By this time, I had enlisted 4 friends to purchase Matchee and 1 of them had given the game a 5 star review.  Because of the review I instantly shot up to the top spot in the Games->Kids category when sorted by rating.

Not super excited about searching for my own app, I was at least encouraged that people looking for games within the Kids subcategory would at least be presented with my app in the top 10.

Matchee

Matchee: Kid Testing

With the initial release into the store, I celebrated by convincing some of my Windows 8 early adopter friends with kids to buy the app and give me feedback.  In addition to my 2 daughters, I had 4 kids aged 3-5 try Matchee with glowing reviews.  All four of the kids seemed into the app and asked to play on future days.  Feeling confident I was ready for the app store, or so I thought.

Matchee

Windows 8 Monetization

When submitting to the Windows 8 app store  Microsoft gives developers four options for making money with your app:
  • Advertisements in the application
  • In-app purchases
  • Sell the app at a fixed price ( minimum price of $1.49 )
  • Offer a free trial of a fixed price app
It seemed like the easiest approach to take for the first application was to submit it for the minimum price of $1.49.  I opted for no free trial on the first app to see how the store worked.  I felt that the app itself was of high enough quality to warrant the price, though was concerned that the total number of sales would be significantly reduced from what a free app would generate.  Only time will tell.

Matchee

Excited, my first app made it into the Windows 8 app store on 11/13/2013.

http://apps.microsoft.com/windows/en-US/app/matchee/358ef7d2-ffb5-4f53-92db-73defcf00fbb

I was pretty happy with the outcome, while it took longer than I anticipated and I took a few shortcuts, the overall product seemed good and in my (humble?) opinion was of higher quality of the competing matching applications ( which had gone from near 0 at the start of my development to over 10 )

Here is a look at some of the final product.

Matching from the farm set on medium difficulty:

Screen shot 1

The level selection screen showing the 9 different levels that could be selected:

Screen shot 2

Ocean level on medium difficulty:

Screen shot 3

Halloween on easy difficulty:

Screen shot 4

Space on hard difficulty ( note the alphabet cards instead of the set ):

Screen shot 5

Christmas on easy difficulty:

Screen shot 6

Dollhouse on easy difficulty:

Screen shot 7

Thanksgiving showing the complete/replay screen:

Screen shot 8

App Store Submission

Now that I'd passed my local testing it was time to submit to the official app store. 

My test/development was an 4-5 year old desktop PC.  Because of the age of the PC and the processor ( Intel Q9330 ) I was not able to emulate an ARM cpu for testing.  I could either choose to deploy on x86, x64 and/or ARM when submitting to the store.  I decided to take the risk and submit to all three even though I didn't have the opportunity to test on ARM.

This ultimately also became a problem as after almost 7 days of processing in the app store my first submission was rejected.  The rejection reason was fairly obtuse and there wasn't much information to be found on it.

At this point I was now almost 2 weeks past my planned deadline.

I made a guess that the reason was that my startup time must have been too slow on the ARM platform ( which I wasn't able to test ).  I did some fairly benign code changes and cut the startup time in half, from roughly 4 seconds on my x86 to 2 seconds.  Was this good enough to pass the tests?

Another 5 days later I found out that it was not.  Rejected again.

Frustrated and feeling like I was missing out on potential sales, I did a radical design change and moved the loading of all of my artwork 20 seconds into the app instead of at the start.  The only problem was that if the user selected a game prior to this timer firing they'd be missing the artwork for the first 20 seconds ( but then have it after ).  I decided this was fine, I just wanted to get approved.

Sure enough, this worked and I was into the store, 2-3 weeks later than I had hoped.

App Store Submission: Testing

Before submitting to the app store you are able to run a tool called the Windows App Certification Kit that will analyze your app and determine if it passes all of the required tests.  The first time I ran the test I failed and the tool indicated that my root namespace did not match the namespaces found in my application.  The error did not give any real answers on how to resolve the issue.

I'd previously run into a similar  problem at work and realized that I needed to edit the project settings of the application in a text editor, not from within Visual Studio 2012.  Sure enough, in the XML of the projects settings was an entry for root namespace indicating that it was the name of the application: AppMatchee.  In my code I hadn't used that as my root namespace, instead had started namespaces with corp.something.something.  I could either change all of my code or match the default root namespace or manually edit the project settings of the project in the text editor.  I chose the latter and changed the root namespace to "corp" to match my code.

Changing this setting caused the test tool to work with all tests passed the next time I ran it.

Completion and A Missed Deadline

Unfortunately, as I neared the self imposed deadline I realized that I wasn't going to make it.  A little disappointed, but I continued on and finished the app a week later and was ready for submission to the Windows 8 app store.  At this point I had invested:

Writing Code: 30 hours
Selecting Stock Images: 35 hours
Editing Images in GIMP: 50 hours

Total Hours: 115 hours

Yes, I spent more time dealing with the art work than actually writing code.

Artwork

The artwork continued to be a problem.  Not only was time spent selecting the artwork from the stock imagery, but now I needed to incorporate it into the actual game play by making cards and the 27 unique reveal images.

To do this, I used GIMP for my image manipulation.  I'd used it in the past to edit family photos and add interesting effects, but never to this scale.

Idea Solidification

As work on the app ( now named Matchee ) progressed, the idea began to solidify and I become comfortable with the idea and the code base that had formed around it.  I had decided to lay out the cards on either side of the screen and when a match was made unveil a portion of the picture in the middle of the screen.

As an added idea, I decided to have 3 different difficulties, each of which would reveal a different image, with a different number of card pairs to match.  The hard difficulty allowed the user to match letters of the alphabet instead of matching pictures from the current set.

Finally, 9 different sets of cards were provided, giving 27 unique pictures that would be revealed.

During this initial idea process I already saw the strain of not spending the up front design time as my idea changed dramatically as I went forward ( and received feedback from my wife ).  Luckily my code base was small and fairly well organized that it absorbed large changes relatively easy.

Stock Image Problems

The second roadblock I encountered was simply a matter of time.  My plan was to work from 8pm-11pm most nights, with more time on the weekends.  I figured that this should be enough time to meet my 4 week deadline.

I very rapidly saw that my choice to use a stock image company, while providing me with much higher quality content than I could produce on my own, was eating into my timeline greatly.  It was no small feat to select 20 pictures every single night.  The first few nights were easy, but as the nights went on it became harder and harder to select pictures that were worth the money I had paid and fit within my idea.  It was typically taking 1 to 1.5 hours per night to select the pictures that I needed.

I had no plan to combat the time loss, except to make the selections faster, but this resulted in poorer quality selections that I didn't wind up using.

First Roadblock

The first challenge I faced in developing the matching application was what it should look like and where I should get the artwork for the game from.  It didn't seem realistic that I could draw or create all of the artwork that I would need by myself.  Instead I decided to research stock image companies online that friendly license agreements for app and mobile developers.

After much research I settled on using Crestock Stock Images .  Their selection wasn't the best in my research, but the license terms seem to be the least restrictive.

I decided to spend the $200 for a month's worth of photos, which meant I could download 20 images per day for 30 days, giving me 600 images to make use of for the app.  I figured that over time I should re-coop the investment.

Spent: $200 on pictures
Spent: $50 on Windows Developer license
Total Spent: $250
Total Earnings: $0
Net Earnings: ($250)

Design Process

Working in a CMMI level 5 organization even the documentation has documentation.  You can't even think about writing a line of code before developing a 100 page whitepaper detailing what the code will do ( followed up by a multitude of other documents ).

Was this the process I wanted to follow for my Windows 8 app?

Given the simplistic logic needed for a matching game, even with my twists, I figured I didn't need to perform the entire lifecycle and could rely solely on "cowboy coding".  My tight deadline of 4 weeks and the fact that I could only work on it at night also contributed this this decision.  I figured I could still incorporate design patterns and design for reuse, just not with an entirely thought out plan.  Only time will tell if that was the right decision!  :)

Development Language

Visual Studio 2012 offers three different language choices for developing apps:
  • JavaScript/HTML5
  • C#/XAML
  • C++/CX
My first preference was to use C#/XAML thinking this would be the best option given the fact that I had 8+ years of C# experience at work.  My experience at work had primarily been with Windows Forms development and I underestimated how initially frustrating a switch to XAML based displays would be.  Granted I didn't spend more than 2 hours with a sample project, but very quickly got fed up and decided to explore different options.  I was also disappointed to learn that XNA wasn't part of the C# experience in Visual Studio 2012.  While I didn't necessarily anticipate the need of accelerated graphics with a matching game I was hoping to establish a framework of code that could be reused on other more complex applications in the future.

My most recent experiences at work have been with JavaScript and HTML5, I've spent the last year working with HTML5's canvas, web sockets and local storage.  While this was fresh in my mind I don't always love debugging issues that cropped up with JavaScript.

During my C# experience I also spent a large amount of time wrapping legacy applications using C++/CLI.  The syntax for C++/CX looked close enough that it didn't seem too large of a leap.  Plus, prior to my HTML5 work I'd completed a project using DirectX and Direct2D which I had enjoyed.

It might have been more work, and probably not the choice that everyone makes, but I opted to begin my development in C++/CX and create my own DirectX wrapper classes.

First Steps

The very first step was to come up with a publisher name.  It wound up being fairly easy as the combination of both my daughters' names had a nice ring to it with ellava studios.

With a name under my belt, deciding on the first app to create was the next step.  I began my development on the Windows 8 release preview and was hoping to create something before the official launch of Windows 8.  I installed the release preview (much to my wife's enjoyment!) with about 4 weeks to go before the official launch.

With that in mind I settled on making a simple matching game with a slight twist.  I figured this would be something that my daughters help me test and give feedback as I went, yet something that wasn't so complicated that I would miss my self imposed deadline of 11/1.

For the twist I settled on arranging the tiles in a different manner than normal matching games and with each successful match revealing a new piece of a picture to complete an overall scene.  I hoped this twist, plus my confidence that I could produce a high quality product would be enough to separate this matching app from the multitude of others that would surely be in the store ( one of the Windows 8 examples was a matching app so I was concerned that there might be a plethora of copies in the store with no real innovation )

About Me and This Blog

Hi!  Welcome to my blog!  I'm a senior software engineer at a Fortune 100 company and have worked there for the past 12 years.  I've always felt like I've missed getting in on the latest technology bursts outside of work, from iOS and the iPhone/iPad development surge, to Android.  There has always been a reason or an excuse that prevented me from taking advantage outside of work of the skills I'd developed.

Over the years I've programmed primarily in C/C++, C#, Java and most recently HTML5.  Not wanting to miss out on a new opportunity, I was intrigued about Windows 8 and the potential for a single developer to release apps to a wide spread audience.

This blog will talk about the progress I make, I'll show the apps that I make, as well as a detailed look into how they are doing in the store and what things work and don't work.  I hope this blog will be helpful for other Windows 8 app developers as they undertake the journey to success.