On Friday May 20th, 2011 I launched my first ever iPhone app, Alcohology, under the brand Protip Studios. I hope this postmortem contains something of value, or at least interest, to other iphone or side project developers. I was the sole programmer/designer and a friend, Cody Flynn, created all art assets. It was developed strictly in our spare time.
A quick description. Alcohology is a cocktail recipe book with a focus on allowing the user to customize the ingredients in their bar so that they can browse recipes they can actually make. It has many other features which are better described by our website. (click here)
History
During the summer of 2008 I took a bartending class for fun. I lived with roommates, so naturally we stocked up on liquor and I mixed drinks. I made people choose a single ingredient and I’d pick a recipe using that. It became repetitive and tiresome. As programmer this bothered me. Repetitive tasks are best done by machines, not people. Nothing on the existing market did what I wanted, so I chose to make it myself.
In fall 2008 I bought a Macbook Pro and a dev subscription. I worked on and off for ~32 months. The longest work stoppage was a comical 7 months long. Estimating the total time spent is nigh impossible. I’d put it in the ballpark of 800-1000 hours which is four to five months of full time 40 hour work. The early days were spent learning Objective-C and OS X which were both new to me. The art took an additional ~100 hours of Cody’s time.
What Went Right
1) For Fun and Passion
The project was done for fun and to create an end product I wanted. At no point did I report to any producer or a publisher. There was a clear goal from the start and it never changed.
2) Functional with Programmer Art
Alcohology was a solo project for a long time. When I say programmer art I really mean it. Here’s a set of images I sent it to Cody before we joined forces.
Cody created the following mock up as his first submission.
I wasted no time on assets that would only be replaced and Cody was able to hit the ground running. Almost no art was wasted due to existing features being locked down.
3) Work Sessions
Once Cody started our goal was to work together at least twice a week. We’d work 8 hours on the weekend and 4 on a weeknight. This time was far and away the most productive of the entire project. Nothing compares to getting two people in a room hammering out content.
4) StackOverflow
I can not stress enough how amazing StackOverflow is for iOS issues. In 2008 I constantly got stuck on basic problems. Why does my UIView not display? How does provisioning work? When do I retain/release? Almost everything that could be asked has, and it comes with a dozen answers. Questions I posted were always answered quickly, including once by an Apple SDK engineer.
Protip: Provisioning/code signing is a huge pain in the ass. Read this forum post (click here) and your issues will mostly be solved.
5) Google Documents
I wrote an entire article on this subject already (click here). The short version is that I used Google Documents for editing data and a C# tool to download, process, and export that data in a device friendly format. It was phenomenal and I can’t recommend it enough.
6) Naming Force
Coming up with a good name was hard. All the obvious ones are taken. I gave crowd sourcing a chance via Naming Force (click here) and for $150 got Alcohology which I’m quite happy with.
What Went Wrong
1) Laziness
Let’s be honest, this project took way longer than it should have. Working with somebody else helped a lot. The downside was that if either of us had to bail on a group session it was likely no work would be done at all.
Start to finish was ~135 weeks which means I averaged 5.9 – 7.4 hours per week. That’s not very good if I ever want to complete another project.
2) UI is Hard
Good lord creating UI is time consuming! Alcohology has 19 unique screens that were each meticulously crafted and iterated on. I grossly underestimated how long each would take to design, hookup, and polish.
3) Art Integration Time
Integrating real art took far, far longer than I expected. I do not regret how it was done, only how badly I misjudged the time required. My goal was to create a fully functional program and provide a list of assets with exact dimensions for drop-in replacement. Here are final version screenshots.
If you compare them to the previous versions the overall design is the same. However, the dimensions/position changed for most elements. If you look at the first and fourth screenshot you’ll see a drop-down panel (liquors/mixers/garnishes) and pop-up panel (Almond Bliss/Shake). This UI pattern wasn’t established until real art came in. It worked out so well that many scenes were redesigned to make use of it.
Protip: Apple recommends buttons be at minimum 44 x 44 (on a 360 x 480 screen). This feels huge in the simulator, but is an accurate minimum for the device. Always test usability on a device!
4) Objective-C
I may catch flak for this, oh well. Objective-C sucks. If you know C/C++ it’s not hard to learn. The syntax is uglier than sin, but the logic is similar. Debugging on the other hand, not so easy. Want to see the contents of an NSDictionary? You can’t, too bad, mwhaha! Not once did I say “wow, Objective-C sure made that task fast and simple!”
One of the most common questions I get is “Android?”. Because I used Objective-C to create an Android port would sadly require rewriting the whole thing. It is unlikely to become worthwhile to create an Android port.
Apple provides a nice UI library, but if you want a non-generic looking app expect to roll your own components.
5) Database Entry
I spent at least 40 hours manually entering recipes to a spreadsheet. Each recipe required careful consideration of glass, type, and minor ingredient modifications. It that felt like it should be done by a robot. Sadly, the only way to achieve maximum quality was to manually consider every step of every recipe.
Protip: Unemployed friends can be bribed with beer to perform grunt work. (no, seriously, try it!)
Future Endeavors
The app is out, hurray! What’s next?
1) Marketing
As of writing, five days after launch, Alcohology has sold 79 copies. I’ve reached out to approximately 40 tech blogs, app review sites, newspapers, food/drink publications, etc. Promo codes were sent with most messages. The only responses received are from app review sites that want money (WTF!?) to guarantee a review. Prices range from $50 for a written review to $500 for a video. It boggles the mind.
Pre-launch marketing for a utility app is challenging. Gamers can be won over with pretty screenshots and trailers. Utilities are not something people froth over months in advance. Once released it’s still hard. No one has heard of Alcohology or Protip Studios so no one cares. All it takes is for one major blogger to post and it can spread like wildfire. I’ll keep knocking on doors until that happens.
2) iPad
The second most common question after “Android?” is “iPad?” to which the answer is yes! Once marketing efforts wrap up a bit I’m moving onto the iPad version.
3) C++/OpenGL Engine
Objective-C got the job done for this project, but my game ideas call for something different. It’d be easier and arguably more effective to use Unity, but I’m a sadist and plan to roll my own. Side projects are for fun after all. Most open source iOS game engines are in Obj-C, so I’ll be starting from scratch. The goal will be for the engine to run on both Windows and OS X for ease of development. It opens up the possibility of Android, XBLA, or even Steam ports if the project calls for it. Given that this project took me two and a half years I’m not expecting to ship a second one anytime soon. :)
Vitals
Development Time: ~900 – 1100 man hours
Development Cost: ~$3000 (laptop, apple dev sub, server pc, business applications, web hosting, etc)
Lines of Code: 14,355 Obj-C + 2317 C# (incl whitespace)
Art Assets: 260 unique pngs
Data: 1200+ recipes, 370 ingredients
Links: Facebook