As both readers of this blog know, I’ve been working on an OS X client for Planets Nu (A web-based version of the old play-by-email game VGA Planets). The idea was to make something like EchoView for my own use, brush up on technologies I had been putting off and potentially have an app in the Mac App Store that pays for the Mac Developer Program registration fee.
When I started working on it, I knew that it was always destined to be a niche project with limited utility, and as such it made sense to open source the API parsing code to help other developers working on other platforms that I had no intention of porting to (iPhone/iPad). I had originally intended to distribute via the App Store for a nominal amount ($1.99).
As I was waiting on graphics for v1.0, more out of curiosity than anything, I decided to run the numbers to get an idea of what my target customer base could be.
Once this thing starts selling…
As mentioned earlier, this is a niche product. Even still there are people playing the game. For the game there are 11 playable races, and a quick glance at the leaderboard for the Solar Federation (race #1) shows over 890 players.
11 Races * 890 players = 9790 possible users
9790 users * $1.99 = $19,482.10
Almost twenty thousand dollars! That’s a chunk of change for even a $1.99 price point. The first thing to keep in mind is that for an App Store product, there’s always a 30% cut to Apple. I’m not going to cry about the fees, but it does change the fact that for a $1.99 sticker price, the developer gets roughly $1.39.
9790 possible users * $1.39 = $13,608.10
But wait, a user on Planets Nu can play multiple races with the same account, but how many people actually do that? Well, it’s simple enough to write a python script to scrape the website for each leaderboard and remove any duplicates.
Race 1 has 893 players Race 2 has 738 players Race 3 has 659 players Race 4 has 667 players Race 5 has 694 players Race 6 has 753 players Race 7 has 637 players Race 8 has 773 players Race 9 has 667 players Race 10 has 644 players Race 11 has 681 players Total unique players: 2712
Oh shit! That’s a huge difference between 9790. All of a sudden the potential revenue is roughly 1/4 of what it seemed like it was going to be a few moments ago. Wait! There’s more! Not everyone uses a Mac, most people don’t. So going with a rough estimate of 5% market share:
Total estimated mac players: 135
Ruh roh.. then when I account for the fact that I’m using features specific to OS X Lion (10.7), that 5% really becomes
16% of 5%: Estimated mac players with Lion installed: 21 Best case scenario: $29.19
Then I account for the fact that I am one of those 21 people, and one of the players on the site has been beta testing, so we each get a free copy from my pool of promotional codes, that 21 is really 19. Multiply that by the $1.39:
Income excluding developers: $26.41
And that is assuming that everyone who can buy a copy actually wants to buy a copy.
What about the long tail?
Apple App Store Registration Fee: $99.00/year
Oh right, there’s that little fact as well. To publish apps on the store it costs $99/year to register as a developer. I would need to sell 72 copies a year just to cover that cost. Which this won’t.
It’s shocking that some people refuse to generate harsh numbers when looking at the pool of potential customers for an app they want built. These were even pretty optimistic, checking for inactive users was unnecessary at this point. Frequently you only hear about the slightly believable best case scenarios. And here’s the rub, knowing that PlanuPlanu has a zero percent chance of making me any money, I’d still rather work on it than half the crap people are going to suggest I help them with during SXSW the second they hear I’ve written an iPhone app before.
Is all that effort wasted?
Of course now I have an app that is 99% complete, that scratches a personal itch I had and that I have used as tool to expand my technical capabilities (for that day I need to write a shitty lightning bolt generator using CoreGraphics). This is where it makes sense to open source the whole thing and let BitBucket host the binaries. At this point it becomes a portfolio piece for my résumé and allows other people to use my code as a reference (for the day they need to write a shitty lightning bolt generator using CoreGraphics).
#!/usr/bin/python import urllib2 import re from StringIO import StringIO import gzip import math all_players = set() for i in range(1,12): leader_board_page = 'http://planets.nu/leaderboard/race/%d' request = urllib2.Request(leader_board_page % (i)) request.add_header('Accept-encoding', 'gzip') response = urllib2.urlopen(request) if response.info().get('Content-Encoding') == 'gzip': buf = StringIO( response.read()) f = gzip.GzipFile(fileobj=buf) page = f.read() # find all links to a user profile page user_pg_pattern = '<a href="/user/([^"]*)">' players = re.findall(user_pg_pattern, page); print "Race %d has %d players" % (i, len(players)) all_players = all_players.union(set(players)) # Display the final number of unique players print "Total unique players: %d" % (len(all_players)) # Assuming 5% market share for mac users: # http://thenextweb.com/apple/2011/11/17/explosive-growth-takes-the-mac-to-over-5-global-market-share/ mac_players = math.floor(.05 * len(all_players)) print "Total estimated mac players: %d" % (mac_players) # Assuming Lion accounts for 16% of all mac users # http://www.redmondpie.com/os-x-lion-reaches-16-mac-market-share-but-growth-slowing/ lion_users = math.floor(.16 * mac_players) print "Estimated mac players with Lion installed: %d" % (lion_users) price_point = 1.99 # Floor is required because I doubt the fractional cents come back profit = round(.7 * price_point,2) best_case_income = profit * (lion_users) income_minus_devs = profit * (lion_users - 2) print "Best case scenario: \t\t\t$%.2f" % ( best_case_income ) print "Income excluding developers: \t\t$%.2f" % ( income_minus_devs ) print "Apple App Store Registration Fee: \t$99.00"