Back to blog
ai-context

AI Director Broadcast Knowledge

Broadcast domain knowledge and AI instructions for the Sim RaceCenter AI Director pipeline — view selection, sequence completion, camera resolution, race event types, and editorial guidelines.

·Sim RaceCenter Team·14 min read
On this page

1. System Overview

Sim RaceCenter automates live iRacing broadcasts. AI Director selects camera/scene sequences every 10–30 seconds.

Components: Race Control (operator config + AI pipeline) · Director App (executes sequences against OBS, iRacing, Discord, YouTube)

Rig roles:

  • Driver Rig — publishes telemetry only; never receives commands
  • Media/Director Rig — sole sequence executor

Broadcast loop: Operator checks in → Planner generates template library → Executor polls every 10–30s → fills best template → Director App executes against hardware.


2. AI Tiers

Tier 1: Planner (once at check-in)

Generates 20–30 SequenceTemplate documents for all expected broadcast scenarios.

Inputs: intent registry, hardware health, session config (drivers, car numbers, OBS scenes, camera groups), operator sequences, race context, Race Director's Notes, Session Summary

SessionTemplate Categories
Racepre-green, opening, rhythm, action, pit-cycle, caution, closing, field
Practicerhythm, action, field
Qualifyingaction, field

Tier 2: Executor (every 10–30s)

Selects best template; fills all ${varName} placeholders with concrete live values.

Inputs: all session templates, live race state (flags, leaderboard top-20, battles, driver history, recent events), race context from Director (session type, track, laps remaining, pitting cars, current OBS scene, battles), pending operator commands (always highest priority), Race Director's Notes, Session Summary

Output: fully-populated PortableSequence ready for immediate execution.


3. OBS Feeds

Two video source types. Every sequence must use the correct feed.

FeedOBS SceneControlShows
Driver Onboard<DriverName>_Onboard (one per driver)obs.switchSceneDriver's personal rig: cockpit/wheel cam, HUD, face cam, full audio
Race DirectorSingle shared scene (e.g., Race_Director)obs.switchScene + broadcast.showLiveCamiRacing broadcast camera output

Driver Onboard rules:

  • A-list source — use at higher frequency than Race Director (≈2:1 ratio)
  • Do NOT use when driver is in pits — view is static overhead

Race Director rules:

  • Always issue both obs.switchScene AND broadcast.showLiveCam together when targeting a specific car
  • Best for: wide shots showing gaps, blimp transitions, field cars with no onboard scene, pit stops

Intent Mapping

GoalIntents
Driver personal streamobs.switchScene → driver onboard scene
Specific car + camera angleobs.switchScene → Race Director scene + broadcast.showLiveCam (carNum + camGroup)
Change camera angle onlybroadcast.showLiveCam only
Overlayobs.switchScene → utility scene

Sequence Patterns

Battle (both SimRaceCenter drivers):

obs.switchScene → Driver_A_Onboard    system.wait 10000ms
obs.switchScene → Driver_B_Onboard    system.wait 10000ms
obs.switchScene → Race_Director + broadcast.showLiveCam carNum:A camGroup:TV2    system.wait 8000ms

Solo driver feature:

obs.switchScene → Driver_A_Onboard    system.wait 15000ms
obs.switchScene → Race_Director + broadcast.showLiveCam carNum:A camGroup:Chase    system.wait 10000ms
obs.switchScene → Driver_A_Onboard    system.wait 10000ms

Field car (no onboard scene):

obs.switchScene → Race_Director + broadcast.showLiveCam carNum:42 camGroup:TV1    system.wait 12000ms

4. Sequences & Intents

PortableSequence — universal wire format. Ordered steps; each step = intent + payload.

system.wait is the only blocking step. All other intents are fire-and-forget. Always insert system.wait after every obs.switchScene and broadcast.showLiveCam. A sequence without waits fires all commands simultaneously.

Variable placeholders: ${varName} resolved by Executor before delivery. Unknown intents → skipped. Unresolved required variables → step skipped.

Priority

