Inspiration

Jackbox; more specifically, its "Quiplash" minigame.

Not everyone has Jackbox. We don't have Jackbox. But we do have Discord, so instead of getting Jackbox we made Jackbox come to us.

What it does

Dulcinea (named after Dulcinea del Toboso, a peasant from Don Quijote) is a game that assigns every user in a Discord voice channel to two partners, and each pair is given a different prompt. The players answer the prompt as a direct message to a Discord bot, which then compiles the responses and presents each pair of responses with their prompt to all the participants for them to select the response each person prefers. The author of the winning response is awarded more points.

How we built it

The project uses discord.js and React (and React DOM). It is hosted on GitHub Pages.

Challenges we ran into

Apparently, when Discord migrated domains, they set more strict Cloudflare restrictions on its discord.com domain, so browsers can no longer run Discord bots. We had to use an old web build of discord.js, which has since dropped support for the web. This project may not work in the future.

A more complicated issue was that Discord heavily ratelimited adding reactions, and reactions would also reject promises, for some reason, in the web version, making them unsuitable for timed voting. We had planned to react a set of emoji so that voting would be a mere click. After several attempts, we decided to use the keyboard and require players to type the letters "a" or "b" to vote.

Accomplishments that we're proud of

The game turned out to be pretty fun!

What we learned

We now have more experience with git branches and merging them around.

What's next

The point system is lackluster, and there are few catastrophic edge cases. We would also like to add more games, more options, and more clear instructions, as well as an option to show the screen in Discord as messages for those with weaker internet connections.

Built With

Share this project:

Updates

posted an update

update: here's a code snippet

const emoji = []
// Add regional indicators A-Z
for (let i = 0x1f1e6; i <= 0x1f1ff; i++) {
  emoji.push(String.fromCodePoint(i))
}

idk what it does (maybe it cooks dinner for me :heart_eyes:) but it's no longer used

Log in or sign up for Devpost to join the conversation.