I’m trying something new today: a deep dive into the creative process behind my latest project. I’d love to hear your thoughts.
It all started with a long-distance game of cards. With real, physical playing cards. A friend was joining via FaceTime and each time it was her turn we’d have to blindly raise her hand to the camera and ask what she wanted to do.
I know what you’re thinking: “There’s an app for that!”. And you’d be right (sort of). There are plenty of apps for some, specific card games - like Uno - but not all games. Who wants to wait for a massive download and learn a whole new app just for one quick game? An app should be easier than real life, and every attempt I’ve seen so far to bring card games to the small screen have made the good old fashioned deck of cards more fiddly and less flexible.
I longed for a single, tiny app that could sit on your phone and adapt to any playing card situation.
I realised I have plenty of friends who love a good board game but who are instantly put off when they hear video game. I wanted to provide the good-old-fashioned card game experience for people who, ordinarily, would always choose a physical pack of cards over anything virtual.
And so it became a labour of love in interface design: a quest to faithfully recreate the experience of playing cards, intuitively, while supporting almost any of the astonishing variety of card games. This means deciding on a game as a group, teaching each other the rules, and enforcing them or - in the case of one friend I demoed the app to — cheating at will.
So much of the design process was trying to shrink a table covered in playing cards into an iPhone 5, without compromising the intuitive experience of playing cards (with your hand fanned out in front of you and other players’ hands the other side of the piles on the table).
The face/royal cards give a deck of cards their vibrance, but there was simply no way the traditional mirrored design would fit at such a small scale. After all, while I wanted each card to have character, the most important factor in the middle of a game is that you can tell each character apart! I distilled each royal into an iconographic symbol - a pointy sword, flowing curls of hair, a fabulous beard, and a jester’s hat - and then… I’m lucky enough to have a tremendously talented sister to take my rough sketches and turn them into gorgeous illustrations 🤩.
Before Stir Crazy, I had never built a game - Much less one with online multiplayer! In the spirit of fail fast, I decided to start developing with Flutter, a framework I’d already grown to know and love from the development of Grammapp and Concurrency.
I knew Flutter had two essential features that would make it perfect for a simple 2D game: smooth 60 fps animations, and full control over every pixel painted. But I was also pleasantly surprised by widgets such as Draggable and PageView which really saved me from re-inventing the wheel. That said, writing animations with
addPostFrameCallback taught me more about the rendering layer than I ever wanted to know!
Cloud Firestore, with its real-time updates, was a natural choice to support the online multiplayer. While I’ve spent many hours getting frustrated by its ridiculously basic querying, this was Firestore in its element. It had one document to sync and one goal: speed, speed, speed.
Of course, as with all software, it’s never really finished. There’s an ever-growing list of feature requests from friends, beta testers, and early adopters! Stay tuned — and please let me know if you have any feedback yourself!
As it turns out, hosting a real-time online game isn’t cheap!
With my aversion to ads, I looked to tabletop games in the real world for inspiration. They provided, I think, a monetisation strategy that really sits well in the realm of games: share-ability.
When you buy a physical board game, you can keep it forever (or at least until you lose an integral and irreplaceable piece). Then, you can share it with your friends each time you want to play for free. No ads, no subscriptions, no need to convince all your friends to buy some game they’ve never heard of each time you want to play with them.
Pay once to host unlimited games. Up to 7 friends can play with you for free.