We wanted to create a novel games console that uses an unconventional form of input, and can be easily played across many devices.

What it does

It's a multiplayer game of pong, running on the DragonBoard 410c. The game is accessible through a browser, but to actually play it, players have to use their phones as the controllers. By connecting them to the board, they can take control of the paddles by using the pitch of their voice, which is translated into paddle movements. This means that at least 4 devices run in cooperation to play a session of the game.

How we built it

The server side, running on the DragonBoard, is written in Node.js. The actual game rendering is done in the p5 JavaScript library, while the controllers (phones) run an audio library which we used to analyze the pitch of sounds coming to the microphone. All the devices communicate with each other using the API.

Challenges we ran into

Internet browsers no longer allow access to the microphone on websites not using HTTPS, which meant we had to have the website hosted through a secure connection. This proved hard to set up, but in the end we got the game running on the board with a domain and an SSL certificate.

Accomplishments that I'm proud of

The game also includes single player mode against AI, and a waiting mode when there are no players, where two AI's play with each other. All the components work together and the server is quite robust.

What I learned

SSL is hard and audio input is difficult to interpret and filter correctly.

Share this project: