No Dice: An App for Board Game Players

Building an iOS App, from Ideation to Completion

Ben Albright
8 min readApr 17, 2024
No Dice Logo

Project Date: July 2023 — May 2024

Role: Project Designer and Developer

Introduction

Growing up, board games played a huge part in how my family spent time together. Whether it was Balderdash or Blokus, we were always having a blast spending time together and making lasting memories. This love of board games is something that got put on the back burner as I graduated high school and went to college, but in the past year, my love for board games has been reignited.

Classic Board Game: Chutes and Ladders

The Problem

Board games, like many other tactile hobbies, have fallen out of relevancy with the rise of smart phones and social media. That being said, services like Goodreads and Letterboxd have given people an online space for people to connect each other about their favorite books and movies. Unfortunately, the only digital spaces for board game discussion are available on forums from the early 2000’s or Reddit, and while these services still suffice for experienced players, there are seemingly high barriers that keep a lot of casual players away. There is no dedicated space for people to share their thoughts and experiences about board games with each other. That’s where No Dice comes in.

The Solution

No Dice is a mobile app that enhances board games for everyone, whether you’re a board game enthusiast or a brand new player. Designed using SwiftUI and Xcode, No Dice’s core functionality lies in its social connectivity, expansive game library, and die rolling simulator.

The idea for No Dice was initially created and pitched this past July. From that pitch to now, almost everything about No Dice has been tweaked or changed with the exception of our goal, to make board games better for everyone. From a development perspective, keeping this tenet at the core of our design efforts moving forward would create the best product for our users, and in turn the best user experience.

Throughout the Fall, my efforts were focused on building a consistent brand (outlined in this case study from my profile), and creating workable, testable prototypes. These prototypes were not meant to be perfect, but fleshed out enough to conduct user testing in the early spring. This testing gave great insights about what the app where the app was succeeding and what parts needed fine tuning as we approached launch. With all this in mind, development on No Dice has wrapped, and this is how I made it.

No Dice 1.0

Game Library

Given that the app focuses around connecting with others about board games, the game library was the obvious choice to start with as I began development. I had originally thought to write each board game’s entry by hand for the purposes of the library, with information such as the name, player range, duration, box art, and even game descriptions provided for each game. However, after grinding out about 20 games like this, it quickly became apparent that this was going to be unsustainable.

Just to humor myself, I decided to see how many board games were available on the popular website BoardGameGeek, and the result was pretty staggering. Upwards of 15,000 board games are housed on their site, so I knew I was going to need to find another way to get board game information quickly.

Luckily, the same website that crushed my hope also gave me the key to making this game library work, the BoardGameGeek BGG XML API. In short, this API is an actively updated list of board game information for every game on their website. With proper usage and formatting, I would be able to display game information with ease. Unfortunately, this API would end up becoming one of my biggest challenges in creating this app.

The API was expansive, and incredibly useful, but I did not have much experience using API’s, especially non-JSON API’s. After looking all over for other options that would be easier to integrate into an app like this, I knew I needed to find a way to parse this data. The challenge with using this API ended up being what I refer to as “Board Game ID’s”. Each game in the database has an ID number that is completely random and can be anywhere from 3–6 digits in length. Additionally, this API didn’t display all the information at once, but rather, each game needed to be called by its specific ID number in the URL of the API. For example, if you wanted to view the information for “CATAN”, you would need to put the game’s ID number, “013”, at the end of the search URL.

Vabanque Game Entry

After much trial and error, and many Swift XML Parsers, I was finally able to get the information to display in the app. My method was overcoming this challenge started by working with just one game ID (2536, for the game “Vabanque”) to troubleshoot my parsing logic. Once that game displayed properly, I used a JSON scrape of the entire API that I found on the BoardGameGeek website to get ID numbers and names for each game on the database. This ended up becoming yet another surprise as I had one again low-balled the number of board games, as this JSON file had 150,000 entries. With the full list of ID numbers now available to me, I used a search bar combined with a JSON Loader to let users search for games, which the JSON Loader would then find the corresponding ID for, finally passing that ID to the API to then get the correct game’s information.

The final challenge with this section of the app was formatting, which thanks to the prototypes for the Fall, ended up being fairly straightforward, marking the completion of the game library.

Beta Game Library compared to the Final Version

Social Connectivity

Creating an app that dealt with user data and social connectivity was definitely an aspect of this project that I vastly underestimated. Seeing so many successful social media apps on the market made me believe that it would be easy to create something similar, but this aspect of No Dice has definitely been the biggest challenge for me so far. Not knowing where to start, I found my way to Firebase to learn as much as I could. After registering and watching some very helpful tutorials, I got the basics down for creating a social media app. Now it was time to make it my own, to adapt it for board games.

I took a lot of inspiration from Goodreads when deciding how the feed would be laid out, how a post would be constructed, and what kind of information to include. However, unlike reading a book, playing board games is often done with multiple people, rather than just an individual person. This inspired me to tweak the game ratings to represent each individual gaming session with that game, notated by an overall rating, the number of players the user played with, and the estimated duration of their session.

Beta Posting Interface compared to the Final Version

Finally, when structuring how a post would populate the feed, I wanted posts to be easy to view at a glance, but I also didn’t want to omit details that users felt were necessary to include. I ended up finding a good balance by condensing the stats users enter in their reviews to be next to the box art image, giving ample space for their review as well as the like button.

Beta Version of the Feed compared to the Final Version

Dice Rolling Simulator

This Dice Roller was the part of the prototype version of the app that was sort of left behind. While functional, it was not very satisfying to use and basically felt like a random number generator. While generating a random number is certainly part of the process, I wanted to users to really feel like they were rolling the dice. After adding a few animations and more dice shapes, the dice roller is now in a state that I am very pleased with, and I think users will have a much better time rolling the dice.

Beta Dice Roller compared to the Final Version

The Profile Page

This project’s “bow on top” so to speak was the profile page. This page allows users to view their posts at a glance, check out the games they have saved to their library, as well as manage and delete their posts and games. The posts load very easily from the users Firebase document, and to make game loading simpler, I added to function to save the game information to their profile so users would not have to load the information from the API each time they wanted to view the game. This was as simple as saving the information as an additional document in their Firebase profile, so it could also be called as easily as the posts.

With this functionality working properly, I extracted the view to be repurposed for other users profiles, so that users can view other people’s posts on their respective profiles, but only have permissions to delete posts and games on their own profile.

Viewing your own profile versus another user’s profile

Conclusion

Building an app from scratch has been a massive challenge. I entered my graduate program with almost no experience coding, but after just a few semesters, I have created something I am really proud of. The board game community is a group that I have always considered myself to be a part of, but for the longest time we haven’t had an app to connect with each other to share our stories. No Dice offers a solution to this problem, and over the course of a year, this project has been fully realized. From that pitch back in July to the completion of the app in April, I am immensely proud of the product that exists today. If you would like to learn more, I will link the project website here.

Next time you play board games, I hope you roll with No Dice!

No Dice Banner

--

--