Tech Guide
For tech volunteers also required to complete runner setup
For tech volunteers also required to complete runner setup
Thank you for volunteering as a tech volunteer at an upcoming event. The tech volunteers run the stream by preparing runners and hosts, ensuring stream information is correct and using the broadcast package to control the action. If you've got experience with other marathon setups that use NodeCG, you'll feel right at home, and hopefully find your experience even easier than usual!
You'll organise and work alongside runners and hosts, with both expected to follow your instructions. You will control the stream's OBS through an online portal. Your general workflow is as follows:
Give runners and hosts a suitably timed heads-up that their run is coming upÂ
Setup the runner and ensure their video and audio looks and sounds correct
Stop the timer, then send the current run to intermission when it's finished, running a charity video if time needs to be filled
Ensure the runner, host and commentators are audio-balanced and ready to start
Transition to the game scene and start the timer when ready
Be on hand to respond to any issues or changes (e.g. runner details), or make run-specific adjustments (e.g. relay runner change)
Communicate with the live host through Discord chat. Unless agreed otherwise, you shouldn't be speaking on stream as that is the host's responsibilty
All voice communications during the stream take place on Discord:
🔊GREEN ROOM: anyone involved in the event can join this room and chat, but is reserved for preparing runners, commentators, and hosts.
🔊LIVE ROOM: staff, tech and hosts can join this room, this is where the stream takes place. You or your setup volunteer will need to move runners and commentators into this room when ready.
🔊HOST/TECH ROOM: this is a room that only yourself and hosts will have access to. You can hop into this room to listen to the stream in time with the stream delay - this allows you to listen out for signals from the host and runners at the right time. You won't be able to hear the intermission music, this is deliberate to avoid too much noise. Hosts also use this channel to speak to the audience during intermission - you won't have permission to speak in this channel (unless you're also a host), so don't worry about needing to mute yourself.
If you've been on tech for a marathon before, you'll likely be familiar with NodeCG. Capable of a lot of functions, primarily it acts as a web-based interface for remotely controlling an OBS instance. You'll be provided a link to this. You'll be asked to log in with Twitch as your Twitch handle grants you access. If you cannot log in, please contact a staff member.
You'll need to use the first three main tabs across the top left of the workspace. The Settings tab and the tabs on the top right of the workspace are to be ignored, please don't touch them.Â
On each tab, you'll have a bunch of different controls. Hovering over the bar at the top of each will allow you to collapse and move them; you're welcome to do this and reorder the controls as you wish; this won't affect the display for other users. You can also zoom the page in and out to make the controls easier to manage.
The Main Workspace is used to manage the current run and to change over to the next run. This will be the tab you spend most of your time on, using the following controls:
Run Player
This is useful for looking at the information about any run in the marathon. They're all displayed in schedule order and you can click on the arrow on the right to see more details. You won't need to click on any of the play buttons, switching to the next run is automated elsewhere.
Preview/Program
This is a live feed of the OBS Preview and Program scenes. Preview can be used to check on edits or changes, whilst Program is being streamed to Twitch. The two icons in the middle change colour to show that the stream is live and the recording is active. If either feed isn't displaying anything, please ping @NickRPGreen
Twitch Control
This shows the information being sent to Twitch to update the Stream Title and Game Category, including tagging the runners in the Title. This should all be automated and should only be edited in case of an error.
Timer
This controls the timer that is displayed on the stream. Whilst active, most of the other controls are disabled.
From left to right the buttons are:
Play/Pause: The runner or commentator will likely do a countdown and you will click this when they say go. Whilst the timer is running, this switches to Pause, which is only needed if there's an issue.
Reset: Only used if there is a false start or something happens that causes the runner to restart.
Stop: When the runner calls time, click stop.
Forfeit: For the setup we have, this does the same as Stop, so isn't used.
Undo: When you push stop, the timer continues in the background. If you or the runner make a mistake and press Stop too early, the Undo button will continue the timer at the correct current time.
During a race, each runner will have their own individual Stop, Forfeit and Undo buttons, used as each runner finishes.
After a run, when you transition to Intermission, the timer will automatically reset ready for the next run.Â
Remember: always take instructions to start/stop from the runner from the 🔊HOST/TECH ROOM. This way the delay of their stream matches when you start and stop the timer.
Warning Message
This toggles a warning message that appears at the top of the game feed for each player. This is useful for warning viewers of flashing lights, disturbing content or any other moments you'd want to warn of.Â
The button turns green when the message is showing and the current state of the warning message will persist between runs and refreshing sources. Multiplayer runs will produce a button for each player, with the warning message only appearing over that player's feed.
Live Switch
This is where the majority of the action takes place. If you have a Stream Deck or similar device, this works much the same way, as they are simply programmable buttons that perform certain actions. Whilst the timer is running, most scene switch buttons are disabled to avoid accidentally switching whilst a run is in progress. Whilst each button appears self-explanatory, there are a couple of extra actions taking place on each.Â
Start Run: The main "Start The Next Run" button, press this when everyone is ready to start. Upon pressing, OBS will:
- immediately unmute the Runner's Mic Out Audio (see audio later about how audio works) meaning any talking in the STREAMING ROOM channel will be heard on the stream.
- start a local recording, which is what we use to upload to YouTube.
- after a short delay, switch to the Game Layout scene that matches the Game Layout code in the run's details, and also unmute the Runner's Game Out Audio.
Intermission: To go to intermission only after a run has ended. As you can probably work out, this does the opposite of the previous buttons. Upon pressing, OBS will:
- switch to the Intermission scene; during the transition, NodeCG will also automatically progress to the next run.
- set the OBS Preview to the scene the next runner will be using
- mute both the Runner's Mic Out and Game Out Audio, meaning you are free to talk in the LIVE channel without it going to the stream.
- stop the local recording
- switch the Runner Stream Source to the next runner, as per the number in the player's Stream code in the run details
Charity Video from Run: Does the same as the Intermission button but instead switches to the Video scene. This plays a random video about the charity and once the video ends, OBS will automatically switch back to Intermission. This should be used if the Intermission needs some time padding out, or it's been a while since a video was last played. Don't use this if we're behind and need to get the next run started quickly. Do not use this button if you've already gone to Intermission.
Charity Video from Intermission: This goes to the Video scene but without the audio changes, moving the run along or changing the Runner Stream Source. Use this if you've already gone to Intermission and then it's decided that a charity video should be played.
Opening: Go to the Opening scene. Staff will handle going to this scene.
Closing: If the last run of the day has concluded, press this to go to the Closing scene after you've gone to Intermission.
Tech Issue: If you have to advise the Host that there is a tech issue and we need to go to Intermission to resolve it, you should ping them on Discord first. You should pause the timer and the host will announce that there is an issue and we'll be right back; you should then press the Tech Issue Start button. This will go to intermission and mute the audio, but it won't stop the recording. At this point, you can jump into the 🔊LIVE Discord channel to talk to the host and runner. You or the host can jump into the 🔊HOST/TECH ROOM to talk to the audience during the intermission if desired and let them know any information you wish to share. Once the issue is over, press the Tech Issue Over button to continue the run - don't forget to unpause the timer as well.
This has some additional control for OBS, which for the most part is automated, but is likely your first port of call if there are any issues:
Preview/Program: Identical to the Preview/Program area on the Main Workspace.
Runner Stream Source: This is where the URL for the runner's stream is managed. Every runner will stream to a dummy Twitch channel which starts https://twitch.tv/speedruntoolsukstream. The key adds 1-4 to the end of that URL. The key is updated to the next runner automatically when the run updates, but if the runner's feed isn't showing on the preview during intermission, you can manually change to a different URL key here.Â
Scene Selection: A manual override for the Preview and Program scenes. Changing the program scene is automated and you should only change it here in an emergency. You can use the Preview scene to check the runner's stream looks correct during Intermission.
Output Status: This shows whether the stream is live and whether a recording is in session. If you're the first/last Tech of the day, you may be asked to Start/Stop the stream. Recording is automated elsewhere and should only be toggled in an emergency.
Live Audio Monitor: This shows all of the outputs of the current scene, all of which can be muted/unmuted and raised and lowered. The display above shows what you'd see during the Intermission. During a run, all of the stream audio comes from the player - they send their gameplay audio down one stereo channel and their mic, commentators and host down the other. This keeps everyone synced.
To ensure we can audio balance during the intermission, the runner's Game and Mics audio have two sources each. The "Mon" (monitor) sources can only be heard by OBS and are not sent to the stream. You'll be able to hear and adjust these during the intermission.Â
The "Out" sources are what is sent to the stream. These must remain muted during the intermission and will be unmuted automatically when the next run starts. Once you've balanced the monitor sources, you should adjust the corresponding out sources to match them.
The Host Room is a separate Discord channel that a host can use to chat with viewers during the Intermission. This shouldn't need muting, as it'll only produce sound when there's a Host talking in there. You'll be able to hear the Host Room through the NodeCG preview.
The Music output is the music player that plays during Intermission. You won't be able to hear it through NodeCG, that would be too distracting. It shouldn't ever need adjusting, but can be just in case.
As a general rule of thumb for balancing:
gameplay and music should normally peak at the top of the green area, with only loud sound ever peaking into the yellow
the runner, host and commentators should normally peak at the top of the yellow area, with only loud moments peaking into the red
Runners and commentators will have already been audio-balanced by the setup volunteer so that their output levels are correct. Don't ask them to adjust any further unless you think there's an issue on their end. You need to ensure that the output levels here are balanced correctly - if the runner's audio is always balanced the same way, you likely won't need to change the levels here.
If you're doing tech for a multiplayer run, you'll only see Player 1's audio during Intermission, and you'll always start with Player 1's audio when the run starts. Once the run goes live, any additional players' Out audio should remain muted, but you can use the Mon audio to balance it ready. Game audio can be swapped between runners if one player gets ahead in a race. Mic audio should only ever be swapped if there's an issue with Player 1's audio.
The Run Editor is where the run details are entered that will show on stream. All of these details should already be prepared and shouldn't need any manual entry unless changes are required. To do this, click on the Edit Run button (third circular button under the details) which will open up the Edit Run panel. Do not use any of the other buttons under the run info.
You shouldn't need to make any changes as the Setup Volunteer will go through these details and update them with the runner before they're handed over to you. You should also avoid making any changes to current run, either during the run, or the Intermission before it starts. Making changes to the run whilst at Intermission will cause the Intermission screen to refresh with the new details - even if they're details that aren't shown on the Intermission screen.
Notes about these fields:
Region isn't used and can be ignored - it doesn't matter if there's already information there.
Released can be used (you can also leave it blank) and should contain a four-digit year, unless the runner is running multiple games back-to-back.Â
Game (Twitch) should match Game unless the game's name isn't a registered Twitch category. If this is the case, this should have already been replaced, but it's worth checking with the runner in case they recommended a different category.
System can be used (you can also leave it blank).
Estimate must be used for any games, but can be ignored for interviews and setup blocks if preferred.
Setup Time must be filled in, but can be set to 0:00:00 if desired.
Layout Code must match the Layout Code shown on the runner's stream overlay - see below.
Team Name, YouTube, and Country Code are not used and can be ignored - it doesn't matter if there's already information there.
Name isn't used, the runner is shown on stream from the Twitch entry. Â
Pronouns can be left blank if a participant does not want any displayed. Pronouns are always shown on stream in lowercase.
Stream is the numbered version of "speedruntoolsukstream#" that the run should be streaming to. This must contain a single digit from 1-4.
Cam determines whether the runner has the webcam area shown on the layout. Any text, including leaving it blank, counts as yes. The webcam area will only hide if "no" is entered.
If the run is a race, there'll be a separate team at the bottom for each racer. In a solo run, there will just be one entry.Â
The other panels in the Runs tab shouldn't really be needed, though the Player Layout panel can be used to quickly swap race names around if the runners have set up in a different order than what has been entered. If you're on tech for a relay, a Staff member will help you through the Relay Control.
A Tech volunteer has many responsibilities to juggle, particularly when a run is coming to a close. It's important to ensure you have your next runner set up in good time so you can get back to the current run in time to stop the timer and transition to intermission. Your first job in your Tech shift will be to set up the runner for your first run and then close the previous run.
To give yourself the time needed, it's a good idea to ping the next runner 20-25 minutes before the current run is due to end. Don't worry about pinging any commentators, it's the runner's responsibility to have their commentators ready with them. Ask them to join you in the 🔊GREEN ROOM. If you've had no contact after five minutes, ping them again. If you've had no contact after 10 minutes, contact a Staff member.
If the Host of the upcoming run isn't already hosting, ping them to join you as well. If they're hosting the current run, you'll need to do any checks for them during the intermission.
You'll need to give the runner their stream key. The stream key for each runner should be advised in the stream schedule you've been provided.
In their Runner OBS stream settings, they should choose their closest Twitch server, enter the stream key you provide, and then start streaming. Visit the Twitch channel the runner should be streaming to. If their stream is not showing check that:
The runner is definitely streaming
The runner has entered their key correctlyÂ
If you're confident both of these are correct and the stream still isn't showing, contact a Staff member.
Check the stream looks correct:
The runner is using the correct stream layout
If incorrect, ask them to select a different scene in their OBS; you can check the schedule to see which one they should be using.
There are no black borders around the webcam or game feeds
If the runner's feed is purposefully black, ask them to show you some gameplay where the background isn't black. If there are black borders, ask them to adjust the crop filter on the game/camera source.
Check the stream layout code they're using is shown in their run on NodeCG
Check the player's run in the run editor on NodeCG for their run's layout code. In the example on the right, the layout code is "16X9_1P". If the layout code in NodeCG is incorrect, change it to match the code on the player's stream. The code must be entered EXACTLY as it appears on the runner's stream.Â
Check if you can hear them, Discord and the game audio
You'll do a full audio check during the intermission, but check you can at least hear each source so you've got time to fix it if not.
Double-check the run details on NodeCG
Check with the runner, commentators and host. Ensure they're happy that their names and pronouns are being displayed correctly and that the game's run information is correct. Remember, it's the runner's Twitch entry that is displayed on stream, not their Name entry.Â
Once you're satisfied the runner is visually set up, you'll need to wait for the current run to end. Do not join the 🔊LIVE Discord channel until you've taken the stream to the Intermission screen. If we're good on time ping the Host in the Runner General text chat to let them know if you want to go straight to a charity video when the run ends. If we're behind, let them know to just go to intermission.
Ensure you're listening to the NodeCG stream before the run finishes, ready to stop the timer. If you don't quite finish setting up the next runner, you can finish during the intermission. Listen to the audio through NodeCG and hit the stop button on the timer when the runner calls time. The runner and host should then wrap up their comms. If you feel they're taking too long or we're behind, ping the host instructions to speed it up. Once the host has declared they're ready to go to intermission or a charity video, hit the corresponding button on the Live Switch Panel.
It's usually polite to wait for the current runners to leave the 🔊LIVE voice channel, but if they're taking too long, feel free to ask them to jump out or into the 🔊GREEN ROOM, especially if we're behind schedule. Runners and commentators cannot enter the 🔊LIVE voice channel freely, you'll need to drag them in from the 🔊GREEN ROOM.Â
Now's the time to check everyone's audio using the Mon sources on the Live Audio Monitor.
Get the runner to play a particularly noisy section of the game, and get them to adjust their own OBS slider or in-game volume until the audio is peaking at the top of the green area.
Ask each person, in turn, to say a few words and check that each person is peaking at the top of the orange area. If they need adjusting, ask them to adjust their own audio levels first, and then ask the runner to adjust their output levels on Discord. This is done by right-clicking on a speaker and using the User Volume in the menu shown on the right.Â
If either audio is too quiet and the runner can't turn it up any further, ask the runner to right-click on the source in OBS, click 'Filters', and add a 'Gain' filter. Ask them to adjust this filter until the volume is correct. It's better for them to be too loud as you have more control to turn them down than the other way around.
Check the OBS Preview to ensure the runner's stream is showing correctly on the correct scene. Make any final adjustments. If we're ahead of schedule, play a charity video and give the intermission time to play. Ideally, you want to start the run at the time on the original schedule, but it doesn't hurt to start early rather than leave the audience on the intermission screen for ages.Â
Check with the runner exactly when the timer should start and finish, and ask them to give you a rough idea of what should be happening about five minutes before the end of the run. This means when you're setting up the next runner, you'll know when you've got roughly five minutes left to get back to NodeCG to end their run.
When everyone is ready and you're happy to start, ask the host to give a clear countdown once you've left the channel. Listen to the audio through NodeCG and press the "Start Run" button once the host's countdown has ended to switch scenes. Keep an eye on the audio levels and adjust if necessary, you should see the "Out" inputs unmute automatically.
When the runner does their countdown for the timer to start, hit start. That's it, the run is underway! Once you're happy, feel free to drop back into the 🔊GREEN ROOM to chat with others - just make sure you're keeping an eye on the stream as you're the first port of call should any issues occur. If issues do occur, troubleshoot and suggest fixes as best you can. If you cannot find a solution, ping a Staff Member.