Table B6

Inspiration

We were inspired by skribbl.io, wherein one user is selected each round to draw for everyone else, and wanted to harness the OpenAI API.

What it does

Users can create "boards" or chat rooms and input information for a bot (GPT) to impersonate someone in the room. There are a number of rounds equal to the number of players of the game, and at each round someone (new) is the "bot player" while all others are "human players". Everyone has 60 seconds to chat and then the human players guess who the bot player is, earning a point for a correct guess. The bot player, meanwhile, earns a point for each incorrect guess, and so it is their intention to confuse the human players and make it difficult for them to guess who the actual bot is. All players have aliases from the game of Clue.

How we built it

The stack uses Express JS and React, and uses Socket.io to manage chat rooms. The "bot" is GPT scaffolded according to who it impersonates each round, and there are only several js files: App.js (main page), Prompt.js (waiting room page), Chat.js (chat room), index.js (server code), Router.js (handles all routing).

Challenges we ran into

Getting concurrent timing among all the rooms, enabling real-time messaging, and properly configuring the chat bot per round were most difficult, as we had never worked with Socket.io before.

Accomplishments that we're proud of

The app works! The only caveat is that people joining the room should NOT refresh their browser during the game; also the app runs only on localhost for now, but functionality is there. In particular, users can create chat rooms, input commands for the impersonator (GPT) each round, and vote after each round, where the Team Bot player changes each round so that everyone gets a chance to be on Team Bot.

What we learned

We learned that minimizing the POST requests/correctly managing rooms with Socket.io is extremely challenging, but we are proud that the final product works.

What's next for ClueGPT

We plan to host the game with Railway and release it to the public in a couple weeks after some additional beta testing -- we require the bot to be realistic so that people are actually fooled.

Share this project:

Updates