TL;DR: Development of the ZOS for iOS update has finally started! Details below…
Focus then shifted to Android when in late 2013 I received funding to make an Android version of ZOS. ZOS for Android was released in November 2014, and I’ve made a few updates to it since, but most have been minor things like adding a tutorial, or bug fixes of various kinds.
The Android version of ZOS included some new features over the iOS version (soldiers, helicopters, player maps, and an entirely new UI). Ever since the first Android release the plan has been to port all of the new stuff back to iOS, however during 2015 I was too busy to get around to it. A couple of months ago I posted a sales update for ZOS on Android, and mentioned that I was finally in a position where I could get back to the iOS update.
For a while now I’ve been tinkering with how exactly I was going to update the iOS version. The core of ZOS for iOS was developed during 2011 to 2012, eons ago. The core of ZOS for Android was developed in 2014, and even that’s ages ago in mobile app development time-frames. Some of the factors I had to consider were:
- The core game of ZOS for iOS was developed with C++ and OpenGL. However the UI and interaction with Google Maps was developed with Apple-specific Objective-C and UIKit.
- When developing ZOS for Android, I was able to port over the C++ and OpenGL without too much effort. However the UI had to be completely rebuilt from scratch. We used the cross-platform Cocos2d-x to do this. However then a bunch of Android-specific Java code was added, to interact with Google Maps and other utilities. And then on top of that I added the new features like soldiers, helicopters and player maps.
- ZOS for iOS was originally designed to work with iOS version 4.0. We’re now at iOS version 9.3 – that’s how old ZOS for iOS is!
- ZOS for Android was built with Cocos2d-x version 2.2.2, which was released in December 2013. It’s now at version 3.11.
- ZOS for Android was built with the Eclipse ADT (Android Developer Tools), the best option at the time. Google discontinued support for this in June 2015 – now Android Studio is the recommended development tool.
So some of my options:
- I could grab the C++ and OpenGL code for the soldiers, helicopters and player maps from ZOS on Android and merge it back into the old ZOS for iOS code base. But then how do I fit the buttons / screens / etc for those features back into the old iOS UI?
- I could grab all of the current version of ZOS for Android, which includes a UI built on the cross-platform Cocos2d-x, and port that back to iOS. But this is using a version of Cocos2d-x which is already 2.5 years old.
- How much longer will I be able to keep developing ZOS for Android with Eclipse, before I’ll be forced to update to Android Studio anyway? I already got hit a few months ago where one small update rippled through to needing updates to 3 other components. How long until this falls apart?
In the end I decided to start over from scratch! I’m creating a brand new project with the latest version of Cocos2d-x (version 3.11). On Android I’m using the latest Android Studio 2.2 (an early release version which Google just released 9 days ago with new better support for Cocos2d-x development). And on iOS I’ll be building a new app designed from scratch to work with the latest devices and version of iOS.
Most of the core game and UI code in ZOS for Android should be able to be ported over to the new app, with a few tweaks here and there due to changes in Cocos2d-x. The major new work will be in separating off the Android-specific parts and implementing the equivalent on iOS. For most of this I’ll be able to grab bits and pieces from the old ZOS on iOS.
One major advantage of building a new app is that I’ll now have both iOS and Android running from the one set of code. This means any new updates in the future will automatically work on both platforms. No more cases where there’s a 2 year delay converting from one to the other! This is why people use cross-platform games libraries like Cocos2d-x or Unity in the first place. Unfortunately way back when I started ZOS for iOS this wasn’t an option, due to the integration I required with Google Maps at the time.
So to get to the point of this post: Now that I’ve figured out the how, I’ve finally started! The photo at the top of this post shows the new app, with the same home screen from the same code, running on both an Android Nexus 5X, and an iPhone 6s Plus!
The next question of course is “when will the iOS version be ready?” It’s too early for any kind of estimate at this stage, but at least I’m working on it! :D