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.