PriorityExecution
incidentInterrupt current sequence immediately
cautionShow soon — don't queue behind long sequences
normalStandard queue

5. iRacing Domain Knowledge

Session Types

TypePriorityCoverage
RacePrimaryAll template categories; full narrative arc
QualifyingSecondaryHot lap focus; solo driver features; no battles
PracticeLowSolo driver and scenic
WarmupVery lowMinimal
CooldownVery lowPodium/celebration only

Race Types

  • Sprint (15–45 min): Fast pacing, frequent cuts
  • Endurance (1–24 hrs): Slow mid-race; pit strategy emphasis; intense at start/end
  • Heat Racing: Narrative continuity across heats
  • Time Trial: Solo; split comparisons

Multi-Class Priority

  • Cover leading class unless another has more dramatic action
  • Show class interactions when faster cars lap slower ones
  • Track each class lead battle simultaneously

Flag States and Required Broadcast Response

FlagBroadcast ResponsePriority
GreenNormal coverage — follow narrative (battles, leaders, strategy)Normal
Yellow / Full CautionImmediately show the incident → safety vehicles → field packing → pit stops during cautionCritical
Yellow / LocalBrief sector incident shot, then return to active racing elsewhereHigh
RedShow causing incident → field stopping → wide shotsCritical
WhiteFocus leaders and closest challenger; build intensityHigh
CheckeredWinner crossing line → celebration → top finishersCritical
BlackBrief shot of penalized driverNormal
MeatballShow damaged car (external camera if possible)Normal–High

Caution rule: Hold on incident ≥10–15s before cutting away.

Camera Groups

Session-specific — reported by iRacing at check-in (groupNum + name, e.g. 3:"TV2", 8:"Pit_Lane_Fixed"). Generic names like "TV1" are illustrative; always use session-provided IDs.

Camera group types:

CategoryTypical UseTypical Hold
Trackside closeIndividual car detail, battles at a corner3–8s
Trackside medium2–3 cars together, overtakes, racing line5–12s
Trackside widePack racing, starts, restarts, field overview3–10s
In-car POVImmersion, tense moments — use sparingly5–15s
Behind/followingFollowing a driver, pit stops5–20s
High overheadTrack layout, field spread, establishing shots3–8s
Artistic fixedAtmosphere, venue — very sparingly during racing3–6s
Pit roadPit stops (stay for entire stop)Full stop duration

Camera variety rules:

  • Same camera group: max 3 consecutive uses
  • Rotate ≥4 drivers per 2 minutes
  • Static:dynamic ratio 3:1; Blimp/Scenic as transitions only

Shot Pacing

MetricRule
Minimum hold3s
Maximum static hold30s
Battle coverage8–15s alternating drivers
Leader spotlight15–25s

Sprint pacing: Start 2–3s → Early 5–8s → Mid 8–15s → Late 5–10s → Final lap 3–5s

Cut when: new battle, incident, leader about to be passed, contender pitting, shot >20s, nothing interesting.

Don't cut: overtake in progress, car mid-corner in dramatic moment, active close battle, hot lap, shot <3s.

Telemetry Thresholds

ConditionGapAction
Battle (ENGAGED)<1.0sCover immediately
Battle (CLOSING)<2.0s shrinkingMonitor
Comfortable>3.0sLower priority
Breakaway>10.0sVariety only
Fastest lapAny reductionMention/cover
Lap time degradationConsistent increaseAnticipate pit/tyre issue

Standard Camera Sequences

Battle: TV2 (corner entry, both cars) → TV1 (wheel-to-wheel) → Chase (attacking car) → TV2/TV3 (result)

Leader spotlight: TV1/TV2 (establish) → Cockpit/Chase (personal) → TV3 wide (show gap)

Incident: Nearest cam → hold 10–15s → show effect on others → multiple angles for significant incidents

Pit stop: Pit Lane cam (from entry) → hold entire stop → rejoining → check position

Narrative Phases

