Why I built it
A Discord community I’m in wanted a daily guessing game about the VTubers (streamers who use animated avatars) they follow, something like Wordle that friends could play together as a Discord Activity. Everyone gets the same puzzle, you can watch your friends’ progress as it happens, and nobody can spoil the answer.
How it works
It’s a Discord Activity, which is a web app that runs inside Discord. The front end is React, and the server uses Fastify and Socket.IO for live updates. Other players see your colored squares but not who you guessed.
The answer isn’t sent to your browser until your game is over. The server grades every guess, so there’s nothing to dig out of the page.
Each day’s answer is picked so that recent ones are unlikely to come back soon and every VTuber gets a turn over time. The day rolls over at your own midnight, daylight saving included. At the end of the day, the server draws everyone’s results as an image and posts it back to the channel.
Measuring the game
I built an admin page so I could answer design questions with data. For each guess people made, it rebuilds the list of possible answers they were facing and measures how much each clue narrowed it down. That shows which clues help the most and which barely help at all. There’s also a solver that suggests the best next guess, which is a handy way to check whether a puzzle is fair.
Making sure it’s right
About 176 automated tests cover grading, the daily picker (time zones and daylight saving included), the analytics, and how it handles requests from Discord. Later work went through pull requests.