Senior Project: Game Bench

In my last post, I outlined my idea making process for my senior project. The idea that we finally went with is a mixture of a virtual table top program and a card game program. Our goal is to allow people to play board games, card games, and RPGs over the internet while at the same time allowing them to communicate using a web cam, voice chat, and text chat. For this reason, we are going to embed our program within Google Plus's Hangouts feature using Google's Hangout API. This will take care of the voice, text, and video chat for us, while also providing a built in user base since some people already use hangouts to play games (although the way that they do it is not optimal).

We want to provide a shared whiteboard space that will allow users to upload a background image, place tokens on it, and also draw on it. We are also going to support hidden and open dice rolls. This will allow the program to emulate a great many board games. We will also allow users to define their own decks of cards, which should cover another set of board games (those like Risk and Monopoly that have custom decks of cards that are shuffled and dealt out during the game). Because we are not storing any assets of the game, users will be able to play any games for which they have the assets while we avoid any copyright issues.

An example use case: a family of four wants to play a game of monopoly over the internet. Before the game, one of them creates a monopoly board in an image editor or otherwise acquires a picture of a board. They also get several tokens to represent the players and also create a set of cards in Game Bench that matches the chance and community chest cards from a game of monopoly. A set of property cards would also need to be created. Money could be tracked on the board itself. When the family gets together to play, they load up all the parts of the game into Game Bench. They shuffle the chance and community chest cards and place their pieces on the board. When someone rolls the dice, they move their token the appropriate number of spaces. Everyone else can see where their token came from, where it went, and who moved it. When someone buys a property, they take a card from the property deck that would be placed in their property space on the board. When someone lands on chance, they take a card from the chance deck with the same thing happening for community chest.

This is just one of many games that Game Bench will support. Our goal is to allow the program to support as many games as possible. Unfortunately, there are more games that exist than games that I know the rules to, and as such, there will be games whose rules are cannot be modeled in Game Bench. We will definitely consult others to compile a list of game that can be supported and we will include that list with the program. Since the project is open source, anyone with sufficient knowledge will be able to add support for games of the liking to Game Bench.

The project page for Game Bench is located in its repository on GitHub. If you would like to find out more about it, read the source code, or contribute to it, feel free to take a look and fork it if you like. Any contributions to the project are welcome, although I cannot guarantee that we will be able to add any outside code until the end of the semester due to academic integrity rules.

Comments on the idea? Leave them below.