Dinosaur Riding Scrum Ninja Jedi Masters

Agile is so last year...

Proposal: Board Game Recommendation System

ON

During our meetings one of our favorite topics has been a board game recommendation system. The goal would be to have board game experts use their vast knowledge of which games are worth playing to point new and old players to games that fit their immediate requirements.

1. The Problem

The Columbus Area Boarding Society (CABS) has over 1000 board games. We aim to save them from the paralysis of choice such a large collection brings. At any given hour of a meeting, dozens of players will mill around in front of the library’s game cabinets and waste time not playing games.

Each group of people has various restrictions on what they will eventually pick. Major requirements are often the Number of Players and the Length of Gameplay. A group of 3 people is not interested in playing a game for 12. Likewise, a group with only an hour available is not interested in anything taking 4 hours.

Other requirements are more varied. Genre, categorization, game mechanics, publishing date, suggested age, or community awards. Veteran board gamers will take all these things into consideration in varying amounts when choosing a new game. This analysis is very much an art, not a science. We aim to automate their expertise build a system to take any or all of these factors into consideration for everyone, not just experienced players.

2. Expert Sources

Unfortunately, even experts can make mistakes. A single expert might not have all the knowledge necessary to make a good recommendation. We will use our local experts at CABS to test and refine the system. With their experience at our disposal, we can find the correct calibration settings for how much weight we should give to qualities described above. Pooling their collective expertise we will be able to cover a wide range of games and their appropriate pairings.

We also have BoardGameGeek.com (BGG), the single largest website covering the board gaming community. BGG has a free API we can access to download the extensive board game data. Using this, we can import thousands of games worth of data into our database, allowing us to focus our time on tweaking our recommendation system as tightly as possible.

3. Our Motivation

We are going to integrate with the CABS library system so that we can allow members to use our system on a day to day basis. This will provide real value to a local community organization and its members. We hope to be able to use the data collected from actual usage to further tweak the system into a mind-reading, board game recommending machine.

4. Details

Interfaces

These are two separate interfaces for the two ideas. The Expert Weighted Query System is of more immediate value to the users of the system. The system would be much useful very quickly and very extendable. The User Profile approach would be very similar to a Netflix style recommendation engine. The amount of work required for this is much greater with no guarantee of it providing valuable output. Team members have expressed interest in this approach and we will attempt it given time.

Expert Weighted Query System:

The users will primarily access the system through a web interface built by the team. This will prompt them to enter the primary information necessary for the recommendation engine to make a decision. To begin, these will be Number of Players and Game Length. We will add the ability to enter other information such as categories or game mechanics as the engine begins to handle them.

There will be a select box with an appropriate set of time ranges (<20m, 30m, 45m, 1h, 1.5h, 2h, 3h, 4+h). There will be a multi-select box for number of players (1,2,3,4,5,6, 7+). When we add features such as Game Mechanics, we will allow a multiple tag selection. This will likely be auto-completed through a query interface, but this has not been finalized. After submitting the form, the recommendation list is shown in a ranked order. Relevant information, pictures, and links to BGG are shown.

User Profile Driven Recommendations:

An stretch goal for the project will be to use user profiles to track and learn which games each user likes. The CABS system has the capability to track each user’s checkouts and BGG has user profiles with tracked plays and collections. The interface for this page would allow the user to enter the players involved in the proposed group and recommend games the players are all known to like.

Players will be able to type in the names of a player into a text field, with known players being auto-completed. Optionally, we can integrate with the bar code scanner device already employed by CABS, capable of scanning the membership badges. After a player is added, another text field will appear, ready to add another player. After submitting the form, the recommendation list for this particular group of players is shown.

New players will be able to be added to the system and linked with their BBG user account.

Data

The BoardGameGeek API will provide us with much of the initial data we will need. We will automate the process of gathering data and keeping it updated in our own database through regular resynchronization. We require a local copy of the data as the CABS meeting location does not have regular internet access. We will run a copy of the server locally on the machine setup to handle checkouts.

This is a sample API response from the BGG API. The basic game information (Name, BGG ID, Publisher, Designer, Date Published) and categorization data (Number of Players, Game Length, BGG Rank, Game Mechanics, Age Limits, etc) are included. In addition to detailed game information, we can gather data about User Collections, and Recorded User Plays. Such information may prove useful if we are able to attempt the User Profile system.

This this information available, we will be able to focus on leveraging our experts’ judgement for the recommendation engine instead of inputing data.

Recommendation Engine

The meat of the project will be to accurately recommend games based on the user desires. Unfortunately this is still the most undecided aspect of the project. We are not entirely sure of the best approach and these are primary ideas.

We will begin this in phases.

1. System Integration: Recommend Anything

The first step is to hook up a system that accesses the data retrieved from BGG and return a set of recommended games to the user regardless of accuracy. The games recommended is not important, but making the entire system work together as a coheisive whole is important. Parallel work on downloading BGG data and setting up an initial interface will be done during this step.

2. Number of Players and Game Length

Now that we have some amount of data from BGG, we can begin to restrict our recommendations to games which match the user’s restrictions of Players and Time. Any games matching the appropriate number of players will be considered. Next, we look for overlapping time ranges in the board game data and the user’s selection. This step is essential in providing a quality recommendation to the user. Games not fitting these parameters will not be a useful recommendation in the near term. At this step however, the actual quality of the game is not being considered.

3. Weight by BGG Rank

BGG provides a highly trusted ranking system. The overall rankings and the general consensus of quality (ie. fun) seem to be well correlated. As an initial quality filter, we will weight the recommendations based upon these rankings. We now have games the users have time and people to play presented with some emphasis on high quality.

4. Associate Related Games by Expert Review

This piece is going to be essential to the performance of the system. Our interviews with our experts will provide us with essential guidance to identify which qualities in games are related.

Exactly how we integrate our expert advice into the system is still up in the air. We have talked about using a simple rule based system. Once the experts provide some rules, we could use them to add weights to certain types of games in certain situations.

5. Neural Network Linking

We have discussed having our experts train a neural network which learns which games are similar. When it knows which games are similar, it could use the rules developed in Step 4 to also recommend similar games to their specific recommendations.

6. Weight by BGG Categorization & Mechanics

Lastly, we would like to identify a useful way to recommend games based on certain Mechanics or by a whole Category. If the user selects “Economic Game” as a Category, we should appropriately weight the recommendations based on this Category. However, we may not want to simply eliminate other games from the recommendations list, as similar games may still be relevant but lacking the exact categorization. We are considering running some clustering algorithms on the database of games, scored by how the experts rank them as similar. If a pair of games is scored extremely similar by the experts, but has a slightly different set of tags, we still may want to recommend both when the user enters one of the set of tags.

7. User Profiles

Beyond this, we have discussed mining the BGG Board Game Collections data and the Board Game Plays data to draw conclusions about which games a given set of players will like.