I’m happy to announce the release of Messy, an iOS puzzle game I’ve been working on for the last few months. ๐Ÿ˜„

It’s a fairly simple game: you move tiles by dragging, and the goal is to arrange sequences of 5-or-more tiles in a row. Each time you make a move, more tiles are added to the board. Game difficulty is modulated by the number of piece types that can be added to be board.

Most of the game is written using SpriteKit, Apple’s sprite rendering engine. SpriteKit isn’t quite a game engine, but it’s sufficiently advanced to support a game like Messy. The advantage of using SpriteKit is that you stay entirely within the Apple ecosystem and you don’t have to deal with the bloat associated with using a more heavyweight game engine. The obvious alternative would be to use something like Unity, which is both more feature-rich and supports multiple platforms. However, since this project was more to get my shoe in the door of mobile development (and not really to become a game developer), I stuck with the simpler approach.

Animations are really easy to create in SpriteKit. UI layout is a bit of a pain, as you have to do everything with screen coordinates. I initially had most of the UI rendering within SpriteKit, but later fell back to using UIKit (which has more advanced layout tools) for all but a couple of game UI elements.

Example Gameplay

Example Gameplay

I don’t expect to make much money from Messy, but I did add some in-app purchases. For $1.99, you get access to all the difficulty levels as well as some challenge levels that feature alternate board layouts. For $0.99, you can purchase 100 additional “Undos”, which allow you to reverse the last move in case of making a mistake / bad move. It was a good exercise to go through the process of adding IAPs and having something that I could “sell” after finishing it was satisfying.

So, why did I make Messy? I’ve been wanting to get back into iOS development for a while. Objective-C was the first programming language I ever learned (Iโ€ฆ wasn’t a fan), but I haven’t done anything serious with iOS since ~2012. XCode and the iOS SDKs have come a long way since then, andโ€ฆ hey, Swift is pretty great!

Working with iOS again was quite fun. The iOS development experience feels a lot different than the web, presumably because large portions of it are controlled top-down by decisions made by Apple. And that’s not necessarily a bad thing: UIKit and Interface Builder have their warts but are clearly thoughtfully designed. SpriteKit feels a bit neglected, but it works well enough. The APIs for integrating with iOS hardware features were super easy to use. Adding haptic support, GameCenter integration, and cross-device game save sync via iCloud were all quite straightforward.

Swift, too, was a pleasure to use. In the experiences I had with it, it seems well suited to mobile development. It’s miles more ergonomic to use than Objective-C and has a variety of nice syntactic sugar features (extensions, closures, fully featured collection types). I rarely, if ever, felt like I was fighting Swift. There aren’t many other languages that I can say that about.

Check out Messy on the App Store. It’s free to play indefinitely, with an in-app purchase to unlock some additional levels. If you have any feedback, send me a tweet or reach out via email to “me at bcon.gdn”.