The Issue:
During lockdown, playing the boardgame Codenames over Zoom is logistically challenging. An app is required to allow players to participate in the game remotely.
Executive Summary:
The system functions well and meets all the requirements
The system sends the codemasters the map image via WhatsApp
The system is portable, with editable configuration files (no hard-coded phonebooks and credentials)
The tool utilises the Tkinter, pillow, imgur and twilio libraries
Game Background:
Codenames is a popular game where by two teams compete to collect their assigned target words from a grid.
Only one player from each team (the codemaster) is shown a map card which assigns their teams target words. This player must then communicate these words with the rest of their team but is limited to a single word and single number per turn.
When playing the game remotely, it is extremely challenging to give two remote codemasters the keyword map without other players, including yourself, seeing. It is not sufficient to give the parties one chance to view, as it requires constant referral throughout the game.
Project Brief:
Create an automated solution to:
Generate a random secret map
Transmit the same map to the two spymasters in a convenient manor
Do not let any other players see the map, including the person running the app
User Workflow:
User enters the names of the codemasters, checks then submits the send request
Behind the Scenes:
Python validates the entered names against the phonebook and rejects the request if an incorrect name was entered.
Python generates a new random map image using pillow and saves it locally
Python uploads the image to sharing site imgur
Python sends tasks to the twilio service to grab the uploaded image and send it to the recipients
Several key services and libraries have been identified to deliver the needs of the project.
Based on their limitations and capabilities, there are 4 main modules of code which are required for the project:
GUI
Map Creation
Map Hosting
Map dispatching
Twilio library has significant extra functionality which could be used to streamline the system, for example, building a player list for the session based on which numbers send in a join code
Using a web hosted solution to deliver maps would streamline the user experiences. A similar system to jackbox games.