PhaseTypical Content
Race startCharge to turn 1: who got a good start, contact, early incidents
Opening lapsField sorting: early battles, aggressive moves
Mid-raceTyre management, fuel strategy, evolving battles — show the chess match
Pit windowsWho pits first, undercut/overcut, track position changes
Late raceTyres degrading, desperation moves, gaps closing
Final lapAll focus on position-deciding battles
Post-raceWinner celebration, final results, key moment replays

6. Race Event Types

Structured facts from simulator rigs. Driver names are resolved on-rig — AI always sees real names, not simulator indices.

Category 1: Lifecycle Events

TypeBroadcast Meaning
RACE_GREENRace has started — activate full broadcast coverage
RACE_CHECKEREDRace ended — switch to winner/celebration coverage
SESSION_STATE_CHANGESession phase changed (e.g., Race → Cooldown)
SESSION_TYPE_CHANGESession type changed (Practice → Qualify → Race)
SESSION_ENDEDSession over — wrap up broadcast
SESSION_LOADEDNew session loaded on a rig
IRACING_CONNECTEDRig connected to iRacing — rig is online
IRACING_DISCONNECTEDRig lost simulator connection — coverage may have gap
PUBLISHER_HELLORig has come online and started publishing
PUBLISHER_HEARTBEATRig is alive and publishing (periodic)
PUBLISHER_GOODBYERig is going offline gracefully

Category 2: Flag Events

Require immediate broadcast response. Do not cover unrelated content while a priority flag is active.

TypeBroadcast Response
FLAG_GREENNormal racing — resume standard coverage
FLAG_YELLOW_FULL_COURSECritical — show incident immediately, then field under caution
FLAG_YELLOW_LOCALHigh — brief sector incident shot, return to racing
FLAG_REDCritical — show causing incident → field stopping → wide coverage
FLAG_WHITEHigh — focus leaders and closest challenger, build intensity
FLAG_BLUE_DRIVERBrief shot of the driver being shown blue (about to be lapped)
FLAG_BLACK_DRIVERBrief shot of penalised driver
FLAG_MEATBALL_DRIVERShow damaged car — external camera preferred
FLAG_DEBRISBrief debris location shot, return to racing
FLAG_DISQUALIFYShow DQ'd driver leaving the race

Category 3: Lap & Sector Events

TypeBroadcast Relevance
LAP_COMPLETEDLow — timing reference, use to confirm position counts
PERSONAL_BEST_LAPMedium — driver beat their own best; good for on-screen stat
SESSION_BEST_LAPHigh — fastest lap of the session; cover the lap
CLASS_BEST_LAPHigh — fastest in class; cover if that class is in focus
LAP_TIME_DEGRADATIONMedium — consistent increase anticipates a pit stop or tyre issue
STINT_MILESTONEMedium — driver has completed a long stint milestone
STINT_BEST_LAPMedium — fastest lap this stint; indicates fresh pace

Category 4: Position & Battle Events

TypeBroadcast Relevance
BATTLE_ENGAGEDHigh — gap below 1.0s; immediate camera opportunity
BATTLE_CLOSINGMedium — gap below 2.0s and shrinking; monitor for imminent pass
BATTLE_BROKENMedium — battle resolved; show outcome, then move to next story
OVERTAKEHigh — position swap; immediate camera opportunity
OVERTAKE_FOR_LEADCritical — lead changed; always cover
OVERTAKE_FOR_CLASSHigh — class lead changed; cover if that class is in focus
POSITION_CHANGEMedium — leaderboard position changed (not an overtake — e.g., pit stop)
LAPPED_TRAFFIC_AHEADMedium — class leader approaching slower traffic
BEING_LAPPEDLow — driver is being caught by leader

Category 5: Pit & Strategy Events

TypeBroadcast Relevance
PIT_ENTRYMedium — strategy story begins; switch to Pit Lane camera
PIT_STOP_BEGINMedium — car is in the pit box; hold Pit Lane camera
PIT_STOP_ENDMedium — stop complete; show car rejoining
PIT_EXITMedium — car back on track; check if position was maintained
FUEL_LOWMedium — driver likely to stop soon; anticipate pit entry
FUEL_LEVEL_CHANGELow — fuel adjusted; strategy context
OUT_LAPLow — driver on an out lap after pitting; fresh tyres incoming

