A viewer is assigned a module to defuse.
A viewer communicating with the streamer through the extension.
A viewer uses the notebook to write down the information given by the streamer about the bomb and the module.
A viewer inputting the solution to the module they're defusing, so they can send it to the streamer.
The streamer using the companion app to look at viewer questions and solutions.
The whole reason I got into this whole "Streaming Toolsmith" thing is because I was tired of passively consuming content on Twitch. Live content, combined with Extensions, provide the ability to engage the viewer so they can interact with the streamer and the game in a meaningful way. I want to see more of that being made, so I figured I'd start building this stuff myself.
I've always been intrigued by the concept of 'asymmetrical' multiplayer games. Keep Talking and Nobody Explodes is a unique game where one player is defusing a bomb, and the other players need to guide them in order to defuse the bomb. They can't see each other's screen, so communication is key. Translating that concept to a streamer/viewer interaction seemed like an interesting challenge, so here we are!
What it does
My extension is a game-matched extension for the game Keep Talking and Nobody Explodes. The extension allows viewers to take on the 'expert' role, where they guide the defuser (in this case, the streamer). Before this extension, it's been hard to play this game together with viewers, since their only way of communication is the chat, and they're able to see the bomb (which goes against the spirit of the game).
Streamers, on the other hand, run a companion app on their local machine which does two things: it provides the necessary game data for the extension, and it lets streamers see viewer questions and solutions for their assigned modules. This app serves as a 'bridge' between the experts and the defuser.
How I built it
- The extension is built using React for the UI
- The streamer app is built using Electron, and React for the UI
- The streamer app runs a log parser for the game behind the scenes, which is written in Node.js
- The EBS runs on AWS (Lambda functions), also written in Node.js
Challenges I ran into
Mainly time constraints - I misread the submission dates and thought I had until the end of October. I started this whole project on the 17th of October, so it's been a bit of a mad rush to get to the finish line :)
Accomplishments that I'm proud of
Finishing this thing in time — I don't think I've ever produced as much code in such a short period of time! I'm equally happy with the idea and the execution. I feel like this is a pretty unique idea that offers a co-op experience between the streamer and their viewers, and the execution went pretty well.
What I learned
Pay more attention to the deadlines!
What's next for Keep Watching and Nobody Explodes
Probably a self-play mode where you have a dedicated channel (a la TwitchPlaysPokemon) where the defuser role is automated: the interactions with the game can be scripted using a keyboard/mouse controller, and the way the defuser communicates with their experts is through Google's Text-To-Speech service. Pie-in-the-sky stuff, but it's doable!