Please note that this project is unfinished.
Inspiration
Board games have always been a gathering point for families and friends. From Candy Land to Risk, board games provide a great environment for friendly competition and bonding. Especially during COVID-19, many groups have played games virtually as a way of staying connected. However, finding a new game that is the right level and everyone can enjoy is often difficult. This site aims to create a centralized listing of board games and use a recommendation engine to suggest new games based on previous likes and dislikes.
What it does
This site is essentially Netflix for games. Based on initial user likes and dislikes, manufacturer categories and information and (eventually) crowd sourced ratings, the site then recommends games. It also is able to filter games by complexity and type of the user wants to browse options themselves. The recommendation is built on a clustering algorithm called Hierarchical K-means which groups games into categories based on their similarity to others. This allows it to make weighted predictions based on what games the user has previously enjoyed.
How I built it
This site is built using a Django framework and deployed on tjCSL’s Director. It uses various python libraries like urllib to scrape for games to add to the site and SciKit-Learn to implement the K-means algorithm.
Challenges I ran into
Due to the limitations of the deployment platform, it is very difficult to automate the launch of the long running processes needed to scrape for new games and to periodically retrain the K-means. These can both be done manually of course, but it would be nice to automate.
What I’ve learned
Web scraping is annoying when one is trying to come up with a standardized format.
What's next for GameGuidance
Eventually, this will probably get deployed on Heroku which allows for long running processes. There are a couple of dependency issues to work out first, but Heroku is generally more stable for long term deployment.
Log in or sign up for Devpost to join the conversation.