Category 6: Incidents & Safety Events

TypeBroadcast Relevance
OFF_TRACKHigh — car has left the racing surface; show immediately
BACK_ON_TRACKMedium — car has recovered; show return
BIG_HITCritical — major contact detected; interrupt coverage
SPIN_DETECTEDHigh — car is spinning; show immediately
STOPPED_ON_TRACKHigh — car has stopped mid-track; safety risk
SLOW_CAR_AHEADMedium — slow car creating traffic/hazard
INCIDENT_POINTMedium — driver received incident points
TEAM_INCIDENT_POINTMedium — team-level incident count increase
INCIDENT_LIMIT_WARNINGHigh — driver approaching black flag limit

Category 7: Identity & Roster Events

TypeBroadcast Relevance
DRIVER_SWAP_INITIATEDHigh — driver change starting; show handover
DRIVER_SWAP_COMPLETEDHigh — new driver is in the car
IDENTITY_RESOLVEDLow — driver name confirmed (setup)
IDENTITY_OVERRIDE_CHANGEDLow — display name updated
ROSTER_UPDATEDLow — lineup change

Category 8: Environment Events

TypeBroadcast Relevance
WEATHER_CHANGEMedium — weather is shifting; may affect strategy
TRACK_TEMP_DRIFTLow — track temperature changing; tyre context
WIND_SHIFTLow — wind conditions changed
TIME_OF_DAY_PHASEMedium — dawn/dusk transitions; atmospheric shots appropriate

Cloud-Synthesised Events

Generated by Race Control after correlating data from multiple rigs. Higher-level insights not visible from a single rig.

TypeWhat it means
FOCUS_VS_FOCUS_BATTLETwo or more SimRaceCenter team drivers are battling each other
FOCUS_GROUP_ON_TRACKMultiple team drivers are in proximity — rich coverage opportunity
FOCUS_GROUP_SPLITPreviously grouped team drivers have separated
STINT_HANDOFF_HANDOVERDriver swap correlated across rigs — confirmed handover
STINT_BATON_PASSThe stint baton (lead role) has transferred to a new driver
RIG_FAILOVERA rig's heartbeat has lapsed; another rig is covering the same car
UNDERCUT_DETECTEDTwo cars' pit timing patterns suggest an undercut attempt
IN_LAP_DECLAREDA driver's lap time degradation matches a typical in-lap pattern
SESSION_LEADER_CHANGEThe overall or class leader has changed

Event Reasoning Patterns

  • BATTLE_ENGAGED persisting → sustained narrative, extend coverage
  • OVERTAKE then BATTLE_ENGAGED → overtakee fighting back; stay on this story
  • Back-to-back PIT_EXIT for battling cars → possible undercut; check lead
  • LAP_TIME_DEGRADATION without PIT_ENTRY → driver in trouble or conserving; anticipate action
  • FOCUS_VS_FOCUS_BATTLE → strongest single signal; both drivers are our team
  • DRIVER_SWAP_INITIATED → cut to that driver's scene for the handover

7. Editorial Guidelines

Operator-Set Context

Race Director's Notes — pacing preferences, signature shots, hardware quirks, track-specific camera recommendations. Always apply; overrides all defaults.

Race Session Summary — rivalry, championship stakes, broadcast tone. Use to weigh which drivers/moments matter most.

Operator intent beats default rules.

Race Phase Detection

ConditionPhase
Caution flag activecaution
Final 5 laps or <5 minutes remainingclosing
First 3 laps of the raceopening
Cars actively pittingpit-cycle
Active battles detectedaction
Defaultrhythm

Templates designed for the current phase should score higher in selection.

Structural Rules

  • Narrative arc required: establish → build → action → reaction → resolve
  • Open with wide/medium establishing shot before tight close-up
  • TTS must reference specific driver names and race context — not generic
  • Vary hold times naturally across steps
  • Max 2 consecutive steps with same camera group