Capstone Midterm Progress Report (Naimark)

Changes From Proposal

Two big changes have been made regarding the technical specifications of my project. The first is that I have decided to use Python for the underlying game logic and control instead of Processing. I made this decision because I am more comfortable programming in Python, allowing me to prototype and develop more quickly. After doing some research, I was able to find Python libraries that support many of the same features of Processing that are important to my project, including serial communication and openCV.

The other main change I have made is moving away from using rfid to track player locations. After drafting out the board layout, I realized that I would need twelve rfid readers, one for every square. That did not seem feasible to execute. Instead, I will use a camera tracking solution. Leon suggested color tracking to me which sounds like an excellent solution, though I will still do some research into other possibilities.


Game Design

The structure of gameplay has been made totally concrete. This includes the unique abilities of each playable character, the type of actions players can perform on their turn, and how to win the game. After more user testing, I will make small numbers tweaks for balance such as the number of actions per turn or the probability of finding a certain item. However, the core rules and systems will remain the same. I have a few different drafts written of the “Official Rules” that show the progression of the gameplay as it has changed over time. I have also written a short backstory for each of the playable characters.

The premise of the game is that ghouls have been causing mysterious disappearances in Haven City. The players have talked to a priest and learned how to cleanse the city of the ghouls. They must find 3 holy items, and bring them to the heart of the ghoul’s nest in order to cleanse the evil once and for all.

The game takes place over 7 rounds, analogous to a week. At the beginning of each round, the narrator will state the day and then players will take their actions. The flow of gameplay is as follows. 1. Players confer with one another on where to move. 2. Movement occurs. 3. Players choose whether or not to use an investigate action on their current square. These steps are then repeated until players use up all of the movement actions for the round. Then the next day begins. If players don’t cleanse the ghouls within a week, they overrun the city, and the game is lost.

Each location on the board has exactly one thing in it. By investigating, players have a chance to discover what’s in the location. This can be either a holy item or a hint. The hints will help players deduce the location of the ghoul’s nest or a nearby holy item.

Technological Implementation

In Python, I have created a fully functional version of the game. This includes a digital representation of the board layout, a function that calculates the total number of moves it takes to move from one location to another, and verification of whether or not a player is actually able to reach that location. The information for the board layout is described in a JSON file that gives each location a name, a unique ID, a list of which locations it is directly connected to, and whether or not players need to climb in order to reach it. Python then interprets the data from the JSON to instantiate objects of the Location class. The movement calculation function is my implementation of Dijkstra’s algorithm. My Python code also applies the character’s unique abilities, and can now take into account when players are standing on the same square.

I have also decided to procedurally generate the content of each board location. Similarly to the act of shuffling a deck, this adds a bit of randomness to the game’s setup that improves the replayability, with the advantage of requiring less setup from the players. The location of the ghoul’s nest is different every time the game is played, as well as the different hints given when investigating. Some hidden rules are followed in generating the content, which ties into the gameplay. For example, a holy item will not appear in the same general location as the ghoul’s nest. Finally, I have begun to work on the serial communication between Python and Arduino. I have researched and installed the pySerial library, and I have successfully sent data over serial communication to the Arduino. I am currently fine tuning how Arduino interprets the data and how to send data back to Python.

Leave a Reply