Live-Streaming Battlesnake on a Budget

Brandon Brown
Mar 13, 2019 · 7 min read

This post will illustrate how I engineered and hosted the Twitch live-stream for the 2019 Battlesnake Victoria event... on a very tight budget.


It was an intense tournament between some of the best and brightest developers in Victoria, all vying for a piece of the over $14,000 in prize money. The competition was fierce and atmosphere was alive with cheers and applause. Battlesnake Victoria has always been an in-person competition ever since it started, but for the last 2 years we’ve also live-streamed it on Twitch.

This year’s live-stream had some very targeted goals. We knew we wanted to capture:

  1. The live tournament games shown on the projector screens.
  2. The audio and video of the shout-casting crew.
  3. Audio from the stage microphones (MCs on-stage).
  4. Audio from the in-room DJ.
  5. Audience reactions.
Image for post
Image for post
The Beginner Division had over 110 teams this year!

The Twitch Live-Stream Setup

Setting Up The Day Before

Fortunately the AV techs knew exactly what I wanted and were able to help make this work inside the conference AV setup.

Another big concern was that the stream needed a reliable internet connection. We’d had unreliable wifi in the past at this venue, despite their reassuring everything would be okay for our streaming needs. I wasn’t going to take the chance, and made sure that we had at least one hardwired ethernet line available for the streaming laptop.

Shout-out to the AV techs who were onsite the day of the event! They were incredibly helpful in solving out technical issues with short notice — sometimes minutes before something would happen on stage that required it!

Image for post
Image for post
The live-stream hardware setup.

Shout-Casting Table

Image for post
Image for post
A behind the scenes shot of the casting table, and our setup for running the tournament.

The final setup included semi-professional LED lighting panels, light stands, and a webcam with a 25ft USB cable extender that plugged directly into the laptop used to run the stream. (See? Simple!)

Image for post
Image for post
Live-view behind the scenes
Image for post
Image for post
Our fantastic shout-casters Curtis and Chris. Having a camera on them to get interactions like this was a must.

The Tournament Game Board

Image for post
Image for post
Replay control allowed the casters to interact with a game that had finished and talk about the moves that the snakes made before their demise.

Audience Reaction Camera

Image for post
Image for post
The audience camera pulling double-duty for a stage cam — Something we’ll change for next year!

Last year was supposed to have a similar setup but due to an unforeseen technical difficulty, the audience reaction camera was redirected to point at both the screens. Fortunately we planned for that this year, and we knew our setup would work this time through many, many dry-run tests.

Getting Video Feeds to the Live-Stream

These capture cards are natively supported by OBS as a “Video Capture” source on Windows, however if you want to use them on macOS/OS X you’ll need to use a “Window Capture” source and capture the Game Capture HD software window. There’s a performance hit in doing so, however if you need it in a pinch it might work for you.

Image for post
Image for post
Image courtesy of Elgato https://www.elgato.com/en/gaming/game-capture-hd60-s

Both of these capture cards receive audio through the HDMI feed, however we opted to configure them to receive audio on the analog 3.5mm TRS port on each card so we could also receive the microphone/stage audio on one, and DJ music on the other. This also meant we could monitor and receive & record audio on separate tracks, which was one of our goals.

I wasn’t able to get a third capture card in the mix due to budget constraints (I had no budget 😂), so we didn’t get a separate stage camera feed. This is why the scene changes between audience and stage are just me panning the audience camera to the left. Maybe next year!

Broadcasting to Twitch with OBS

Image for post
Image for post
OBS with all of the scenes and sources loaded in.

After not touching it for a few months, I had to re-learn how to use OBS. OBS, or Open Broadcasting Software, is an open source cross-platform application that allows you to broadcast content to a provider on the internet (ie: Youtube, Facebook Live, Twitch.tv, etc).

In OBS, input content is configured as “sources” and added to “scenes” on a canvas, similar to how you would manipulate objects in photo editing software. Once you have scenes set up, you can transition between them while streaming. You can even record to your local disk while also streaming. This is a huge deal when you want to record your content and edit it later without having to download it from where you streamed it to (if that is even an option).

Our plan was to have a few scenes highlighting various video feeds: the casters, the tournament game board, and the audience reaction cam. What I eventually decided to go with were some very simple scenes containing:

  • A version of the Battlesnake logo with “Stream starting soon” text on it
  • All sponsor logos and their level of sponsorship
  • The “main” scene which included the tournament game board, audience cam, and casters on one screen
  • Supplementary scenes that provided a larger view of the tournament game board, the casters, and the audience cam

Final Setup

Image for post
Image for post

One piece of the puzzle that I left out of this diagram is a second laptop to monitor Twitch chat. The stream audience was very friendly and supportive of the competitors and casters throughout the entire stream.

Image for post
Image for post

You can view the final cut of the live-stream here on our Twitch channel:

Stream Stats

Image for post
Image for post

It received over 1,700 total views and generated some buzz in the chat with 44 unique chatters, some of which had never heard of Battlesnake but stuck around to watch anyway. There were even people that arrived in the chat in search of “competitive Snake”, unbeknownst that Battlesnake existed until their arrival to the stream!

Image for post
Image for post
The people who turned up to chat were some of the most supportive commenters around.
Image for post
Image for post
Views by location and platform, as well as views from Twitch and outside Twitch. One slightly surprising piece of data here was seeing just how many people viewed the tournament from play.battlesnake.io after we embedded the stream into the homepage 😄

Takeaways

  • Run a test stream ahead of time to ensure audio-drift isn’t an issue with recording audio and video on separate channels
  • Have more knowledge, people, and equipment, at my disposal to provide a more quality stream (this is a goal every year basically)
  • Actually have a budget so we can fulfill the previous points

In all, the experience of running the live-stream was an amazing one and I would gladly host it again. I have even bigger ambitions for next year… but I’ll save that for another time. 😉

Image for post
Image for post
The casters acknowledging the Twitch stream viewers.

Want to know more about Battlesnake?
Program and deploy your own snake right now at https://play.battlesnake.io!

Battlesnake

What if programming was fun and accessible for everyone?

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch

Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore

Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store