WarLight for iPhone and Android!

It’s time for a big announcement! I’ve been hard at work on making a mobile version of WarLight, which will first target iPhone and then later Android devices.

The mobile client will be a native app offered on the Apple App Store and the Android Market. This will be a full equivalent to the Flash client in that you can play the exact same multi-player games as you can on your computer, however the UI is completely re-worked to adapt to being played from a phone. This means it’s not a scaled-back version of WarLight — it supports all of the settings and all maps! Before you get too excited though, know that it’s not done yet — see below for a timeline.

WarLight is a perfect game for mobile devices due to its asynchronous nature. Unlike other multi-player games where you have to be online at the same time as your opponents, WarLight allows you to take your phone out of your pocket whenever you have a free moment, enter your orders, and put it right back. I believe the mobile platform will only get more important as time goes on, as fewer and fewer people own desktop PCs. And WarLight is a great fit for this environment. My goal is to put WarLight on as many devices as possible, so you can play no matter where you are.

Tablets

I know many of you at this point are wondering if this mobile client will run on your iPad or Android Tablet. The short answer is yes – it will run as an iPad or Android Tablet app. However, it’s important to understand that the UI is designed to be used from a phone.

I do recognize that tablets are also a growing market, and I do believe that WarLight is a fabulous game for tablets as it lends itself very well to a touch interface. In the future I hope to build a UI that�s custom-tailored to fit the tablet form factor. However, this release is focused on phones. The fact that it happens to also run on tablets like the iPad is just a free bonus.

Preliminary Timeline

As stated above, the mobile client is still a work-in-progress. I’ve been working on it in secret for a long time, and I’m finally within reach of having a “preview” version that I can share with the purpose of getting feedback. This is the first mobile app I’ve ever made, so I expect it to be a learning process with many iterations. For this reason, the first previews will be member-only. If you’re a WarLight member, you don’t need to do anything extra to sign up for the betas – just keep an eye on the blog.

1.05: The first step is to get WarLight 1.05 out (hopefully this week). This will this contains all of the changes to the server code needed to support the mobile client. For example, the format that WarLight stores maps internally is changing a lot so that mobile devices can render them quickly.

Preview: After 1.05 is out, there’s at least a few weeks of work still left before the first mobile client release: the preview. The preview will have just enough features to play multi-player games and chat in them.

Alpha: After the preview, I’ll begin working on the alpha. The alpha will add single-player support, as well as a more complete multi-player experience including things like the ability to see history, game settings, the players window, nudge/boot window, etc.

Beta: The beta will allow creating games, as well as the lobby’s add/remove players feature. The beta period will focus on bug fixing, polish and enhancing usability.

Release: The mobile client is pushed to the Apple App Store and Android Market.

Post-release: Tournaments are a lower priority and won’t make it until after the initial release. Also, things on the website (such as reading and posting on forums, viewing and joining the ladders) are also a lower priority since they can already be accomplished through a device’s web browser. However, it’s nice to have them all eventually added to the app so it becomes a one-stop shop.

Technical Details

Currently, the mobile client supports the My Games page, the lobby page, sign in, sign out, sign up, forgot password and the ability to render any map with panning/scrolling/zooming. All that’s left to add for the preview is the ability to deploy armies, issue attacks, commit orders, pick territories, and play cards.

It will run on Android Devices 2.1 and up and all iPhones. As a benchmark, I’ve been testing the Big USA map on a first-generation iPhone. Since the Big USA map is so large, and the first-generation iPhone is so old, this is what I consider the worst case scenario. Anything else should run swimmingly performance-wise.

To accomplish this, the maps are rendered using OpenGL to get the maximum amount of performance out of each device. All of the UI that doesn’t involve interacting with the map is handled with the native UI controls on each platform. (buttons, switches, etc.) I really like this mixed approach since it simultaneously allows for fast rendering you get with OpenGL, but avoids having to re-implement all of the native UI controls like many fully-OpenGL apps do.

One of the biggest hurdles was maintaining a single code-base for all of the clients. Most games that are written on multiple platforms / mobile devices end up doing re-writes of their code. I’d be willing to do a one-time re-write of WarLight’s code if I had to, but what I can’t do is actively maintain many copies of the code. I simply don’t have the time to fix every bug multiple times and add every feature multiple times. Combine this with all of the features I plan to add to WarLight down the road, and it’s clear I need a cross-platform solution. I’ll talk more about this in future blog posts.

Another hurdle was automated testing. I’ve talked a little bit about this on the blog before – I’m a huge fan of automated testing and WarLight would simply not be possible for a single person to do with manual testing. The number of combinations of game settings and situations is mind-boggling, and trying to manually test each of these before every release would make releasing extremely expensive.

Every time I add a feature, I add a slew of automated tests that test the feature in every significant way I can think of. Similarly, anytime a bug is found, a test gets created that reproduces the bug before the bug is fixed. These tests live forever and they all get run before any WarLight release happens. This ensures that bugs don’t come back (regressions).

The mobile client is no exception. I’ve been writing automated tests for the mobile client from the very beginning as I develop each feature for it. These tests take work to create and maintain, but they really pay off in the long run as they allow for rapid releases.

Once the preview is out, I hope to return back to a regular release schedule of once every 2-3 weeks. This is how I prefer to operate — the last few updates have been much slower because I was splitting my time between the mobile client and traditional releases. These days will soon be behind us — I’m eagerly looking forward to being able to rapidly add new features to the WarLight!

Stay tuned to the blog for more updates.