The extension panel zoomed in.
One of the key configuration screens
As Twitch.tv viewers, we want more interaction with every stream we see. How cool would it be if we could surprise our favorite streamer with supplies just at the right moment, or drop a zombie in a difficult situation?
We don't just want to break the wall between us and the streamer, we want to jump through it.
Summon TV is a continuation of a project that began at Twitchcon 2019 and has followed us here to DevJam. Our desire to make viewing more engaging happened to line up perfectly with a streamer challenge put forth by Data_Dave at the hackathon, and this bigger theme of game-matched extensions.
We were trying to achieve a simple goal of having the Twitch extension interact w/ a live Minecraft game. Additionally, since Bits are a fun way to celebrate stream moments, they were the perfect event we wanted to incorporate into the app.
Approaching the problem:
- Using Andrew's Minecraft server knowledge from his younger days, we knew we could utilize a custom server framework called Bukkit and make good use of their support for in-game events.
- We architected an API over that and created a simple proxy server to connect the extension to the more elaborate API on the game.
- In the stream, users are throwing bits events that will eventually surprise me w/ a Creeper that I have to run away from. It's extremely important that audience can participate together, so we set up a custom server and database to assemble the totals contributed by everyone viewing the stream.
- We use the configuration service where possible to save static data for fast extension loading times for viewers.
- A lot of the traps that we encounter were dealing with scalability and accommodating multiple users. We circumvented that by architecting an on-demand, containerized workflow to give each streamer their own optimized servers to run each session smoothly.
- We also were able to reach out to the vast Minecraft modding community to get expert advice on some of our goals / ideas.