We are inspired by the game Cards Against Humanity. We would play it with a bunch of our friends when we hung out and we would all be closer to each other by the end. We would laugh nonstop sometimes because of a funny answer. But the problem with it was, we couldn't always play the game. Carrying around a gigantic heavy box was something we didn't want to do. It is especially hard being a high school student, and not having a car to put the box. So, we created Internet Against Humanity.
What it does
Internet Against Humanity allows people to use their phones to play the entire game which consists of 600+ cards. It has features like, a host, 10 max players, suggestions for answers, and the questions that will be presented for each round. One device can act as a host, or just open a new tab, and play the game.
How I built it
Using socket.io and express, an HTTP server that accepts websocket connections was built. Socket IDs are generated client side and are used to identify sockets. There is no authentication because it's a party game, not competitive CS:GO. React.JS is used for the frontend, and we decided to use our own stylesheets. Socket.IO allowed us to easily manage games with rooms and allow many other features to be programmed easier.
Challenges I ran into
Debugging was hard, as many bugs occurred that I did not expect. I was unfamiliar with socket.io, but due to the application's infrastructure, I was able to efficiently fix the sockets without affecting game logic by having the game logic run parallel to the socket connections.
Accomplishments that I'm proud of
I am making people laugh and enjoy hanging out while playing a game online. They don't have to carry around a giant box of cards and just use their phones.
What I learned
I learned the intricacies of using socket.io to build a web socket. I realized that a lot of the things we needed to have couldn't be done in less than 24 hours. So, we had to put off a lot of things we originally wanted to include within the game.
What's next for Internet Against Humanity
Making it more user-friendly and adding more features in order to keep it interesting for players in the long run. A better code infrastructure or shared code would allow for better maintenance.