It is now already more than two weeks ago that Marcel, Philipp, Martin and me released Placescore. For those of you who haven't heard of it: It's a location-based game for the iPhone, where you can battle with other people for venues around you.
I did most of the stuff on the iOS side, so I want to give you a short overview about the development and some decisions I made along the way.
As most parts of the app are very basic, the most interesting thing is probably the actual game part of Placescore. When I started with the development I thought about using one of the existing game frameworks which exist for iOS. But after having a look into Cocos2d I decided that it's a bit overkill to learn and use such complex framework and just used the things iOS provides. So the game is basically built with some arrays, views and gesture recognizers. As simple as this may sound, it took in fact quite some time to reach a state where every algorithm and animation works as it is supposed to.
To use Interface Builder or layout everything in code is a topic I still do not have a final opinion about. As the new XIB format in Xcode 5 at least reduces merge problems I think it is okay to use them. However, the process is far away from perfect, because you can rarely do everything in Interface Builder and so you have to make more adjustments in code. Sometimes this can get a bit confusing because you don't know immediately where you made the setting you are looking for. But as it in general safes some time I decided to use XIBs in Placescore for most of the parts.
Global font and color settings
A thing I really started to like is to have global font and color settings. I simply created categories for UIColor and UIFont which contain methods like psMainFontOfSize: or psBlueColor. If we now want to make an adjustment for one of the colors or change the font throughout the whole app we just have to make it in this one place.
Not very surprisingly I used AFNetworking for the whole networking stuff. I already finished some parts of the app when the new version 2.0 came out and so I decided to stay with the 1.x for now. But I will change to the new version as soon as there is some time for that.
Another thing I used and I think is worth mentioning here is TTTAtributedLabel. Unfortunately it is still not possibly to have links in labels on iOS and this is an easy way to achieve this.
A library I got to know in another project and I also would like to integrate in Placescore in the near future is Mantle by GitHub. It is a very easy and flexible way to define models for your app and automatically create them from JSON responses.
There are also some external tools we use to make the whole development and testing process a bit easier.
For distributing beta versions to our testers we decided to use TestFlight because it is free and has everything we need. It might become interesting now as it has been accuired by Apple. I hope that they will integrate it with their developer center in a good way to simplify device registration and beta distribution.
For crash reporting we use Crashlytics. It is very easy to use, has a beautiful interface and delivers much information about crashes that occur. Of course we are also interested in how our users are using the app, so we integrated Flurry to get some analytics.
Finally, I can say that the development took a lot more time than we expected at the beginning, especially because we did it besides our regular day jobs. But we are very happy with what we have built and are already working on some new features.