ChatCraft: Chat Builds the World

A shared world built by the people watching.

ChatCraft is an interactive streaming experience that turns Twitch chat into a collaborative building space. Instead of only reacting to a stream, viewers can help shape what happens on screen. A message becomes a cottage, a vote becomes a tower, and a series of small contributions gradually becomes a village.

At the center of the project is a browser-based 3D voxel world. Viewers send supported commands through Twitch chat, and ChatCraft translates those commands into construction jobs. Each accepted request enters a shared queue, then unfolds block by block so everyone can watch the world change.

The idea is simple: give chat a visible contribution to something everyone is creating together.

From chat messages to a growing village

Viewers can request four building types: cottages, towers, farms, and bridges. Each structure has a dedicated location within a shared 32 × 32 plot, keeping the village organized as requests arrive.

Participation continues after construction. Viewers can change the walls, roof, or floor of the latest completed building, or replace a material across the existing world. A wooden cottage can gain brick walls, a different roof, or a stone floor through additional chat commands.

For example:

!build cottage
!build tower
!build farm
!build bridge
!wall stone_bricks
!roof brick
!replace dirt cobblestone

ChatCraft also recognizes a small set of natural-language patterns, including “build a small stone house” and “change the dirt to cobblestone.” These use deterministic parsing; the current version supports defined structures and phrases rather than arbitrary generated buildings.

Giving the audience a shared decision

Alongside individual requests, ChatCraft includes broadcaster-controlled voting. The broadcaster opens a vote, viewers choose between a cottage, tower, or farm, and the winning option enters the construction queue when voting closes.

Each viewer has one ballot and can change their choice after the cooldown. This creates a simple community moment: chat chooses a direction, then watches the result appear in the world.

Construction happens one block at a time, approximately every 60 milliseconds. That pacing makes progress visible and gives viewers time to follow how their request becomes part of the village.

Keeping participation manageable

A shared world needs predictable rules. ChatCraft processes one construction job at a time, supports up to 32 waiting jobs, and applies a 10-second cooldown to accepted viewer actions. An allowed-material list keeps requests within the supported building system.

Queued edits resolve after earlier jobs finish, so a customization request can target a building that was still under construction when the message arrived. Rebuilding a structure refreshes its existing location, keeping the finite plot usable.

The interface displays chat, construction progress, queued requests, voting information, and connection status alongside the world.

Built for local demos and streaming

ChatCraft includes an offline sandbox that runs without Twitch credentials. Sample chat demonstrates construction and voting, while a local message composer lets users try commands themselves.

The browser view supports camera rotation, zoom, and an optional automatic orbit mode. It is designed to be added to OBS as a browser source, making the world suitable for inclusion in a stream layout.

Offline activity is explicitly labeled, and the interface distinguishes it from an actual Twitch IRC connection.

How it works

The backend is written in Python, using the standard library for the local HTTP server, simulation loop, and Twitch IRC connection over TLS. World rules—including templates, materials, voting, cooldowns, and construction queues—are separated from networking.

The frontend uses HTML, CSS, JavaScript, and Three.js to render the world through WebGL. Blocks are grouped by material using instanced rendering. Three.js is included locally, so the demo does not depend on a runtime CDN.

The project runs with Python and a modern browser, without a package installation or frontend build step.

Current progress and future direction

The offline experience has been verified through automated tests and browser interaction. The documented test run includes 29 passing tests covering construction rules, voting, queue behavior, HTTP endpoints, and simulated IRC communication.

Real Twitch channel testing, OBS recording, and large-audience performance testing remain next steps. Worlds currently live in memory and reset when the server restarts.

Future development could add persistent villages, undo controls, timed voting, more structures, and moderation tools. The goal is to grow the creative possibilities while preserving the direct connection between a viewer’s message and a visible change in the world.

ChatCraft makes audience participation tangible: one message, one contribution, one shared world.

Share this project:

Updates

Submission history