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.

Extended Demo: https://youtu.be/jKu6MLC3cEQ Team Talks Tech: https://youtu.be/gnb6SL5ymxE

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.

Challenges

  • 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.
  • The Twitch extension has to be fairly lightweight because we want the video stream to get majority of the computing/networking resources! This introduces fun design and architecture considerations in Javascript framework, API calls etc. The Extension Configuration Service cache was a cool feature to incorporate to lighten things up a bit.
Share this project:
×

Updates