Created by Michael Zhang, Wesley Zeng, Adeeb Khan, and Charles Bai for CS 3110 at Cornell University.
OJeopardy! is a command-line implementation of the popular trivia game show Jeopardy! with online multiplayer gameplay. Players create their own game lobbies which other players can access via a join code on their own computers. Each lobby can then play a real-time Jeopardy!-like trivia game where each player has a chance to answer questions and compete to win the most points.
OJeopardy! is bundled with a client application (which the user directly installs) and server application (which an administrator installs on a central physical server). (Note: for the client to run correctly, the server must be active)
Upon running the client, a player is allowed to either create a lobby or join an existing lobby. To create a lobby, the player enters a non-empty lobby name and username (for the current player). Once entered, a join code for the new lobby is generated, which can be shared with other players to join the lobby (Note: the player that creates the lobby is autmatically added to their own lobby). To join an existing lobby, a player follows the same steps, but substitutes the new lobby name with an existing lobby name and join code.
Otherwise, users can experiement with the user interface with a test board or exit the application completely.
The player that creates the lobby is the lobby administrator and has the sole power to start games. After starting the game, players are presented with a Jeopardy!-style game board. One player is allowed to select the question; aftewards, all players can buzz-in to answer the question within a certain timeframe (otherwise, the question is thrown out). Only the buzzer race winner can answer the question (within a predetermined timeframe). For each submitted answer, a Levenshtein distance is calculated relative to the correct answer. If this distance is within a predetermined threshold, the answer is marked as correct and points are added; else, points are deducted. This mechanism enables small typos in answers to be tolerated.
This process continues until all questions are selected. At this point, the game ends automatically and the player with the most points is declared the winner. Afterwards, all players return to the lobby waiting room and wait for the lobby administrator to start another game (or leave as needed).
Figure 4: Selecting and answering a question
Once a game is running, all game state—including the game board, buzzer status, and scoreboard—are updated in real time for each client. This enables the latest game information to be available for each player, even if the player is on another computer.
Figure 5: Game start on two independent clients
The OJeopardy! server application handles all internal game logic—including lobby creation, buzzer races, and question answering—through a GraphQL interface. Essentially, the client application sends GraphQL requests to manipulate and monitor the game state. This ensures a separation between the game logic (which runs on a separate server) and the user interface (which runs on the client machine). This enables the client application to use little resources, improving user experience. In addition, the internal game logic can be maintained independently of the client application, ensuring greater comptability between the server and clients.


