We were inspired by two of our favorite cooperative team games, Spaceteam and Hanabi. Spaceteam is a mobile app in which a group of people must communicate efficiently to complete a series of simple actions within a strict time frame. In contrast, Hanabi is a card game where players must give each other clues to solve a challenging puzzle. We sought to merge aspects of both games to create a space themed web app that requires players to communicate both quickly and creatively to reestablish communication with a Mars Rover.

What it does

Two to Four players can log into the game from phone or computer to join scientists’ team. Everyone has a control panel with several unique button modules. When the game begins, all players are simultaneously given commands which they must communicate to other players so they can correctly solve their button modules. It’s a race to solve enough modules to reconnect with the rover without letting anyone fall behind.

How we built it

Transmission is built with static HTML/CSS/JS, using Firebase to communicate between players in real time. We chose this format to make joining games simpler. In the Spaceteam Android and iOS apps, players are sometimes unable to join at all due to the evil sorcery of bluetooth.

Challenges we ran into

Since all of the players are on static webpages, there is no master node to control the game. It was very challenging to create (and debug) a masterless system where all players would be in sync with each other. A combination of custom JavaScript events, promises, and Firebase listeners keeps the game synchronized and gives players feedback when other players successfully follow up on their instructions.

Accomplishments that we're proud of

There’s a series of playful canvas functions that slowly reveal the rover’s camera feed as the players do well. That was fun to make.

What we learned

We started the project in an interesting position, as my teammate had extensive web development and javascript experience while I had almost no coding experience. He was able to create a javascript library and template that he used to teach me the basics. With this foundation, I was able to still contribute significantly by designing and coding 16 unique game modules. It was a great introduction to programming and opportunity to practice the basics in a hands on way. For my teammate it was a great exercise in using best practices that allow others to understand and build off your work.

What's next for Transmission

We would like to make the game more intricate by adding variety in the type of module interfaces. For example, we could create mechanics like dials and switches to design more interesting tasks. Luckily, the library in place is flexible and allows for new types of interfaces with custom rendering, activation, events, and validation.

Share this project: