Inspiration
Twitch chat is part of the show. I wanted to give viewers a shared goal and a way to shape what the streamer does next.
That became CrowdAnvil: chat builds a challenge, the streamer plays it, and everyone sees the result.
What it does
Viewers vote directly in Twitch chat to build a challenge. In Counter-Strike 2, they can choose goals like getting a kill, surviving the round, or finishing with enough health.
CrowdAnvil turns those votes into a challenge and tracks it during gameplay. An OBS overlay shows the votes, progress, and result.
Results checked using game data are labeled “Game Verified.” If there is not enough evidence, CrowdAnvil shows “Not Verified.” For other games, a manual mode lets the streamer judge the result, clearly labeled “Streamer Verified.”
Viewers need no download or extra account.
How I built it
I used OpenAI Codex throughout development to help build the Twitch connection, challenge rules, dashboard, Windows companion, and OBS overlay. I also used it to investigate problems and write tests for the fixes.
The web app uses Next.js, React, and TypeScript, runs on Vercel, and stores its data in MongoDB Atlas. Twitch EventSub brings chat votes into the app, and a dedicated Twitch bot posts prompts and results.
A local Windows companion reads Counter-Strike 2 game updates and sends them to CrowdAnvil. It does not control or change the game.
Challenges I ran into
The hardest part was making sure the result matched what actually happened. Game updates can arrive late or miss important details. CrowdAnvil needs enough evidence before calling a result verified.
I also worked on making setup easier. The Windows companion helps connect the game without asking the streamer to run terminal commands or copy configuration files by hand.
Accomplishments
I tested the full flow with real Twitch viewers and real Counter-Strike 2 gameplay.
The demo shows viewers voting, the challenge appearing on stream, and the game deciding the result. The streamer gets the required kill but dies, so the survival challenge correctly fails.
What I learned
I learned how to connect Twitch chat with live game data and how to test the full experience beyond a local demo. I also learned that missing evidence needs a clear outcome of its own.
Working with Codex helped me move from an idea to a working project, then improve it through real testing.
What's next
I plan to improve setup and reliability, prepare the Windows companion for wider release, and add Minecraft before expanding to more games.
Chat forges it. Your game proves it.
Built With
- counter-strike-2-game-state-integration
- mongodb-atlas
- mongoose
- next.js
- node.js
- obs-studio
- openai-codex
- playwright
- react
- tailwind-css
- twitch
- twitch-eventsub
- typescript
- vercel
- vitest
- zod
Log in or sign up for Devpost to join the conversation.