These are just random thoughts on what I believe are the pros and cons of coding an app vs a game. The reason why I am writing this is actually because I find myself in the same predicament. I’ve been coding crap for the past 3 years and I believe its time to make something “significant”.
At first I thought, I’ll code a bunch of apps and even though they might not be Top Pick apps, they will be enough. Even if they only make about $5-$10 a month, I may be reaping $100 a month which sounds cool. I even got into the whole iAds thing and thought it could improve my revenue to perhaps $200 a month. So I read some docs, took some online course (which were much better than the docs btw) and I was ready to code. This is basically how I coded in my personal evolution as an iOS programmer:
At first you will code anything! My “Code Anything” stage consisted of an app I wanted to make for my wife. As a guy, Im very absent minded when it comes to remembering birthdays and important things in a relationship. One of them is simply being spontaneous and surprising your loved one with an occasional flirt or memoir of your time together. So I made an app (iLuvMe) which would take 15 memoirs and present them to the user as he/she tapped on the screen. At first the app made the user jump through hoops. Currently it is development to make it easier to use and I added the email functionality for users who have trouble using it. As I learned later, this should have been the first feature added to any app…Contact Customer Support.
My “Borrow Code” stage was basically taking an existing online tutorial code and modifying it to make an app for tracking imports in the company I work for (Shipment iTrack). I did it because it actually fulfilled a need in my job but I didn’t learn how to design an app, I just learned how to understand or interpret code. This is very dangerous because it makes you believe you understand concepts that you actually don’t, such as Delegates & Protocols. It was around this time that I also made my next app (SalesToGo) which basically borrowed the sample app from CorePlot and modified it to my needs.
Then my “Lo Quality Original” stage consisted in creating an original app with a web service to back it up. The app worked, works, but its uglier than sin and I took no consideration as for UX. The app (iGlobe) is an app intended to be a playable online world wide game where you rack up points based on the places you visit and people you meet. It basically rewards you for being social. But building an app from the ground up teaches you to think about how to design code, it teaches you to really understand design patterns and code structure. This is where I learned most of my current knowledge on programming; both coding and planning.
I then decided to go back and upgrade my old apps during my “Improve Existing Apps” stage. This is when I added Customer Support buttons and some UX features on my old apps. However, I ended up with some spaghetti. This is why I began to see where I could reuse code and extract it into a class for making web connections and fetching JSON for example. This helped me understand how to structure code. I incidentally also learned how to read reference documentation by using 3rd party SDKs like Facebook, Bump, AppiRater, CorePlot and TestFlight.
At this point I was kinda bored of apps and ran into Cocos2d. I guess that having bought a book made me more aware of my investment so I decided to really stick with it. I read the book and learned quite a bit about Cocos2d and decided to start with a game. I started with an “Opportunity Game”. You can make original games or remakes of traditional games as an ongoing plan, but you can also take advantage of a worldwide situation and make a game out of it. This has the added advantage that the world is aware of that global situation and it serves as a nice piggyback ride for marketing the game. So I was 2 months into my game when I realized I had to outsource my graphic design. It dawned on me that you have to see this as a business or it will fail somewhere in the code design, graphical appeal or marketing plan.
Finally, I reached a fork in the road. Should I work on a game or an app. So I came up with something like this:
|Game||Large Market||Must be Good|
|App||Quicker to Market||Must be Original|
A game has a larger potential market. Why? Because anybody can be interested in a game. Angry Birds is fun for young and old. But if you create an app, its harder to come up with something for everyone. It will most probably end up being for a niche market. I also believe a game is easier to market. It is more subjective to like or dislike a game, whereas an app has to be VERY appealing to be liked by a user. However, the game must indeed be good! This means, it must really be good and it is expected to have certain things such as GameCenter, many levels, powerups etc.
On the other hand, an app can be made quicker and still be good. What I mean is, you can have very little functionality in the app and have it be very effective at what it does. However, to be successful, it has to be original because not only are there tons of apps that can already do many things but again, apps are very subjective. Thus the app must really do something original or it will be overlooked for another.
So it was Decision Time. I realized I needed a partner. It just so happened I met someone at the Apple Dev Talk in Austin on January 2012 and I began working with him on a game. This was going to be a full fledged game. We designed it on paper first; Intro, levels, scoring, power-ups, social media integration etc. We started working on it since February and it has been falling apart since. He didn’t have enough time as he is a new Dad (which I totally respect because my son is 3 years old). I did manage to outsource the graphic design and keep my work plan. The timeline has been stretched as the art proved to take longer than expected.
So here I am, with a game that is 2 months before its projected launch and Im 50% through the game. Everyday getting new ideas in my head. Some ideas tell me to go back to real-need apps from situations I encounter day to day. Others tell me to focus on 1 or 2 of the old apps and push through to make them the cornerstone of my iOS development. And yet others say, finish the game you started or make more “Opportunity Games”.
So why am I posting this? Because 140 characters is too limited! 🙂 Do you find yourself in the same situation? This is not a programming specific problem. This is a decision like any other. You know you have to do something, anything! Just don’t stand still or you’ll sink!
Anyway, I thought my experience could help anybody at least to recognize where they are in their iOS indie dev evolution. iOS dev world is great, but as with anything, you gotta put your back into it and prioritize.