This is a brain dump on how/why I made [WordHero]
Doing the math : Is it worth it ?
[ol]
[li]I had zero android or marketing experience.
[/li][li]I saw figures of 2-3 eCPM and average advert time of 30 seconds
[/li][/ol]
Thinking goes like this:
“I think I could get 100 to 200 people playing in a game”
“There used to be a maxim in radio that a hit song was never over 3 minutes”
“Lets make game time 3 minutes”
“Oh wait, users need to see the scores… lets make it 2.5min + 30 secs”
Math:
3min = 30 games / hour = 480 games/ 24h
= 960 adverts per day per user
960 x 100 players = 96k adverts / 24h
@ $2 eCPM = $192 / day
= $70k / year
OK!!! Looks like it is profitable to do an phone app!
Problems:
- It is actually REALLY hard to get 100 people playing per day ON AVERAGE over the full 24 hours. Peak player count is typically 4x the average. This means you need 400 people in a single game. I made the mistake of confusing peak players with average players.
- Advertisers publish $2-3 eCPM’s. They also publish a default rotation time of 30 seconds. I assumed these numbers (a) went together (b) applied to 320x50 banner adverts. This was a fatal error.
Picking the game:
So, now I needed to pick a game. There are a number of choices, but something that requires minimal effort, no use of OpenGL/etc and could make use of my existing skills (Python among others). My wife loves Scrabble (she beats me every time!), but that seemed too complicated, so I chose a different word finding type game.
Not infringing on existing IP:
I am not a lawyer, but I figured that while there were a lot of Boggle clones, I still did not want to infringe on anyone else’s IP.
[ul]
[li] can’t use anything looking like dice
[/li][li] can’t use the Boggle letter frequency distribution
[/li][li] can’t use the number of points/letter that Boggle uses
[/li][li] need to be careful which dictionary I use for word generation
[/li][/ul]
Looking at the competition:
So I looked at the market to see if there was any competition. The analysis of word games at the time (June 2011) looked like this:
BoggleDroid - boggle type=yes, online=no
Squiggles - boggle type=yes, online=yes, 1vs1
Wordplay - boggle type=yes, online=no
Word Finder - boggle type=yes, online=no
Dropwords - boggle type=no
Bogged! - boggle type=yes
Away with Words - boggle type=no
Word Boggle - boggle type=yes, online= 5 player ?
Wordmix - boggle type=no
Wordspree - boggle type=no
RouteWords - boggle type=no
WordCube - boggle type= 3x3 grid
Wordgame - boggle type=no
Wixel - boggle type=yes
Tile take down - boggle type=yes, online=yes, paid only
Scramble with Friends did not exist at the time, so it seemed there was no really massive multipler (and actually, Scramble is asynchronous and 1vs1, so there is still no competition for massive multiplayer!)
Tools to use developing the game:
Android, iPhone, Nokia, Windows Mobile. This is easy. Apple can kill your app if they don’t like it or if they want to produce something similar. So that is a non-starter. Nokia is dying. Windows Mobile does not have market share. That left Android. So I bought a Nexus S for $540.
Graphics can be done with a number of tools. The game needs to have a clean UI, not fancy graphics and I don’t have the budget to pay someone to do graphics. So I can hack something up with free tools.
I need a cloud service (to support the bazzillion players who will play my game and make me the next Angry Birds!). Amazon looks good, but it too technical. I can’t just start programming. It also costs money. Google AppEngine is free for small apps and supports Python. I know Python. This is a no-brainer. Yay!
Android is Java. I have never written any Java in my life. Time to learn. StackOverflow is my new best friend!
Wireframing the GUI:
I did mock gui’s using a free version of balsamiq : http://www.balsamiq.com/
I needed:
[ul]
[li] splash screen (always important to establish a feel of quality)
[/li][li] login on first use
[/li][li] main game start screen
[/li][li] game playing screen
[/li][li] results screen
[/li][li] help screen
[/li][/ul]
More were added later…
Addictiveness:
Lots of attention was spent on making the app addictive. This should be a seperate discussion at some point.
Coding version 1.0:
I then spent about 6 weeks coding version 1.0. Almost everything has changed. Each new release increments the version number by 0.1.
Current client version: 3.9 (29 releases!)
Current server version: 49
Later versions:
I changed the icon, almost every single screen. Fixed bugs within hours.
Features that got added in later versions:
[ul]
[li]ACRA for crash reporting
[/li][li]Board rotation
[/li][li]Animation for board rotation
[/li][li]User’s best word shown in results
[/li][li]Statistics for each user
[/li][li]Flurry for metrics
[/li][li]Server side message on startup
[/li][li]What’s new screen on upgrade
[/li][li]Ask user to rate [WordHero] after 3 days and 7 games
[/li][li]User preferences
[/li][li]Taglines (user can set a text next to their name in results for others to read)
[/li][li]Current word being spelled by the user at the top of the screen
[/li][li]Digraph support (eg: Qu as a single letter on a tile)
[/li][li]Hour/Day/Week/Month leaderboards
[/li][li]Country flag in results screens so you can see what country a user is in
[/li][li]Friends lists in leaderboards
[/li][li]Friends only filtering
[/li][li]Themes, Digraphs and super score boards added in a rotation
[/li][li]Show word bonuses seperately in results
[/li][li]Clicking on mini-board in results filters all-possible-words list
[/li][li]Clicking on a word in all-possible-words list shows the path to make it on min-board
[/li][li]Guess checking … we now suggest a 3 letter word
[/li][li]Vibration added
[/li][li]Sound added
[/li][li]Color customization
[/li][li]Ad profile (users can set their age/gender/income/etc for better ad targetting)
[/li][li]Sync to time server on start, as a lot of phones have wrong time and time is critical in a synchonous game
[/li][li]BlackBerry PlayBook release to get the free PlayBook
[/li][li]Auto-timeout and exit when users post zero scores 2x in a row
[/li][li]Timing is now configurable in gameplay options
[/li][li]Enable move to SD card
[/li][li]Leaderboards are now filtered to top10 + X around you + friends (configurable)
[/li][li]Your position (X/Y) added as a header in results leaderboard
[/li][li]Server configured advert position
[/li][li]Tutorial on start
[/li][li]Tablet mode for ‘The Friday Game Review’ team
[/li][li]Percentile for position shown as a header in results leaderboard
[/li][li]Layout changes for tablets
[/li][/ul]
Obviously, I also did bugfixes in every release.
Lessons I learned from the server side:
[ol]
[li]Communication can be done with any RESTful service. JSON is human readable and takes less bandwidth.
[/li][li]Version 1.0 will not be your only version. All communication between client and server should be versioned. This means you can serve different data to a version 1.0 vs a version 2.0 client.
[/li][li]The client should know which market it was uploaded to (Amazon/etc)
[/li][/ol]
Okay, that is enough for now.