four players in the demo game
the observer view
view from controller phone
Video games have the potential to act as incredible party games, but this kind of setup has many cost and accessibility barriers, such as needing to buy and set up a video game console, buying and owning enough controllers for all your friends, and buying the games you need. Because of this, games designed to be played in such a way are generally not very successful.
What it does
I tried to make phone party a framework that lets people easily design party games that make your mobile devices into controllers and any household computer or laptop into a viewing screen. Anyone with a mobile phone can connect by simply going to a URL, while screens go to a separate observer URL.
This setup makes it possible and easy to have as many players in a game as a developer wants, and can also display the same game on as many screens as needed so even people in a big room can more easily see a screen closer to them.
As a demo I also designed a simple multiplayer "game" to show off, however theoretically any type of game can be built in such a way. It has no clear objectives but you can jump around with your friends and punch each other.
How I built it
I used NodeJS and socket.io to set up a server that receives inputs from "controller" clients and sends data to "observer" clients.
Challenges I ran into
The biggest issue I ran into was making everything lightweight enough that the experience using the "controller" would be smooth. Data needs to be transmitted from a phone over the internet to a server, and then to a screen. This is a lot of travel that creates latency.
Accomplishments that I'm proud of
I didn't want this project to be a one-off thing designed for one specific game, so I did as much as possible to separate the code that designed the overall system from the demo game logic. The controller-observer system is modular and developer-friendly, and anyone can build a game off of it by simply putting in their own code files.
What I learned
I learned a lot about the logistics behind making a live game and broadcasting it in variable ways. I also learned a lot about how to build the server side not just functionally but efficiently and cleanly. I needed to restructure the core of my code multiple times.
What's next for phone party
In 24 hours it isn't possible to make everything perfect. The system could use a lot of efficiency to make it more lightweight and responsive, so that it can mirror a real console experience as much as possible. Also, I want to experiment with making more complete, different games using this method.
Finally, the controller is ugly. There is definitely a lot of work to be done to make it prettier.