RvB Tournament Series: Behind the Scenes

Following Mangala’s enthusiastic article on the RvB tournaments Tyrian Trophy and Spring Cup, Crossing Zebras is happy to welcome Tyrendian Biohazard, the tech-whiz who brought the tournaments to you, the viewers. Tyrendian takes you under the hood and shows how all those pretty pixels ended up on your screen. A must-read for anyone looking to put on a streamed tournament of their own some day. My name is Tyrendian Biohazard. I ran the stream for the most recent RvB tournament, the Tyrian Trophy (Day 1 & Day 2), as well as the Spring Cup (Day 1 & Day 2) earlier this year. There has been a lot of positive feedback and suggestions regarding what people have seen, and would like to see in the future. I also received a number of proposals that keep me up at night crying into my pillow. There was also quite a bit of interest in how the stream was put together, as we are all just players with no clever devhax provided by CCP. Throughout this article, I’ll use the Tyrian Trophy for reference as it used all the same methods as the Spring Cup, with additions in the graphics area. Let’s start with a bit of history. I’ve been streaming for almost two years now, beginning when I started EVE Online. About a year ago I joined a corporation called UHURT, which is comprised of several streamers with a wide variety of experiences. Solo and small gang PvP tend to be the primary subject of the streams, but from time to time subjects also include API use, Industry, Exploration, and other topics. My stream focus tends to be PvP, as well as helping new players get into EVE. When Mangala first put out the call for people to assist with the Spring Cup, I immediately jumped at the chance to be able help with the event. Several UHURT members signed up to provide commentary for the matches, but we wanted to stream it all as well. We had never tried to cover an event such as this and it provided some unique challenges in need of solutions, and gave us the opportunity to assemble resources to carry on into other streams, as well. We wanted to broadcast the tournament in a way that resembled the AT or NEO, as that was a format that was easy to understand, provided some nice views of the fights, and still gave viewers enough information on what was happening during the matches. Watching the AT or NEO, you get a sense that CCP is using some clever camera capability within a special client to be able to show the ships as they fly around the arena. I don’t suspect this is true, but rather they are using the clients “Look at ship” function within the arena. That is something easily reproduced by us lowly players, but how can we take multiple clients’ views and combine them into a useful feeds for the stream? The answer relies in a combination of a RTMP server and an Open Broadcaster Plugin. NGINX is a handy HTTP server that can also provide other services, one of which being RTMP (Real Time Messaging Protocol) with the use of a specific module. This combination allows for it to act as a stream server, similar to how you would broadcast to twitch.tv. This article has a great writeup of how to set up NGINX as a basic RTMP server, as well as a link to lengthy documentation if you decide to really dive in deep to explore the full capabilities. Streamers could set up their own OBS to broadcast to your server, rather than a more mainstream service like twitch.tv or hitbox.tv. Once set up, you can have multiple people streaming to your custom server. Add in a website to provide viewing, chat, and authentication, and you could become twitch.tv’s rival! G0yJZoo Having people stream to your own private server is fine and all, but what are you actually supposed to do with it? A great thing about OBS is that there is a wealth of plugins available, one of which is a plugin to input video into your stream. Simply called “Video Source Plugin“, this will pull in a variety of video feeds into your stream with some options to customize how it will look and sound when playing through your stream. Once you input the stream path into the plugin, it acts as any other source for your stream. You can resize and move sources around at will, too. The plugin also allows you to specify local video files, which is how the between-match splash and bumpers were displayed. They are just mp4 files on the local computer, activated at specific times. iwwYPWi So, we now have people acting as cameramen (or as we call them, “cambots”), streaming to our server. That takes care of the video feeds, but we still need to make this look like a tournament. During the matches, you’ll notice the targets at the bottom of the screen, providing viewers with  shield/armor/hull status. The effect is a combination of a background image file, and the ingame targets. The image file we used was approximately 1920 x 300 and is just set up as an image on the stream, with no special tricks. This allows enough space for the cambots to hide their UI under so that it doesn’t come through on the final feed, as well as reserving enough room to show the targets. The targets themselves are the actual ingame target displays. Two clients are run on separate monitors, with a sub-region capture of OBS set up to insert the target reticles into the stream. A nice little trick that SirSqueebles came up with, was to open the map (solar or star), and move it out of the way so that the target reticles are on a solid black background. That way, when you capture the sub-region, you can use chromakey to cut out the black so that it appears the targets themselves are the only thing being captured (like you would with a green screen). B9zu1LH That takes care of the views during the match. To recap, we’ve captured incoming video feeds from people that are providing the view of the match, put a graphic overlay on top of those to hide the UI, and provide a place to put the targets reticles of each team that we’ve captured from our clients, by a monitor sub-region. How about if we want to make it more presentable? That requires some more graphics work, and if you’re like me, you’re not satisfied with just putting a static image on the overlay and call it a day. I can’t speak much for the splash screen you saw during the Tyrian Trophy. The splash video, as well as the short 8 second bumpers between matches, were done by a viewer of the stream, Lucius Kalkoken, in an application called Kdenlive. The static overlays were a collaboration between Ceofore Aideron and myself. However, I was curious if OBS could handle animated images to liven things up a bit. After searching high and low, I was coming up empty handed, until I ran across a random blog post about something called StreamControl. StreamControl is an application that runs in conjunction with OBS, allowing for a central location to update text for the stream on the fly as its being shown, behind the scenes. This program saved me a lot of headache as I could disable quite a few sources from OBS for the broadcast, like team names, most of which had to be updated by opening the OBS source properties after every match. The program comes in a self-contained folder that uses JavaScript, png files, and CSS which produces the final results of a HTML page. Once the HTML page is ready, you can use another program called “CLR Browser Plugin” to insert the HTML file into the stream. There was a bit of a learning curve with the Javascript and CSS as I’m not the developer type, but I see a whole bunch of possibilities using sources like this. Using one application to update five or six different sources, as well as adding more graphics and animations to the stream, is amazing. The upper scoreboards, the sliding team intro at the beginning of matches, as well as “Coming Up/Hosted By” displays between matches, were all handled by using StreamControl. There are a few remaining miscellaneous items on the list, but those more come down to preferences. I used Winamp for the music between matches. VLC player was used as a preview feed to all the incoming streams (using a network stream), so that I could see what the cambots were looking at, even if they weren’t being presented on the stream itself. All commentary was done through Mumble, and I had the tournament bracket open in a browser. 2PX94qw So, where to go from here? We have some ideas in the works for next time. Some shouldn’t be too hard to incorporate, such as listening in to the teams’ communications during matches, or video feed of the commentators, but some might be too much for one person to manage during the stream. Ideas are already forming about ways to incorporate API information, and hopefully CREST will allow us to one day have a nice information feed to show what the pilots are doing like the CCP tournaments. In the meantime, ideas are always welcome and if there is something you want to see, you can mail me ingame at Tyrendian Biohazard. I hope you enjoyed this behind-the-scenes glimpse of our tournament streaming setup. Thanks for watching!
Tags: rvb, streaming, tournament

About the author


12 year EVE veteran, Snuff Box scumbag, writer, graphic artist, producer, Editor-in-Chief of Crossing Zebras and the second most influential player in EVE, according to EVE Onion.