Introduction

One of my biggest passions is board games. I’ve been passionate about them since middle school, and I think the whole board game culture is really fascinating, and since then I’ve gotten into various websites that can create communities around board games. For this project, I decided to use my love of board games as well as taking advantage of the vast amount of board game data available online to create a board game recommender system based on your personal favorite board games. At the time of this project there were two major board game APIs that I could use for this project, Board Game Geek’s (BGG) API and Board Game Atlas’s (BGA) API (which unfortunately is no longer in service). I decided to create a recommender system based on each of these APIs, and see which one would do a better job.

Board Game Geek

Digital Legacy Clinic Team

One of my biggest passions is board games. I’ve been passionate about them since middle school, and I think the whole board game culture is really fascinating, and since then I’ve gotten into various websites that can create communities around board games. For this project, I decided to use my love of board games as well as taking advantage of the vast amount of board game data available online to create a board game recommender system based on your personal favorite board games. At the time of this project there were two major board game APIs that I could use for this project, Board Game Geek’s (BGG) API and Board Game Atlas’s (BGA) API (which unfortunately is no longer in service). I decided to create a recommender system based on each of these APIs, and see which one would do a better job.

Board Game Atlas

Digital Legacy Clinic Team

The BGA API functioned similarly, although using JSON data instead of XML this time. The major differences between the two were that BGA has more specific details that you can gather about the complexity and player count of a game, which was helpful to use when calculating the similarity score. Additionally, when getting the list of games from the same family as the user’s game, the games would return in order of popularity, rather than in alphabetical order which the BGG API did. This ended up being huge for BGA’s API, as it meant that the bias of what games were at the top were popularity rather than alphabetical based, which is much more preferable when trying to find games that users like, even if it means that some less popular games might not be recommended as often.

The Comparison

Digital Legacy Clinic Team

However, I needed to test each of these systems empirically. The best way that I could think to do that was to use the board game data of Tom Vasal, one of the most prominent reviewers in the board game world. I downloaded a csv of all his rating data on BGG, and put a list of his top 10 games of all time into each function. Then, I looked at each game that each function recommended to see if it was highly rated or not based on Tom Vasal’s data, and found indeed that BGA was much better at finding other games than BGG, which would sometimes recommend obscure games just because of their alphabetical placement.

Conclusion

This project taught me a lot about how to work with real world data. It was difficult to format names correctly to be properly searchable by the APIs, and I had to work a lot with try/except blocks to debug frequently. It was fascinating exploring so many different aspects of each API though, as by the end of the project I felt like I had a deep understanding of how the structures of each one functioned and what purpose each one might be best at. I hope to continue to do more work on recommender systems in the future both in board games and other media, exploring more deeply how these can be fair/unfair and how they can best support the needs of users.