It's http://canigetanowaowa.tech LOL
Jeopardy! is a game show that has been around for so many years. As its long-time host would say, Jeopardy! is a show that should continue to bring people together for years to come. However, it is hard to enjoy playing the popular game show in-person due to physical distancing restrictions. This tech demo aims to show how phone users can use text messages to interact with these types of media easily. Now, anyone can play Jeopardy from the comfort of their homes, while one controls the production of the show itself in a web browser!
What it does
This web app + SMS demo simulates the Final Jeopardy! stage of the iconic game show. First, the host opens the web client and generates a room code. Then, the players join the game using SMS texting. After the host starts the game, it will ask the players to text their wagers. Then, it'll show them the question which they will answer via text. At the end of the game, if the player texts the right answer, they gain points; otherwise, they will lose points.
It is essentially a clone of Final Jeopardy! where the controllers are the SMS-enabled phones. No app is required to play!
How we built it
The web client was built with the Unity game engine, with the Jeopardy! stage model borrowed from Steve R. from the 3D warehouse. Certain GUI elements and fonts were Photoshopped to provide a Jeopardy! production feel.
The back-end server was built with Python and Flask. It handles requests from the Unity web client and SMS text messages, powered by Twilio. Specifically, there are two endpoints:
- The Unity endpoint handles requests from the web client to manage the game states. It handles the room codes and presents the game state stored in Python shelves.
- The Twilio endpoint handles requests from text messages sent by players. It handles player-related commands such as joining a game, making wagers, and providing the question to the answer.
Because the player and game states are saved in Python shelves, if the server crashes the data remains intact. Initially, there was a plan to use a database to store information, but using Python shelves made the back-end simple to implement for this weekend.
Both the web client and back-end server are hosted on a Google Cloud virtual machine. Contrary to the domain name's implications, it does not handle commands for an OWA OWA.
Challenges we ran into
The biggest challenge was to set up Unity to run on Windows 10. There seems to be an error where fresh installations of Unity don't compile correctly. This would have caused some problems because, without Unity, there would have to be a change in the web client design. Luckily, through some Windows Updates and Unity engine updates, the issues seem to resolve themselves.
There was initially a problem with generating the Unity web client using WebGL. It turns out the compression algorithm for exporting these things is... not optimal, but disabling compression led to a successful export and deployment.
Accomplishments that we're proud of
It worked! That is an accomplishment in itself. I've always wanted to make a full-fledged Twilio app, but I also love game development and design; so this was a way to combine these two interests together. I would love to work on this tech demo further when time allows.
What we learned
This weekend, we learned:
- how to make a full-fledged Twilio app
- how to connect it to a front-end app (in this case, Unity)
- combined together, create a multiplayer experience using existing mobile devices!
What's next for Jeopardy: The Twilio Text Challenge
Only Final Jeopardy! is implemented, but implementing the entire game might be a time-consuming challenge for another time.
Also, need to implement OWA OWA functionality.