Desuq Cafe

Back to Devlog
OBS WebSocket Unreal Tools C++

OBS WebSocket Plugin for Unreal Engine

Why This Exists

Wanted to control OBS directly from Unreal Engine — switch scenes based on gameplay, automate recording, save replay highlights, sync media playback with Sequencer timelines. Nothing on the Marketplace covered even half of what the OBS WebSocket protocol can do.

Scope

95% coverage of the obs-websocket 5.x protocol. The only things intentionally left out are hotkey triggering (OBS devs explicitly recommend against it), diagnostic endpoints, and extremely niche features like vendor APIs and deinterlace settings.

Multiple Entry Points

Built five different ways to interact with OBS depending on your use case:

  • OBS Component — drop on any Actor, configure in Details panel, zero code
  • Trigger Volume — automatic OBS actions when actors enter/exit areas
  • Sequencer Track — timeline-based control synced to Level Sequences
  • Game Subsystem — global access from anywhere in game code
  • Editor Subsystem — control OBS from the editor without entering Play mode

Sequencer Integration

This was the most complex part. Four track paradigms:

  • Event Trigger — discrete actions at specific timeline points (start recording, switch scene, save replay)
  • Keyframeable — smooth interpolation via curve editor (volume fades, transform animation, color shifts)
  • Continuous State — hold a state while playhead is inside a section (mute during cutscene, force visibility)
  • Media Sync — OBS media cursor follows Sequencer timeline with drift correction

33ms action throttling, deduplication, batch requests (up to 48 per batch), and pre-animated state restoration when playback stops.

Take Recorder Sync

Experimental integration that auto-starts OBS recording when Take Recorder begins, creates chapter markers from marked frames, and logs file correlation between take assets and OBS recordings. Pre-roll and post-roll support to compensate for WebSocket latency.

Status

Feature-complete. What remains is QA testing and fixing edge cases in the Details panel UI. Planning for Unreal Marketplace release once that’s done.

Other posts