Archive for May 27, 2016

ZOS for iOS: Update started!

Zombie Outbreak Simulator on Nexus 5X and iPhone 6s Plus

TL;DR: Development of the ZOS for iOS update has finally started! Details below…

Hi everyone,

Zombie Outbreak Simulator (ZOS) for iOS was first released in April 2012. A few updates followed, but the last update was way back in May 2013.

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

cya,
Saxon

 

ZOS for Android: Ten Thousand Devices

ten_thousand_devices_dr_evil

I first started development of Zombie Outbreak Simulator for iOS back in mid-2011. At the time I bought an iPhone 4 (released about 6 months earlier), and an iPad 2 (released a couple of months earlier), to use for development and testing. Later during development I bought a second hand iPad 1, and a reconditioned 3rd generation iPod touch (which was basically the same hardware as an iPhone 3GS), to use for more testing.

This meant that with only 4 devices, I had basically every possible combination of hardware which the game could run on (the two older-generation iPhones from 2007 and 2008 were incompatible as they were too slow). When I released the game I could therefore be quite sure that it would work for everyone.

Of course now there are more iOS devices, but it’s still only a handful. There’s only 8 current plus 11 discontinued-but-still-supported iOS devices across the iPhone, iPod, iPad, iPad mini and iPad Pro.

In contrast there are literally thousands of different Android devices out there. When I first started beta testing ZOS on Android in mid 2014, there were over 4000 Android devices compatible with ZOS.

Recently I noticed that there are now over 10,000 devices compatible with ZOS!

ten_thousand_devices

So what does this mean? It means that although I’ve developed and tested ZOS for Android on a bunch of different devices, it’s impossible for me to test on all of them. And that inevitably means there’ll be bugs :( Usually obscure ones which only show up on a handful of devices.

For example, recently some people were reporting a crash on startup. This seemed to be happening on the Sony Xperia M4 Aqua consistently, but also on a few other devices.

ZOS for Android crash reports

Many thanks to Darren who was able to help me out by connecting his phone to a computer to get the log messages from the crash. I was able to track down the problem to an obscure bug in Android which only occurs in this situation:

  • On Android 5.0 (Lollipop), and
  • With a 64 bit CPU, and
  • When using SQLite (a database library I’m using), and
  • When storing the database outside the app folder

Google fixed this bug in Android 5.1 (Lollipop MR1), but that didn’t help anyone still on 5.0.

Luckily there was a workaround I could use to avoid the problem, and I released an update a few weeks ago which seems to have fixed the crashes for people.

Now it seems a new bug has surfaced – a few people have reported that the online and player maps just stay grey without ever loading any of the map images. So this is my next challenge to try to figure out :)

ZOS for Android missing map tiles

If you’re having any issues with ZOS on Android, get in contact and I’ll see what I can do to help.

cya!
Saxon

ZOS for Android: “The Walking Dead” Effect?

A couple of months ago I posted about sales for ZOS on Android, and I noted that sales had jumped a lot in October last year.

ZOS for Android sales November 2014 to February 2016

At the time I theorized that this was because the latest season of The Walking Dead started airing in October.

The Walking Dead airing dates

At the time I wondered if there’d be a drop in players when the season finished.

Well, it looks like there was! Here’s the number of players per day for a while before and after the final airing date on Sunday the 3rd of April:

ZOS for Android players per day for March and April 2016

For reference I’ve coloured the Sundays in red. The number of players generally peaks over the weekend, dropping during the week. However after the season finale of The Walking Dead there was an immediate larger-than-normal drop, and during the following week the number of players dropped to the lowest point it had been in over a month.

Sales peaked at their highest ever in March, were slightly less in April, and so far are looking to be a bit lower again in May.

I wonder if other zombie games have seen a similar effect from the TV show?

If anything, this tells me that I really need to get the updated version of ZOS for iOS done well before the next season starts (presumably October 2016). I’ve started on it, but it’s very early days yet.

cya!
Saxon