We did it! It was a bit stressful trying out a new rig with some experimental (to us) setups but we got through it, and the general reaction on Twitch seemed positive. Since we spent some significant time messing around with the setup before settling on the live rig, I thought I’d go into a little bit of detail on what we used and didn’t use to get our version of an X-Wing broadcast onto the web.
First off we want to thank the guys at the Mynock Squadron Podcast for letting us take up more space than we needed in setting up our table. We were putting together a lot of moving parts that hadn’t necessarily been battle tested so they graciously allowed us to run the “experimental table” at the Open.
We love what other streamers are doing, and obviously everyone is more prolific than we are. But we wanted to take a shot at presenting tabletop-sports and we figured if we were going to do it, we should try to give it the most polish and production value we can. There were things that we’d seen in other streams, but generally they were only common in larger scale e-sports or traditional major league sporting events that we wanted to try to incorporate (some made it, others did not):
- Live, animated scoreboard [yes!]
- iPad control of animated scoreboard (so we could walk over to the table and make live changes) [yes!]
- Updating leaderboard (standings) throughout the day [yes!]
- Multi-camera coverage (with operators) [yes!]
- Supplemental lighting on the table [yes!]
- Interstitials and pre-produced content [yes!]
- Content edited ON-THE-DAY [yes!]
- Live interviews [yes!]
- Replays [nope]
- On-screen annotations and drawing [nope]
- On-demand card graphics to recall on screen when needed [sort of?]
- Hardware stream encoding (for higher quality and to eliminate audio drift we’d seen on other streams) [yes, but with issues]
- Hardware switching (redundancy? stability?) [yes!]
If you saw the stream then you probably already know, some of these goals we achieved (in varying degrees of success) and others failed to materialize either on the day or in the days leading up to the event.
Video Switcher | Instant Replay
(The following are affiliate links to Amazon where applicable. It helps pay for the site hosting, thanks!).
The core of the feed was handled by a Blackmagic ATEM Studio HD. 4x SDI inputs and 4x HDMI inputs offered flexibility while the hardware itself was more stable than trying to run everything in software. Lots of people have had success with OBS, I have not. Maybe someday I’ll jump onto the software switching wagon (vMix looks appealing but can Windows be trusted???) but for now I wanted to make sure the signal kept flowing. The ATEM is a pretty purpose-built device so it really only handled the switching aspect. For graphics and everything else other hardware/software would need to get involved. I added a pair of Hyperdeck Studio mini‘s to handle the main program feed and a second ISO recording. The original plan was to use the second mini for instant replay playback. We had done testing with an old RS-422 slow motion controller at first. In fact I tried TWO DIFFERENT ones, but even though the hyperdeck mini can take RS-422 commands, it’s not really suited to being used as an instant replay box. Cueing up on the controller was cumbersome and in reality we questioned how often we’d really need to show an instant replay of a game as slow as X-Wing anyway. Chalk this one up as a win for software over hardware switching.
So while instant replay was out the window without a secondary machine, the stability and reliability of hardware switching was too good to pass up. In the end, the second hyperdeck was just used for playback of pre-edited content into the livestream (which I’ll try to cover later).
As for control of the switcher; The ATEM HD has push buttons on the front, which I suppose could be used in a pinch but they’re awfully awkward to use regularly. A common workaround I’ve seen is to use JustMacros to run an API that can interfaces that interact with the ATEM over the network. While it does seem to work fine, it requires a Windows machine to run, and some amount of setup/configuration in advance. I did try running it on a miniPC but I ran into some issue getting my X-Keys controller to work and had to abandon the idea. In the end we ended up running StrataPro on an iPad, which connects to the ATEM over wifi and has pretty much every control available in the desktop ATEM software itself including a few extras. It was easy to set up a macro to slide in the dice-cam overlay and slide it back out at the press of a button.
I knew one thing that we could really take to the next level was our graphic overlays. I really wanted something that was live and interactive. Since we settled on the BMD ATEM HD as our switcher, we were saddled with the task of sending fill+key video signals into the switcher for overlaying. In a software only scenario like OBS or vMix this wouldn’t even be a concern, but here it requires a separate machine with 2 of the 8 video inputs on the ATEM.
I had tried LOTS of work arounds for this. Davinci Resolve key outputs, CasparCG (requires a windows machine), simple graphics over chroma-key green. What I really wanted was something that was MacOS compatible (to run off my laptop) that could send key+fill. One of the only solutions I found was NewBlue Titler Live coupled with an Ultrastudio 3D. This worked great in my testing….. the irony is that months later I ended up building a small i7 based PC with a Decklink Duo card anyway. If I had known I was going Windows, this might have all been different….
Ryan Farmer graciously printed out the standings after each round and we input that into some Titler Live graphics.
The real ambitious thing we tried to do graphically was with the “X-Wing Overlay” in general. The game seems to lend itself to a two-sided list of each player’s ships, but we wanted to try something more dynamic. I know I keep saying that, but this was challenging to do live. I spent a few weeks building an overlay that accommodated up to 8 ships per side, which was really overkill but on the day I wanted to be prepared. The unforeseen issue was that this new miniPC I built (and possibly no consumer pc) was really up to the task of pre-rendering a graphic overlay as complex as this. An additional incentive to pursue Titler Live was that you could create your own custom scoreboard inputs, not just the graphic but the actual input controls that affect the score. So we created a little LAN web page that you could load on the ipad to adjust the score live.
<?xml version="1.0" encoding="utf-8" ?> <inputBehavior name="Scoreboard Tool: xwing" url="xwing/xwing.html" UIGroups="Sports" family="Scoreboard Tool" index="1"> <variable name="Clock 1" category="optional"> <pattern>[0-5][0-9][:.][0-9][0-9]</pattern> </variable> <variable name="LPlayerName" category="required" /> <variable name="RPlayerName" category="required" /> <variable name="LPtsDest" category="required" /> <variable name="RPtsDest" category="required" /> <variable name="LNumShips" category="required" /> <variable name="RNumShips" category="required" /> <variable name="Round" category="optional" /> <variable name="LoneHull" category="optional" /> <variable name="LoneShield" category="optional" /> <variable name="LoneForce" category="optional" /> <variable name="LoneHalf" category="optional" /> <variable name="LoneDestroyed" category="optional" /> <variable name="LoneCrit" category="optional" /> <variable name="LtwoCrit" category="optional" />
This took some time but was technically functional. The real issue came down to raw horsepower. Titler Live is probably generally used for traditional sports scoreboards that show maybe 2 scores and a clock and maybe 1 or 2 other things. This build is essentially 16 unique scoreboards, and unfortunately the way I built it meant that Titler Live had to cache all 16 everytime something changed, even if only 3 ships per side were in use. I had considered making more title templates with fewer ships per side that I could call up based on the next matchup, but there was already SO MUCH other info Cody and I had to gather from the incoming players during the switchover that trying to load new title templates in between was just too much.
I guess that’s all I really wanted to say about Titler Live. Technically capable, but the way I configured it was way too ambitious and I’d definitely simplify it for the next one.
All the Extras
Since this was a pretty big event, we wanted to really show that event flavor to all the viewers would couldn’t be there that day. That meant getting some shots of the space, and all the other non-gameplay stuff that was going on like announcements and costume awards and stuff like that. In addition to that basic live coverage we had Gio out grabbing shots of players and even the judges going table to table and edited them together for some fun on-the-day interstitials for us to play in between matches. We also had some interviews that Cody C had shot prior to the event ready for playback. Check out the Gio edits below:
Travis brought a crew of his own to rig lighting and man the cameras for coverage of our table, and I think it really amplified the production value.
For the encode itself, I used a Teradek Cube to stream directly to Twitch. This was supposed to be the bulletproof hardware solution over using something like OBS to send the stream, but we found that we had a couple dropouts during the day and I’m not sure if it was due to the internet at the venue or the Cube itself, but I’m leaning toward the cube being the issue since I don’t think Dion of Gold Squadron Podcast had any issues with his stream.
All in all, was the effort worth it?
That’s tough to say, I mean I think you can see some of that production value in the final product, and we are all proud of what we accomplished. I didn’t do everything that I set out to do, and in some instances the setup was way overkill. We learned a lot though and broke in the setup to the point where we’re more comfortable knowing what to keep and what to lose for the next one. If you have any questions about the setup I’d be happy to answer them either in the comments or on our Discord server.