What can we learn from "Flappy Bird"?

My first encounter with Flappy Bird was checking the App Store's top free games list one morning then promptly wonder what on earth was going on. I could not understand how this game was top of the charts and why his other mini-games and rival games with "Flappy" in the title were not far behind.

The following controversies were also incredibly baffling, everyone loved this challenging yet very simple game, I could not work out why and for the most part, neither could anyone else. The creator himself also seemed very shocked by his instant fame and fortune, I really have to give kudos to the guy for how he has taken it all. He really is a nice bloke who quite simply wasn't in it for the money, just making fun games.

So what can we learn from the whole Saga?

  • The nature of the App Store can be unpredictable, the precise events which have lead to the explosion of this game are untraceable. It went viral so quickly and so strongly I don't think anyone could have predicted it.
  • Time != Sales, this point scares me. Flappy Bird was created in just a couple of days (hell, I made a version of Fish Slapped which emulated Flappy Bird and the total conversion took less than 4 hours). Sometimes these mini-game experiments can yield good results, even if the game is quite difficult.
  • Be prepared for success. Someone has to get lucky and have their product go viral some times. Be prepared for potential success by keeping your business in order and being in control of your social media.
  • Advertising is a great business model for mini-games. The developer was making 50k a day in google ads, that is incredible!

Most importantly, there really isn't anything we can learn from this experience. Just need to take it for what it is and keep working on making great games wether they be large scale or as small as flappy bird.

Peer review and beta testing is essential to all software businesses

I'm an indie developer in every aspect of the term 'indie', I'm not against working in a team, I love it in my day job but unfortunately there aren't many software developers in this town and even less available to sit down with me and let me bounce ideas off of them.

Sometimes being clever isn't enough, software is a marketplace where perspectives matter and getting as many perspectives on your product before dropping your MVP (minimum viable product) on the public is what can make or break your product releases.

So what can you do if you are like me and don't have people who can sit down and talk about your products readily available?

Beta testing!

It's not uncommon to perform beta tests within your small development group and yourself following good TDR (Test Driven Development) but there is so much more to a good product release than finding bugs, you need to find issues with your UX (User Experience).

How do I do a closed / public beta?

  1. Pick a distribution platform - iOS has limited ways to you can beta test but if you have a way to collect UDIDs from potential participants then adhoc distributions are not that difficult and don't put too much stress on the participant. You can give them this website to make instructions easier. Look at other options as well, Test Flight has received good praise.
  2. Get analytics - You can't rely on your beta testers to give you feedback, especially if you have never met them. Use a service like parse to feed back useful data such as how many levels were completed in your game, how many retries, how many error screens were presented, etc. 
  3. Add a dummy payment system - In-app purchases need to be tested too, when designing your store kit classes be sure to implement a way to set a boolean switch for test mode where it can allow purchases separate to the actual store kit. Use compiler #if statements to make sure the code can't be manipulated in release.
  4. Let the participants give you feedback - What I like to do is set up a form in google documents stored on my google drive. You can make fairly detailed forms, make them public and then see all the background data collected in a nice neat spreadsheet without spending a cent. Then pick a logical point in your game (such as at the end of the final level or after 20 attempts to then ask them if they would like to provide feedback and send them to the form. This is important as you are narrowing down the feedback to people who actually played the game to a specific point.
  5. Ask for more feedback - In addition to the above, have a separate form for bad experiences. Measure the number of memory warnings, error screens, crashes, levels failed and then ask them if they would like to submit a bug / issue report. You will see this data in your analytics but its important to get the direct opinion of the user as well.

Hope you find this useful and is enough to get you started. Don't fall in to the "I know everything" trap.

Design your app for localization from day one

Something which had been more of an afterthought for me in the past had been Localization, I figured there were enough english speaking iOS users out there for my business to be profitable. In retrospect this was a rather uncultured and closed minded view considering how big my audience could potentially be and how little it could cost me to reach them.

Here are a few tips for early development to make the localization process easy and painless:

  • Consider the dialog early, every word works out to around 9 cents per language (using professional translation services), if you can keep your dialog short and maybe replace some words with common symbols like arrows then it will make things cheaper
  • Plan to use a professional translation service, they are rather cheap and while google translate is reasonably good you will miss out on a lot of dialect and detail which can be rather embarrassing for your company and lead to demands for refunds. It will also kill your chances of getting featured (Apple love to feature well localized apps!).
  • Whenever you create a NSString while programming, don't forget to do it as a NSLocalizedString(@"",@"") and actually leave a detailed note in the second parameter where there is room for confusion. For example: If the text is "Ok", then leave a note about what you are agreeing to with this text as certain things are agreed to in different ways in different languages. Also if you have abbreviations like "m" for meters, make sure you let the translator know with a note.
  • Don't worry about populating your Localizable.strings file as you go, it's a waste of time as using genstrings can do this automatically.
  • Plan to localize towards the end of your development cycle, most translators are quick and last minute updates or changes can be time consuming.
  • Don't forget about your app name, store description, key words, in-app purchases, game center achievements and leaderboards. They all need to be localized for a complete experience.
  • Don't forget about images or data in plists which may contain words.

Ok, so you have kept your strings short and minimal to reduce costs, you have run genstrings to prepare your localizable.strings file. What next? 

You need to decide what languages you need, it is recommended to localize in:

English, Spanish, French, German, Italian, Portuguese, Chinese (Simplified), Chinese (Traditional), Russian, Korean and Japanese.

You may want to do some market research first to see how popular the subject of your app will be in those regions. You may find that your game only really applies to English speaking countries or on the other hand you may find that Korea is 80% of your world market. If you are still unsure, its not that expensive to cover your bases and do all of the above.

Now that you have decided on your languages, it's time to pick a translation service. I like to use iCanLocalize. They are very affordable, very quick and allow for lots of communication with the translators so you can get your translation done with the right context and style of your app. They also have a review process where another translator checks the translations done to ensure impeccable quality. You can also send them your .strings files and they can return them in the same format for easy implementation.

It's good to keep Google Translate handy too for unimportant quick translations. Be sure to check the context is as accurate as possible even with these simple translations.

Follow these tips and localizing your apps should be as painless as it has been for me in my latest app which goes on sale in two to three weeks time.

5 Possible Uses for Notography iOS

As I've said before, it is sometimes hard to sum up what "Notography" does easily but I can definitely tell you some potential ways that it could become an essential tool on your iOS device which you can't live without!

1) Building Inspections - If you work in the property market or are a real-estate agent then you will need to take a lot of photos. Sometimes it may be hard relating all of these pictures back to their respective properties, especially if you are giving them to someone else to document. Notography can record the date / time and geocode an accurate address and print it directly on the photo, so all the proof is right there.

