Our team enjoys playing multi-player web games at home with our friends. We wanted to recreate the energy from playing an electronic came in a physical room, while allowing players to use their phones as keypad controllers.
What it does
Zombeans is a game of tag, where the object is to avoid colliding with a zombie on the playing ground. Up to 10 players can join the game room via a room code that is generated every time a game is run. Players enter the room code on their phones. One player will be randomly assigned the Wizard, one will start as a zombie, and the others will be regular characters. The Wizard character's controlls are different from those of the others, as he/she can throw actions onto the others such as "slow down" or "speed up". The game ends after 60 seconds, and whoever survived the zombies wins.
How we built it
The app uses a Python/Flask backend and a Typescript/React frontend. Real time data is streamed is streamed from all users to the server using websockets. Similarly, the server updates the web frontend with new game state.
Challenges we ran into
Since we had different developers working on the frontend and backend, integrating the two pieces comes with significant difficulty. For this reason, we created a detailed sequence diagram to document the game flow, and wrote a JSON specification to make client/server communication easier.
Accomplishments that we're proud of
We were able to implement almost all the features we set out to implement at the beginning of the weekend.
What we learned
Communication is key!
What's next for Zombeans
In addition to small details that were beyond the scope of this weekend, we want to support game obstacles and different maps. This will make the app into a robust product.