How To Stream a Pokémon Speedrun on Twitch




I’m a big speedrunning fan, and I had a great time watching Keizaron complete his Pokémon Crystal speedrun at SGDQ 2019 a few weeks ago. This led me not only to search for other Pokémon speedrunning formats, like catch ‘em all or Pokedex order, but also to look into how to stream Pokémon speedruns myself. While there are some speedrun basics you’ll need for all categories, like streaming software, an emulator, and speedrun timers, there are also a few unique tools you’ll need if you’re looking to try a specialized category such as catch ‘em all.

Note: just looking for the catch ‘em all tools? Head to Optional Components.

How to Stream Speedruns

Required Components

There are a few main tools you’ll need to stream speedruns: 

  • A Twitch or YouTube account
  • Streaming software
  • Speedrun Timer
  • An Emulator
  • A Game ROM

Note: Technically using a webcam and microphone is optional. That being said, sharing your commentary and reactions with your audience is a huge part of what makes streaming enjoyable to watch and a key component of audience engagement. Since I’m just starting out, I have no audience and am definitely not qualified to discuss audience engagement in depth, so I’ll focus on the technical setup needed here.

A Twitch or YouTube account

I recommend Twitch, YouTube, or both as your streaming platform of choice. Anecdotally, I have a hard time catching live streams sometimes, so I really appreciate it when my favorite streamers upload replays to YouTube (or Twitch) that I can watch on my own time. We’re going to go with Twitch for this example as that’s what I’m currently using.

Streaming Software

The core software used by many streamers is Open Broadcaster Software (OBS). It’s available for Windows and Mac OS X, is compatible with all sorts of audio/visual configurations, and offers a ton of features for streamers. There are also custom options out there, most of which build on OBS to offer streaming-focused features. One I’ve been looking into is Streamlabs, which has free templates and widgets. Let me know in the comments if you have a favorite streaming application you prefer!

Speedrun Timer

Speedrun timers come in a variety of shapes, sizes, and complexity. If you’re getting into serious speedrunning, you’ll probably want a timer that can handle segments, splits, personal best times and more; check out the recommended tools on SpeedRunsLive or for their recommendations. For a basic Pokémon speedrun race, you really only need a stopwatch timer. Recommendations for speedrun timers differ a bit depending on your preferred OS. If you’re on Windows, I’ve heard good things about Snaz. I’m temporarily playing on Mac OS X, so things are a bit more difficult. For now, I’m using Scoreboard+ to get a simple stopwatch timer into OBS.

An Emulator + Game ROM

You have a few different options here as well. Pokémon games have come out on a variety of Nintendo consoles since the release of Pokémon Red and Blue for the Gameboy in 1998. If you’re looking to stream one of the first three generations, a Gameboy Advance (GBA) emulator such as VisualBoyAdvance should work just fine. Later generations may require a Nintendo DS emulator such as DeSmuME. You’ll also need a ROM of the game you’d like to speedrun; this can be a questionable legal area, so my recommendation would be to play games that you have already purchased.

NOTE: While VisualBoyAdvance is compatible with Mac OS X, I had issues getting it to work with some of my randomized ROMs. I’ve found that OpenEmu works great too!

Optional Components

While that’s all you need to get started streaming, there are a few other components that are required for specific Pokémon speedrun formats. I found these tools to be a bit harder to find and set up to my liking, so I’ve addressed some common questions below.

How do I Use the Pokémon Randomizer?

If you’ve played a lot of Pokémon over the years, you may want to try mixing things up with a speedrun incorporating randomized elements. The Universal Pokemon Game Randomizer gives you complete control over randomizing game elements. Everything from Pokemon to moves to items to trainers–all with varying levels of randomness. The Universal Pokémon Game Randomizer works on Windows and Mac OS X but requires Java to run. Below are the settings I’ve selected for a Pokémon FireRed Catch ‘Em All Randomizer race:

[metaslider id=”638″]

How Do I Track Catch ‘Em All Races?

If you’ve seen a Catch ‘Em All race, such as this Pokédex Order Catch ‘Em All Randomizer race between 360Chrism and Keizaron (clocking in at a whopping 8 hours and 35 minutes!), you’ve noticed that streamers display how many pokémon they’ve caught so far right within their stream. It turns out there’s a specific tool to use when streaming catch ‘em all pokémon races called PokédexCounterOnline. This tool offers seven generations of pokémon and is customizable to fit your streaming setup.

