Inspiration

I was inspired by simple, addictive mobile games that are easy to pick up and fun to return to. I wanted Twitch chat to have something lasting to build together: a city shaped by the community over time.

What it does

Citches is a pixel city that grows from Twitch chat. Positive messages help build it; spam and toxic messages can trigger disasters. Viewers can spend points to plant trees or repair buildings, while Bits, subscriptions, and raids give the city a boost. The city rests between streams and continues when the community returns.

How we built it

We built Citches as a Twitch Extension with a Node.js and TypeScript backend. Twitch chat comes in through IRC and is scored by rules for hype, kindness, curiosity, toxicity, spam, and copypasta. Those scores become city events, which Three.js renders in a low-resolution pixel style.

OpenAI Codex helped build the core architecture, chat ingestion, scoring, log replay, and city renderer. We replayed real chat logs to tune the rules. The Twitch Extension displays the overlay and syncs updates through PubSub; a snapshot endpoint brings late viewers up to date.

Challenges we ran into

Chat activity varies widely between channels. A fixed disaster threshold could overwhelm a small chat or barely affect a large one, so we made it adapt to recent activity and added cooldowns. We also tuned spam detection to recognize that repeated emotes and slang are normal in many communities.

Twitch’s PubSub limits required us to batch updates and keep messages small. We also worked to keep the overlay compact and the city smooth enough to run during a stream.

Accomplishments that we're proud of

We’re proud that chat can shape a persistent city together, and that the same scoring pipeline supports live chat, replayed logs, and demo mode. We also built a Twitch Extension that synchronizes the city for viewers, including those who join late.

What we learned

Testing with real chat is essential: channel culture can make ordinary messages look like spam. We also learned that separating chat ingestion, scoring, city events, and rendering made it easier to tune the system and add new ways to play.

What's next for Citches

We'd like to add more city themes and community events, improve the tools for tuning chat behavior, and explore ways for a city to tell a richer story across multiple streams. Potentially as a single overlay extension, we could have Citches as the first line in a "Twitch Games" hub that runs several small games that play with the streamer and audience together with a similar adaptive pipeline.

Built With

Share this project:

Updates

Submission history