Inspiration

Chaos Protocol grew out of our love of the arcade games we played growing up: straightforward controls, distinctive visuals and the constant temptation to have one more go.

We wanted to bring that retro experience into a modern streaming environment. Our starting question was: what happens when the player controls the ship, but their community controls the chaos?

Twitch already creates a shared experience between streamers and viewers. We wanted to turn that interaction into part of the game itself, giving viewers decisions that visibly affect what happens on screen. A community could become the streamer's support crew, their biggest obstacle, or both.

What it does

Chaos Protocol is a browser based arcade arena game where players fight enemies, collect upgrades and complete increasingly difficult rounds while adapting to rules chosen by Twitch chat.

Those rule changes are called protocols. They can make coins flee from the player, reverse movement controls, make the ship grow whenever it fires, introduce a roaming black hole, and much much more. Protocols accumulate during a run, creating combinations that force players to rethink their approach.

Viewers can also choose a faction:

  • Sentinels help pilots survive through repairs, supplies and helper drones.
  • The Breach increases the pressure by summoning enemies into the arena.

Both factions can vote on protocols. Shared energy budgets, personal tokens and cooldowns make participation a matter of timing and coordination.

Streamers can also invite viewers to join a multiplayer lobby to complete. Boss encounters, equipment upgrades, checkpoints and unlockable ship skins provide progression alongside the changing rules.

How we built it

We fleshed out a CONTEXT.md and AGENTS.md so Codex could get to work and bring our ideas into fruition, whilst keeping to our vision and guidelines for consistency. A SESSION_LOG.md was also added for this purpose.

We built the game with TypeScript and Phaser, using SolidJS for the surrounding interface and Vite for development and production builds.

The online backend uses Node.js and Colyseus to coordinate lobbies, rounds, votes and shared state. Twurple connects Twitch authentication, chat and viewer interactions, while PostgreSQL stores persistent progress and records.

One important decision was to run gameplay locally in each player's browser so movement and shooting respond immediately. The server independently replays the player's inputs using the same seeded simulation to verify scores and outcomes. This also supports recovery after a disconnect or reload.

We keep enemies, upgrades, protocols and much of the game's tuning in validated YAML definitions. That lets us iterate on content and balance while keeping the browser and server consistent.

Challenges we ran into

A major challenge was making the game feel chaotic while keeping it understandable and fair. Protocol combinations can create unexpected advantages or punishing situations, so their interactions need clear feedback and careful limits.

Online play introduced another challenge: maintaining responsive controls while keeping the browser and server simulations in agreement. Reconnection, replay and small differences in gameplay calculations all needed attention. This was especially important when players in different continents were playing in the same lobby hosted on a single server.

Twitch participation also required boundaries. Viewer actions needed cooldowns, resource costs and population limits so a burst of chat activity could become an exciting moment without overwhelming the game.

Finally, we had to preserve visual clarity. With enemies, projectiles, upgrades, faction actions and protocols competing for attention, effects needed to communicate useful information as well as look good.

Accomplishments that we're proud of

We're proud of turning audience participation into a meaningful part of the gameplay. Viewers can make decisions, see their effects and become part of the story of a run.

We're also proud of how protocols change familiar arcade decisions. Collecting coins becomes a chase, firing can make the ship more vulnerable, and movement can become a negotiation with momentum or gravity.

Technically, sharing gameplay logic between the browser and server gave us a foundation for responsive online play and verifiable outcomes.

Bringing those systems together with a cohesive neon arcade style, sound, boss encounters and stream capture views helped give Chaos Protocol its own identity.

The soundtrack we created is pretty good too!

What we learned

We learned that audience interaction works best when the connection between a viewer's action and its consequence is immediately visible. Attribution, warnings and feedback help people understand that their participation mattered.

We also learned that adding randomness alone does not create enjoyable chaos. Players need enough information and room to respond for surprising situations to feel rewarding.

On the engineering side, shared simulation logic and configuration driven content made iteration easier, while deterministic tests helped us check interactions that would be difficult to reproduce manually.

The project reinforced how much polish depends on small details: readable effects, clear controls, reliable recovery and a well timed sound can make a complex system feel coherent.

What's next for Chaos Protocol

Our next priority is getting more and more streamers to play with their communities so we can understand which interactions create the most enjoyable moments.

We want to use that feedback to refine protocol combinations, faction balance and the experience of joining a stream for the first time.

From there, we would like to expand the protocol catalogue, enemy roster and boss encounters, giving communities more ways to shape each run. We also want to improve the tools streamers use to tune participation for their audience.

The goal is to make each community's session feel distinctive, with its own rivalries, rescues and memorable disasters.

Further variations of the game, skins, themes, features unique to specific streamers, achievements, the list is endless.

Built With

Share this project:

Updates

Submission history