Setting Up Your Stream

Now that you have your tools, you’re ready to start streaming. I’m not going to go too in-depth here, but I want to share the key components and shout out some resources I used to get set up.

Connect OBS to Twitch/YouTube

I followed this streaming guide from GameAuthority to get my Twitch key into OBS and set up a basic scene. I don’t have a webcam or microphone for my desktop computer, so I’m currently using a Macbook Air to run my stream as it has a built-in webcam and microphone.

NOTE: I haven’t watched this yet (it’s over 5 hours long) but EposVox’s Most In-Depth OBS Studio Tutorial Course Ever Made looks like it covers a ton of OBS features if you’re looking to learn more about how to get the most out of OBS.

Set up your emulator, video, and audio

This is pretty straightforward in OBS, but it may require a bit of experimentation to get everything working correctly depending on your hardware configuration. The key components are:

  • A Window Capture source for your emulator
  • An Audio Input source for your microphone
  • A Video Capture Device source for your webcam

There are a ton of free themes and layouts available out there to snazz up your stream and make it more engaging for viewers. Again, I’m not well-versed in that side of things, so look out for a future post as I learn more.

Set up your speedrun timer and catch ‘em all tracker (on Mac OS X)

This part can get a bit trickier, as you’ll need to work with Sources and Filters to integrate the speedrun timer and Pokémon tracker components into your stream. To add a speedrun timer to your stream on Mac OS X, download the Screenboard+ app, unzip it, and follow the instructions to open the dmg file and add the application to your Screenboard+ folder. Next, open the app and adjust the settings as shown below:

Now go back to OBS and add a new Text source to your scene (displayed in the menu as “Text (Freesource 2).” Name your new source, then adjust the font and font size as needed. I recommend increasing the font size to prevent blurring of the text as you scale it up to fit your window. Next, check the “Read from File” and “Chat Log” options. Hit “Browse” to select your text file, and navigate to the “Output” folder of Scoreboard+ and select the “Clock.txt” file. Select “Okay” to confirm your file selection, then “Okay” again to confirm your Text source options. You should now have the stopwatch on your scene! You can stop and start the stopwatch through the Scoreboard+ app interface.

Note: In my tests, the refresh rate within OBS was not great, skipping many frames/milliseconds. If you have a fix for this, let me know in the comments! 

add a stopwatch to your Twitch livestream
Use part of Scoreboard+ to add a stopwatch component to your Twitch stream for races and other timed events.

You can add the Pokémon tracker to your stream in a similar way. Add a new Window Capture source to your scene, and select the “Pokedex Counter Online” window. It’s important to note that since you’re choosing the whole window as a source, changing tabs will change what appears in the window, so you’ll probably want to break the counter out into a separate window.

OBS: select a new window source, select the PokeDex Counter Online window, and add it to your scene.
Select a new window source, select the PokeDex Counter Online window, and add it to your scene.

The other important step with this source is applying a crop filter. Go to your source settings (either click the gear button in the source pane or right-click on the source name) and select “filters.” There are two types of filters, Audio/Visual filters and Effect filters. In this case, we’re modifying the window with an effect, so create a new Effect filter and select “crop/pad.” This is where the pokémon per row customization option in PokedexCounterOnline comes in handy; find a shape that fits an open area of your stream window and play around with the row settings and cropping until you find something that maximizes your free space.

Right-click, select "Filter," create new "Effect Filter," select "Crop/Pad", name the filter, crop each side to your desired shape
Right-click, select “Filter,” create new “Effect Filter,” select “Crop/Pad”, name the filter, crop each side to your desired shape

Streaming on Twitch

So technically all you need to do to start streaming once you have OBS set up is hit the “Start Streaming” button and you’ll be off to the races. However, if you’re looking for people to actually find your stream and engage with it, you’ll want to do a bit of work within your Twitch Creator Dashboard to add a title, description, and tags. These will all help viewers find your stream when they’re searching for content.

In Conclusion

I know there are a lot of streaming guides out there. I wrote this mostly because it took me forever to find a few specific tools I needed to set up a Pokémon catch ‘em all race and I wanted to share them with anyone who is inspired by Keizaron, 360Chrism, Shenanagans, and others to start speedrunning and racing themselves. Keep watching this space for more steps on how to recreate this setup on Windows!