CONNECT 4000 is a modern interpretation of the classic game Connect Four. In this fun new game, players make their decisions online and the results play out at a location in the real world.

Log on to with a friend and pick a colour. Select a column in which to drop your marble. But choose quickly: if the timer on the game board runs out, a column will randomly be chosen for you. The first player to line up four of their marbles is the winner. Hit the RESET button to clear the game board and play again!

The goal of this project was to explore how objects, places, and people can be linked wirelessly. We began discussing how we might approach this task. Will this be for private or public use? How many people will be interacting with the project? Will we use wireless technologies or a direct connection to the internet? What existing applications will we take advantage of? Will our project solve a problem? Will it be an art piece? Or will it just be for fun? One idea was especially appealing to us – using a mobile device to make physical changes in a public environment. After briefly exploring the idea of an “environmental jukebox”, we arrived at the concept of a mobile-controlled game of Connect Four.

Connect Four (also known as “Four In A Row”, “Four Up”, or “Fourplay”) is a one-on-one strategy game. Players take turns dropping their coloured chips into columns, the goal being to make a row of four marbles in any direction. Dimensions of the game board can vary, but the most common are six rows by seven columns. “Connect Four” was first trademarked by Milton Bradley in 1974; today, Hasbro sells several different versions of the game.

To continue developing our idea, existing products were investigated. The following served as sources of inspiration:

We gradually refined our concept. Users log on to a website and either choose or get assigned a team/colour. Each team gets a limited amount of time to vote on a column; their piece is dropped into the column that received the most votes. The gameplay takes place on a large game board. A robotic system is responsible for dropping the pieces in the selected columns and resetting the board. Users play the game using devices they are already familiar with, and the mechanical feedback is very satisfying; we agreed that this new twist on a classic game could be very rewarding for users. To achieve our goal, we divided the project into three parts – design and construction of the game board; circuit design and Arduino programming; and website design.

The game board is made of multilayered plywood and balsa wood (which is very easy to work with) and held together with glue. Rather than using chips, our game pieces are coloured marbles. The marbles we use, however, vary in size, so every marble had to be tested to ensure that it would fit in every column. The marble-dropping mechanism was carefully thought out; we brainstormed and drew multiple sketches in order to devise the most simple and efficient system possible. Marbles are dropped and positioned using just one solenoid and one servo motor; the game board is reset using an additional servo. Casings were made from wood to house these devices. Near the end of the project, we decided that our game board was in need of more visual feedback; in between players’ turns there was not much to look at. We added seven LEDs that count down the time that players have to make a decision.

The electronics controlling the game board are quite simple. An Arduino equipped with an ethernet shield checks the website for data and then actuates the motors accordingly. The ethernet shield’s MAC address is registered under the OCADU network to ensure that we can easily connect to the internet. Both servos are directly controlled from digital pins, as are the seven timer LEDs. The solenoid caused us some problems. It seemed to be drawing a large amount of current, so a transistor switch was implemented to source current right from a power adapter. It also got very hot during operation, sometimes melting the glue holding it in place; we reversed the direction of the solenoid to reduce the amount of time it would be turned on. Lastly, if too many marbles were pushing against the solenoid pin, it would give way and begin releasing them. This was remedied by carefully optimizing the spacing between the solenoid and the marble shelf. The final circuit was assembled on a perf board and attached with the Arduino to the back of the game board.

When we began programming the Arduino, we were not yet able to communicate with our website. Instead, we set up a control system through the serial port. We could enter a number ‘1’ thru ‘7’ to select the corresponding column, enter ‘d’ to drop a marble, or enter ‘r’ to reset the board. Pseudocode for this sketch can be found here. The following video shows a test of this system:

Once our website was online, the sketch was modified to read submitted data via the ethernet shield. The Arduino retrieves XML data from and parses it. If it is a number ‘1’ thru ‘7’ with a colour tag <red> or <yellow>, the corresponding column is selected and a marble is dropped. After each move, a timer is set, and the seven timer LEDs are lit accordingly. If new data is not received before the timer runs out, a random column is selected for the player. If a <reset> tag is received, the game board is cleared of all dropped marbles. Pseudocode for this sketch can be found here.

The first website we implemented was a simple test page. A script in PHP lets the user choose a column and color and then creates an XML file for the Arduino to retrieve. The next iteration was more complex. Here, one of the challenges that we faced was designing the database for the entire game. The database schema had to be properly planned so that the workflow of all data would be consistent and efficient. It took us a couple of days to build half of the database structure. After some testing, it became clear that there was inconsistency in our Javascript timer between different browsers. Safari, for example, could not run Javascript very well if the computer was running the Mountain Lion OS. These timer issues made it very difficult to implement the voting system we had initially planned for. We decided to simplify the gameplay, moving from a massively multiplayer experience to a simple one-on-one game. This was much more feasible and gave us time to add an attractive user interface. The final website is easy to use, and the Arduino responds almost immediately to online commands. Pseudocode for the website can be found here.

We are excited to continue developing CONNECT 4000. We have several ideas of how to further improve the project. For example, a complete marble-management system would be very beneficial; when the game board is cleared, a new mechanism could take the marbles back to the top of the board and sort them by colour. We may add a live video feed to our website so that anyone – no matter where they are – can play the game and see the action play out. We would also like to increase the size of the game board. It is exciting to watch the marbles dropped by the game board’s mechanisms, and it would be even more exciting if the game pieces were large balls being dropped from several feet in the air. Stay tuned!

Borzu Talaie + Ruzette Tanyag + Ryan Maksymic

Comments are closed.