2) Live Blogging an Event - If you are at an important event or function as a journalist you need a way to get your content out there and fast, what you don't want is someone else to rip off your content or to post something which looks unprofessional. With Notography you can have your presets set up the day before so that all you have to do is snap and share instantly. It will put your companies copyright information or watermark on the images before sending them, it is quick so you aren't taking your eyes off the action and can auto-enhance the images so they look great and professional.

3) Photo Diary for Holidays - The quick snap and share is great for capturing your adventure without being taken out of the adventure, the different filters and date/time stamps, location details, etc can really help you recall where a photo was taken later and make it look like you are having a great time! Custom text means you can set up titles like "Canda 2014" so you can remember exactly which holiday you were on.

4) Water / Power Meter Inspections - This may seem like an odd item to have on the list but being able to have a static inspection number and automatically geocoded address means its very easy for those back in the office to process.

5) Concept Design Artist - Easily watermark every image you photograph, you can also choose the save the original image on your phone so it is maintained without layered text or filters. This gives you a sharable copy and safe original for later use. 

Any occasion where you want to prepare templates for your photos before hand so that you can instantly automate the process and choose to share via social media, email, airdrop, etc. 

Any occasion where you need to automate useful text to remember where and when the photo was taken.

Any occasion where you want to protect your copyright and/or produce a professional looking image every time you take a photo.

The void

Every time a new version of iOS has been announced there is always what feels like a void of any actual activity. It doesn't make sense to put out any app updates because there are such big changes coming soon. My time is better used to keep downloading the Xcode and iOS builds to get my mind in the game and watching / reading all the new stuff from WWDC.  

It feels like we were just getting comfortable with iOS6 and now iOS7 with it's completely different way of thinking has been thrust upon us.  It's a good thing, change is good, it stops us developers from getting completely burnt out.

So what are my priorities for iOS7? 

  1. Notography - This app has received a great response, I have a lot of new features and a whole new design ready for iOS7, it's going to be great!
  2. Defects Collector - I have been wanting to release an update for this for ages! iOS7 will be that time. 
  3. Wicked Freefall! - I really want to make big improvements to this app. May even start from scratch and re-imagine it... i still find it fun but it needs more and it needs modern objective C
  4. Evil Block Company - Not much needs to change, minor improvements. 
  5. ManaSlam - I'd love to re-release this game, my original iOS title that deserves love. 

Early testing of iOS7 have shown positive results and possibilities to improve products. Can't wait to share with you all what I have been working on.