This week, I worked on getting an iOS build of Conquest!. I was putting it off until now because I knew there would be some challenges. But I had no idea how difficult the process would be in comparison to building for Android (or even a Mac).
My first stop was Apple's web site, where I paid the $99 to become an iOS app developer (yay!). Building for Android, PC, and even the Mac platform is free. But at least it is good for a year.
My next hurdle was lack of a Mac computer. Apple requires a Mac to compile, sign, and publish iOS builds. Ironically, I can build Mac versions of Conquest! on my Windows PC without this requirement...
After some research online, I rented a Mac from MacInCloud.com. They offered a 24 hour trial period for $.99 and 3 hours of Mac time per day for $20/month. Perfect! I was able to sign up and RDP into my Mac within a few minutes.
When you build for iOS in Unity, it creates an XCODE project, which I had to transfer to my Mac via Dropdown. I created a zip file for the build and noticed it was 500MB, which took several minutes to upload. Since I was in full test mode I didn't want to wait for long upload times so I did a little digging into the project Unity created.
It turns out, that Unity uses IL2CPP as its scripting backend for 64-bit builds (iOS version 8+) and this includes a 1GB library file. Furthermore, I noticed the date/time did not change in between builds, so it seemed like this was just being copied over from a different location. So, I removed this library file from the zip (which dropped to < 90MB) and copied the file back once the project was loaded to Dropbox. As I suspected, it built fine so I could upload the project without long wait times.
Next, I had to request and generate a certificate and create a provisioning profile for the Conquest! app. The Unity web site has some great instructions and with those instructions and Apple's, this turned out to be the least painful part of the process.
After building the project on "my" Mac, I generated an Archive and uploaded the file to the Apple's web site. It should also be noted that the entire process is tightly coupled with your iTunes account.
Apple takes ~15-30 minutes to process each upload. After that time, it is available for internal testers (I seemed to be limited to just one of these). The build is also being reviewed for Beta, which took 1-4 hours each build. This step is crucial because you cannot distribute to external testers until the Beta build is approved.
To Beta test an iOS application, one must install Apple's "TestFlight" app. After installing that application, I was able to download Conquest! onto my iPhone 5s and run it. Whew!
I could not figure out a way to share a link to Conquest! in TestFlight; it appears email distribution is the only way. One nice feature is Apple will notify users when a new build is available. Going into the TestFlight app on your device allows you to download the upgrade.
Unfortunately, I'm not completely out of the woods yet. Apple has reported that Conquest! is over the 100MB download limit. After doing some research, I decided to opt out of a Universal app and only build for iOS 8+ 64 bit devices. This cut over 100MB out of the size.
Furthermore, I discovered that textures in Unity are only compressed when in the dimensions are a power of two (POT) i.e. 512x512, 1024x1024, etc. This warning message is displayed but I never paid much attention to the size of my build since the Android one was ~80MB. Krees and I worked to make all the backgrounds a POT and this reduced the build size by 12MB.
Even with these changes, Conquest! is still ~15MB over. There are more textures we are fixing, which should bring us under the limit. Otherwise I'll have to start removing music.
The other major news this week was an overhaul of certain screens in Unity to make them more platform independent. This was accomplished by working with the anchors on each panel. It took ~8 hours but now Conquest! is playable on almost any device (I still have some work to do for iPads).
Finally, I decided on a general release date for Conquest!: June 1st. This should give me time to finish the remaining cleanup items and allow for plenty of Beta time.
This week in the Core Labs Accelerator program, we learned about successful marketing and PR strategies. Definitely something I've always needed help with!
One important milestone is Conquest! surpassed 100 players for the first time in 10 years. A big "thank you" to all the Beta players. Overall, this has been a great week!
Follow the journey on Facebook or Twitter. Until next time, I hope to see you in the game.
James has been working on Conquest! since 1993.