Fun new ways to communicate with friends are growing in popularity, and we wanted to build a communication tool of our own. We took inspiration from the "money maze" toy, which locks a gift in a transparent cube maze. In order to unlock the cube and get the gift inside, the recipient must complete a complex puzzle.
What it does
Holdup is an iMessage app that allows users to send secret messages and payments. The catch is that in order to read the message and accept the payment, the recipient must complete a challenging mini-game. The game uses the device's accelerometer, and is intended to frustrate users who want to read the message or receive their money. Senders can choose from three difficulty levels, and a unique game level is automatically generated. The communication is built directly into the iMessage platform, which allows users to send the mini-game to their friends, even if they don't have the app installed.
How we built it
The app is written in Swift and built with Xcode. It exists almost exclusively as an iMessage extension. The mini-game uses SpriteKit, a 2D game engine, to render sprites, simulate physics, and detect collisions.
Challenges we ran into
The iMessage platform has a lot of restrictions, many of which are undocumented. Because the app exists as an extension inside the Messages app, many normal app capabilities are unavailable. We ran into a dozen of such issues, and adapted the design of the app to fit into the given constraints. Although our final result had to undergo many unforeseen design revisions, we're happy that we were able to create a working and fun application.
Accomplishments that we're proud of
We're especially proud of our ability to iterate quickly. Our app design and vision experienced three major overhauls over the course of the weekend, and experienced many minor tweaks and adjustments. Some of these changes were prompted by an analysis of the app and consideration of how well it aligned with the user's goals. One quick example: We originally envisioned the ability to create custom mini-game levels via a drag-and-drop level builder. We thought that the sender would enjoy creating a custom experience for their friend, so they could be as nice or mean as they desired. As we considered the concept and talked with others, we discovered that the sender would rather be able to create a challenging mini-game quickly and generally finds more value in their recipient's reaction than the implementation of the actual game level. Since we structured the app well, we were able to react to these changes and make a better end product as a result.
What we learned
We learned a bunch about the Message extension iOS framework, but more generally learned about technical risk. When we committed to creating an iMessage app, we reaped many benefits, but also inherited some challenges. Because the technology and user experience are so tightly coupled, we had to make some tradeoffs that affected the end users. However, the additional constraints imposed by the framework forced us to ask tough questions and refine our idea more than we otherwise would have. Our final result is simpler, cleaner, and more extensible than our original vision.
What's next for Holdup
The App Store! The app works really well, and the design is polished. We plan on completing some additional user testing and then publishing the app for anyone to use with their friends!