Skip to content

Desuq Cafe

Documentation menu

Quick Start

The easiest way to get started:

  1. Add OBS Controller component to any Actor
  2. In the Features picker at the top of the Details panel, turn on the domains you want (it starts with Scenes + Recording & Streaming, and Connection is always on)
  3. In the Connection card, enter your connection settings and click Connect
  4. Use the built-in controls or bind to events in Blueprints

The Details panel provides full control over OBS without writing any code, and shows only the features you picked, so a minimal component stays uncluttered.

See OBS Component for the full component reference.

Method 2: OBS Trigger Volume (For automatic triggers)

Create areas that automatically control OBS when players enter or exit:

  1. Place an OBS Trigger Volume actor in your level
  2. Configure the trigger shape (Box or Sphere)
  3. Set up conditions (e.g., only trigger while recording)
  4. Add actions to execute (e.g., switch scene, save replay)

Perfect for:

  • Switching scenes when entering different game areas
  • Saving replay highlights when reaching checkpoints
  • Muting/unmuting audio in specific zones

See OBS Trigger Volume for the full trigger reference.

Method 3: Blueprint Scripting

// Get the OBS Subsystem
Get Game Instance → Get Subsystem (InhyeongOBSSubsystem)

// Connect to OBS
Connect (Host: "localhost", Port: 4455, Password: "your_password")

// Control OBS
Set Current Scene (Scene Name: "Gaming")
Start Record
Save Replay Buffer

// React to events
Bind to On Scene Changed
Bind to On Replay Buffer Saved

Method 4: C++ Integration

// Get subsystem
UInhyeongOBSSubsystem* OBS = GetGameInstance()->GetSubsystem<UInhyeongOBSSubsystem>();

// Connect and control
OBS->Connect("localhost", 4455, "password");
OBS->SetCurrentScene("Gaming");
OBS->StartRecord();

// Use handlers for advanced features
if (UInhyeongOBSMediaInputs* Media = OBS->GetMediaInputs())
{
    Media->PlayMedia("Background Music");
}

if (UInhyeongOBSFilters* Filters = OBS->GetFilters())
{
    Filters->CreateSourceFilterFromString("Webcam", "Color Correction", "color_filter_v2", "");
    Filters->SetSourceFilterEnabled("Webcam", "Color Correction", true);
}

// Bind to events (dynamic delegates for UFUNCTIONs)
OBS->OnReplayBufferSaved.AddDynamic(this, &AMyActor::HandleReplaySaved);

// Or use native delegates with lambdas
OBS->GetOutputs()->OnReplayBufferSavedNative.AddLambda([](const FString& Path) {
    UE_LOG(LogTemp, Log, TEXT("Saved: %s"), *Path);
});