RunAnEmpre Logo
Run An Empire is an amazing digital mobile experience which crosses over territory game and fitness app. The idea represents one of the best examples of new thinking enabled by mobile devices and is at the same time fun and good for you. There aren’t too many things in the world that can claim to be that! Towards the end of 2014 I spent a few months working on an iOS version with Pan Studio.

Is it an iOS game or a mobile fitness app?

iPhone Fitness app Screenshot
Run An Empire is both and combines the game play of capturing, defending and maintaining territory on a real world map that you have to actually run (or walk) around to have a stake in. Really easy games to understand and enjoy are not always easy to create. Many a creative session was had with Sam Hill, one Pan Studio’s co-founders and an Experience Designer who has thought a lot about cities in computer games, which often led to exciting logical problems to solve. Another challenge about geo data is that there is a lot of it. It sounds trite to say but the world is a big place and as soon as you are collecting data based on actual geo spatial entities, you are collecting a lot of it.

MKMapKit vs MapBox vs OS OpenSpace iOS SDK

Run An Empire is a location based experience so once the Core Location work was in place it was time to look at the mapping solution. As Run An Empire is a 2014 winner of Geovation’s How can we encourage active lifestyles in Britain? challenge we used a combination of Ordnance SurveyOpenSpace iOS SDK and and Apple’s native MKMapKit for the most part. After the game’s logic had largely been developed attention turned towards visual aesthetic a switch was made and MapBox replaced MKMapKit. This switch between these two libraries is easy enough for developers but delivers the ability to style maps though a web interface and is a fantastic resource for iOS projects using maps that want a little more control of how they look.

Node JS and MongoDB vs Ruby and PostgreSQL (PostGIS)

iPhone Game Screensho
Every freelance iOS contract I have undertaken has been different and the new context on this job was maps and geo data, there was much GeoJSON and spatial database querying. The first prototype was built with Node JS and MongoDB. As I was looking at learning about the mapping and other challenges of the native Objective-C application this choice was arbitrary apart from allowing the prototype to get going quite quickly.

iPhone Map App Screenshot
What I learned using this backend tool set is that they are great for prototyping and small apps NoSQL data stores are better served as providing caches as part of larger infrastructures. Something that became apparent at this stage was there are often two ways of handling GeoJSON operations. For example merging two geo spaces together can be performed by the database or code running on the server and I did some experimenting with a great little Javascript library called turf.js.

Ultimately once a dedicated backend developer had joined the team the focus quickly changed to Ruby and Postgres with the PostGIS plug in. With this solution in place both geo spatial queries and RDMS conventions can be leveraged and together we designed a fully featured REST API service.

Something Old vs Something New

OHHTPStubs seems to be one of the first things I install when creating a new Xcode project these days. It certainly is one of the best way of not only allowing independent development from the backend it’s also a great way to test network activity. Let’s hope a Swift version is on the cards pretty soon.

In addition to the ever present Crashlytics and TestFlight Run An Empire uses MixPanel for analytics and I found it very straight forward.