Can we make an App that stands the test of time
Everytime there is a new update either from Apple or from your favourite framework, do you wonder if that will break your app? Do you feel, oh I need to update the app otherwise it won't work on a device. If you are a serious developer, you will look at these this rather seriously. This article is a case study about one of my app - Dark Horse (https://itunes.apple.com/us/app/dark-horse/id351051047?mt=8)
This is the time long before Angry Birds and any of the Lua based frameworks were even introduced. This is when the App store was not exactly the frontiers, but neither were they populated like London/New York or Tokyo. I forayed into making apps as a hobby, it was more so to make optimal use of my Mac and the iPhone. It was actually the iPod that fueled my interest into xcode. While I was meddling with mobile development while others were battling with the Y2K, it was mainly on the Microsoft platforms and I remember ordering the Visual embedded Basic and Visual embedded C++ discs from Microsoft to get the IDE's. At the time there were a fair few developers that had apps that ran on the Pocket PC's and I still do recollect writing to one of them, Sean O' Connor (http://www.windowsgames.co.uk) and he was a good soul who shared some tips on drawing hexagonal tilemaps. At that time there were not many search engines to "Google" your searches.
While Windows and the Microsoft Tools had become second nature, where I could whip up a prototype or an app using VB in a very short time, migration to the Mac was equally slow and painful. The familiar apps were no longer present and half the development tools were not available, specially given that I had the MSDN subscriptions that gave me legal and latest software for a very long time. The first hurdle, to get the IDE for development was a challenge, how do I get xcode? I found out that I can install it from the Install discs that came with the Mac (It was a new Intel based White 13" running Tiger) The next problem was How do you use XCode? IB (interface Builder) looks a lot like a visual editor, but then why does it not have the events by double clicking? Looked up the web for some instructions, there were mentions about linking the components with the first responder, etc... what??? This was just IB, I had not yet even touched the Code. Coding was another big jolt, what is the
- (void) something()and how was it different from
+ (void)somethingElse()and then the square brackets and the colons... as in
[(UIImageView *)[self.view viewWithTag:100] setImage:[UIImage imageNamed:@"gameOver.png"]];That was simply not something that I could immediately comprehend and I did not have to, it was after all just a fancy. In about a year's time, I changed departments and from the Research Project that I was working on, moved on to a more Corporate type position and upgraded myself with a shiny new Leopard 15" MBP and it came with a free iPod Touch. This time again I felt like experimenting, writing an app for the device, now I had two devices that I had to make full use of, the MBP and the iPod touch. Fast Forward a couple of months, I was all equipped, I finally knew what the + and the - and the square brackets stood for, I also had a new found knowledge of Objective-C and could not believe how I let that daunt me for so long and also had an iPhone 3. VB was still much easier to use and faster to prototype with. In fact, I made a couple of my apps with VB to test the prototype and/or develop the code logic (while I was new with xCode and Objective-C).
So the first app that came out of this was RoboRun, it was like a challenge, I had the equipment, a Mac, the iPhone and also paid the AUD $119 (at that time USD > AUD, unlike now where it's the other way) so I had to have an app to feel that I did not waste my money. That was followed with a couple of more apps, Hydrocarbon, Dark Horse, Farmer Fred's Animal Farm. All of these apps apart from RoboRun, which has been rewritten in CoronaSDK (just to add OpenFeint) are original Objective-C code that were written in 2009/2010 and have not been updated since (maybe once to add my version of spurced up graphics (the first version looked like a prototype) and the other to add iAD's in them, after all if I gave them away for free, why not get something from placing AD's).
Then around mid 2010, I looked at alternatives and found CoronaSDK. That was the time when not many knew about CoronaSDK, Bubble Ball had not happened. iPads were not released and Apple had just had a fallout with Adobe. So when the dust settled, I updated RoboRun and OZ Uni's with CoronaSDK, and created a couple of new apps with the framework.
Then came the iPads, the iPhone4, 4S and while these apps that were created with xcode were iPhone only, they would run perfectly fine on the new iPhone/iPod touch devices. It might not have retina graphics, but they run perfectly fine even on the new iPhone5. Where I had to update ZDay (an app made for a client) several time since the framework it was written on had to be updated with every new iOS version. In short or in an after thought, is xcode and Objective-C the best way to go? The Binaries are small, they run on older devices (as they were build for them) and also on the newer ones.
The reason behind this post came when I was trying to compile it for iPhone5 and thought of updating the graphics with retina graphics, now that all supported devices will be only retina displays. I found a very strange thing, first is that to support iPhone5 and not have the letterboxing (the black borders) you have to add a Default.png graphic that is 1136x640 and has the filename of Defaultfirstname.lastname@example.org.
The second issue was that my screens were behaving strangely, while my app was supposed to be in landscape mode, it was either getting scaled or showing up chopped. So maybe it is time to update the code and the app. However the app downlaoded from the App store works perfectly fine, so maybe it still has a little more life left in it before I need to pull it off the app store or update it.
Though I feel quite comfortable with Lua based frameworks and have quite a few apps with CoronaSDK including ZDay Survival Simulator (made for a client) and quite a few articles for Gideros (not released anything with Gideros as yet) or Moai. If it was not the lure of creating cross-platform applications, would objective-c be the only correct option? though I must mention that I did try to move from Objective-C to Cocos2D before trying CoronaSDK.
If you download a copy of Dark Horse (https://itunes.apple.com/us/app/dark-horse/id351051047?mt=8) Do hear and enjoy the 8-bit tunes, these are what were the music tunes composed on 8-bit computers, these on the ZX Spectrum 128.