Vibe Arcade Blog

Dev stories, game design, and the art of building with AI

How We Built Retro Trivia Blast: 300 Questions, One Daily Seed, and a Hard Mode That Almost Cheated

The hardest part of building a trivia game isn't the timer or the scoring or even the daily challenge. It's getting a few hundred good questions without hand-writing every single one. Here's how the pipeline handled it — and where the humans came in.

· Vibe Arcade

game dev vibe coding AI tools behind the scenes

Retro Trivia Blast looks like a quiz game running on an 80s arcade cabinet — Press Start 2P font, CRT scanlines across the screen, a pixel-neon palette in green, cyan, yellow, and pink. The questions, though, are general knowledge: Science, History, Geography, Pop Culture, Technology, and Sports. No 80s nostalgia bias, no retro-themed trivia. The aesthetic is retro; the subject matter isn't.

That split shaped everything else. A quiz game called "Retro Trivia" could plausibly have been a game of 1980s pop culture — movie quotes, arcade cabinets, synth-pop lyrics. We wrote the spec to make sure it wouldn't be. The aesthetic does the retro work, the questions do the trivia work, and keeping those separate meant the bank could be useful to anyone.

Want to play first, then read the build story?

▶ Play Retro Trivia Blast Now

The Question Bank Problem

Every trivia game lives or dies on its question bank. Hand-curating a few hundred questions is slow, and pulling from a public trivia API means your game breaks the first time that API goes down or rate-limits you. Neither option scales for a single-developer project.

The spec asked the pipeline to generate at least fifty questions per category, tagged by difficulty, with a four-answer array for easy/medium and a six-answer array for hard, embedded directly in the game's JavaScript. No network call at runtime. The pipeline produced 300 questions in the first build: exactly fifty in each of the six categories, split roughly 19 easy / 20 medium / 11 hard.

I spot-checked a sample by hand — not all 300, but a slice from each category and difficulty — and the quality was usable. A few questions needed rephrasing where an answer could be argued to be multiple things, but the hit rate was high enough that the bank shipped largely as-generated. Generate, read a sample, flag anything wrong, regenerate the flagged ones. Human-in-the-loop, but the loop is narrow.

Seeding the Daily Challenge

One of the more interesting mechanical problems was the daily challenge. The promise of a daily mode is that everyone who plays on a given day sees the same puzzle, so you can compare scores and talk about it. The problem is that we don't have a server handing out "today's questions" — the game is a single HTML file, all client-side. So the puzzle has to be deterministic from the date alone.

The pipeline solved this with a seeded pseudorandom number generator. The date string (YYYY-MM-DD) gets hashed into a 32-bit integer, that integer becomes the seed for a small linear-congruential RNG, and that RNG drives the question selection: one question pulled from each of the six categories, four additional random picks from the full bank, and a final shuffle — all using the same seed. Every player on the same calendar day gets the same ten questions in the same order.

The elegance of this is that it's stateless. No server, no API, no "today's questions" endpoint. The date is the key. Yesterday's daily is reproducible forever by just typing yesterday's date into the seeding function. It's the kind of solution that's obvious once you see it and genuinely non-trivial to arrive at if you haven't built one before.

Hard Mode Almost Cheated

Hard mode shows six answer choices instead of four and gives you ten seconds per question instead of Medium's fifteen or Easy's twenty. The catch: most questions in the bank have four answers, not six. The Hard mode pool needed to pad out two extra choices per question on the fly.

The first build did this in the laziest way possible. For any four-answer question shown on Hard, it appended two more answers that were the existing wrong answers with " (variant)" tacked on the end. So "Venus" became "Venus (variant)." Technically six choices. Obviously not six real choices — anything with "(variant)" was a tell.

The QA pass flagged this immediately. Instead of padding with tagged duplicates, the pipeline now pulls the two extra distractors from the answer arrays of other questions in the same category, shuffled, deduplicated against the real answers. A Science question on Hard gets two extra Science-flavored wrong answers that happen to be correct answers to some other Science question. Plausible because they sound like Science answers, wrong because they're answering a different question.

The Bugs the Human Playthrough Caught

A game that passes the "does it compile and render" bar can still have small bugs that only surface when someone plays it end to end. The QA loop caught a handful on Retro Trivia worth being honest about:

None of these would make a trailer. All of them would annoy an actual player within a few minutes. Finding them is the entire point of a review step after the build step.

What We Got Right Up Front

A few decisions from the spec landed well on the first try. The streak multiplier — a correct-answer counter that scales your score multiplier up to 5x at a streak of ten — gives players a reason to care about getting three in a row instead of two. The timer bar that fades from green to orange to red and starts pulsing under 25% is visual feedback that means exactly one thing and means it immediately. The shareable result grid of green/red/black squares is the kind of small viral hook that costs almost nothing to implement.

The 8-bit aesthetic itself was an easy win. Press Start 2P is free from Google Fonts, the scanline overlay is a short CSS pseudo-element, and the palette picked itself from the constraint of "looks like a 1982 arcade monitor." The parts that could have been fiddly turned out to be the simplest because the reference point is so well-established.

What the Pipeline Got Wrong, Honestly

Beyond the Hard mode padding: the initial layout was too desktop-centric and needed a proper mobile breakpoint pass so answer buttons stacked cleanly on phones; the keyboard shortcut hint was either invisible or in the way until we added a three-second fade-out on the first question only; the share-result emoji grid needed to distinguish "wrong answer" from "ran out of time" to be interesting enough to share. Drafts that needed a second pass, which is how drafts work.

The next iteration we care about is per-category accuracy feedback on game-over. Right now the game tells you overall accuracy and best streak, but not that you got crushed on Geography and aced Technology. That's the kind of thing that brings players back to work on weak categories.

The Takeaway

Trivia games feel like they should be easy to build. All the mechanics — timer, question display, multiple choice, score — are well-understood. The hard part is all the small decisions about what the questions are and how they feel: separating aesthetic from subject matter, seeding a daily challenge deterministically, making Hard mode actually hard instead of obviously padded. A pipeline that generates the boring parts at scale and leaves the judgment calls to a quick human review is a good fit for exactly this kind of game.

Play Retro Trivia Blast — try the daily challenge, and see if you can spot which category the Hard mode distractors came from.


Related reading: How We Built Pulse: The Idle Clicker Our AI Chose to Make · How We Built Neon Snake With AI · What Is Vibe Coding? · Vibe Coding Tools: From Chatbots to AI IDEs