# Introducing Messy: An iOS Grid Puzzle Game


I'm happy to announce the release of
[Messy](https://web.archive.org/web/20201112034321/https://apps.apple.com/us/app/messy/id1460197914),
an iOS puzzle game I've been working on for the last few months. 😄 <!--more-->

![](https://benjamincongdon.me/blog/2019/05/28/Introducing-Messy-An-iOS-Grid-Puzzle-Game/messy_icon.png)

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.

![](https://benjamincongdon.me/blog/2019/05/28/Introducing-Messy-An-iOS-Grid-Puzzle-Game/messy_screenshots.png)

Most of the game is written using
[SpriteKit](https://developer.apple.com/documentation/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](https://unity.com/), 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](https://developer.apple.com/documentation/uikit) (which has more
advanced layout tools) for all but a couple of game UI elements.

![Example Gameplay](https://benjamincongdon.me/blog/2019/05/28/Introducing-Messy-An-iOS-Grid-Puzzle-Game/messy_gameplay.gif)

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](https://docs.swift.org/swift-book/LanguageGuide/Extensions.html),
[closures](https://docs.swift.org/swift-book/LanguageGuide/Closures.html), fully
featured
[collection types](https://docs.swift.org/swift-book/LanguageGuide/CollectionTypes.html)).
I rarely, if ever, felt like I was fighting Swift. There aren't many other
languages that I can say that about.

---

![](https://benjamincongdon.me/blog/2019/05/28/Introducing-Messy-An-iOS-Grid-Puzzle-Game/appstore.svg)

Check out
[Messy on the App Store](https://web.archive.org/web/20201112034321/https://apps.apple.com/us/app/messy/id1460197914).
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](https://twitter.com/BenRCongdon) or reach out via email to "me at
bcon.gdn".

