Game Description

Say 8 is a community quiz game that lives on Reddit. Players must solve each quiz by finding 8 correct answers for a given prompt before the timer hits zero.

Each quiz follows a signature format:

"Say 8... [topic]" or "Say the 8... [specific set]"

🎯 Points & Difficulty

Not all answers are created equal! Each of the eight answers is assigned a difficulty level by the creator, which determines your score:

  • 🟢 Easy: Common knowledge (1 point)
  • 🟡 Medium: Requires a bit of brainpower (3 points)
  • 🔴 Hard: For the true experts (5 points)

✏️ The Quiz Editor

Got a great idea for a challenge? Use the Say 8 Editor to contribute to the game.

To create a quiz, you must provide:

  1. A Question: Must start with "Say 8..." or "Say the 8...".
  2. Eight Answers: Each with an assigned difficulty (Easy, Medium, or Hard).
  3. A Category: Choose from our curated list of topics:
    • 😀 Everyday Life
    • 🎮 Entertainment
    • 🎶 Music
    • 🏀 Sports
    • 🌎 Geography
    • 🧬 Science & Nature
    • 📜History
    • ✨Wildcard (Anything goes!)

How we built it

I built Say 8 using React and Devvit.

On the backend I used typescript to write the game logic. Additionally, I integrated Gemini 2.5 Flash for content moderation before each post is generated to ensure that user created quizzes are appropriate for a wide range of audiences.

For the front end I used tailwindcss framer-motion and mojs to create fluid and smooth animations. I also do some basic content validation here to avoid unnecessary calls to the LLM.

Challenges we ran into

One of the first challenges I ran into was figuring out how to store quizzes. I initially went with Firebase, but later switched to storing quiz data on the postData object provided by Devvit with each post. The 2KB limit is more than enough to hold the prompt and the answers, as well as some secondary metadata.

Another challenge I ran into was designing the ranking system. I wanted to design a scalable system that could handle millions of daily players, but I couldn't store individual player_id-score pairs in the redis cache. For this reason, I built a stochastic leaderboard that places each player score in buckets and provides an approximate ranking for each attempt.

Accomplishments that we're proud of

Since I am a more code oriented person, I am very proud to have built what I perceive to be a nice UI. I think the game plays very nice on mobile and the animations are lightweight and snappy.

What's next for Say 8

There are still a few things to do, but the game is ready to be played. Other than making content, I think it would be cool to have a weekly leaderboard to show the top players, so maybe I will get around to implementing that. Moreover, I would like to fine tune the AI moderation prompt so I can reduce the false positive rate on quiz submissions (already making good progress here!)

Built With

Share this project:

Updates