Subsystem API
UInhyeongOBSSubsystem은 OBS WebSocket 연결을 소유하고 100개 이상의 Blueprint 호출 가능 메서드를 제공하는 UGameInstanceSubsystem입니다. 레벨 로드 사이에서도 유지되며, OBS 제어를 위한 기본 파사드 역할을 합니다.
C++에서 접근하려면:
UInhyeongOBSSubsystem* OBS = GetGameInstance()->GetSubsystem<UInhyeongOBSSubsystem>();
Blueprint에서는: Get Game Instance → Get Subsystem (InhyeongOBSSubsystem).
참고: OBS Component(UInhyeongOBSComponent)는 이 메서드들 대부분을 액터별로 미러링하며, 장면 감시 기능을 추가로 제공합니다(OBS Component 참조). 여기에 노출되지 않은 핸들러 수준 메서드는 GetClient()->GetXxx()를 통해 접근합니다(Handlers API 참조).
이 페이지 전반에서, BlueprintPure 게터(GetCached* / Is* / 상태 읽기)는 **(Pure)**로 표시됩니다. 그 외 나머지는 BlueprintCallable입니다. Pure가 아닌 게터 대부분은 비동기로 동작합니다. OBS에 요청을 보내고 결과는 델리게이트 이벤트를 통해 도착합니다(Events 참조).
연결
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
Connect | (FString Host = "localhost", int32 Port = 4455, FString Password = "", bool bAutoReconnect = true) | OBS WebSocket 서버에 연결하고 인증합니다. |
SetAutoReconnect | (bool bAutoReconnect) | 자동 재연결을 활성화/비활성화합니다. |
Disconnect | () | 연결을 닫고 대기 중인 요청을 지웁니다. |
IsConnected | () → bool | (Pure) 완전히 연결되어 식별된 상태이면 true입니다. |
GetConnectionState | () → EOBSConnectionState | (Pure) 현재 연결 상태(Disconnected/Connecting/Authenticating/Connected)입니다. |
GetClient | () → UInhyeongOBSWebSocketClient* | (Pure) 고급 사용 및 핸들러 접근을 위한 직접 클라이언트 접근입니다. |
장면 모음
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetSceneCollectionList | () | 장면 모음 목록을 가져옵니다. |
SetCurrentSceneCollection | (FString SceneCollectionName) | 활성 장면 모음을 전환합니다. |
CreateSceneCollection | (FString SceneCollectionName) | 새 장면 모음을 만듭니다. |
GetCachedSceneCollections | () → TArray<FString> | (Pure) 캐시된 장면 모음 이름 목록입니다. |
GetCurrentSceneCollectionName | () → FString | (Pure) 캐시된 현재 활성 장면 모음입니다. |
프로필
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetProfileList | () | 프로필 목록을 가져옵니다. |
SetCurrentProfile | (FString ProfileName) | 활성 프로필을 전환합니다. |
CreateProfile | (FString ProfileName) | 새 프로필을 만듭니다. |
RemoveProfile | (FString ProfileName) | 프로필을 삭제합니다. |
GetCachedProfiles | () → TArray<FString> | (Pure) 캐시된 프로필 이름 목록입니다. |
GetCurrentProfileName | () → FString | (Pure) 캐시된 현재 활성 프로필입니다. |
비디오 설정
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetVideoSettings | () | 현재 비디오 설정을 가져옵니다. |
SetVideoSettings | (FOBSVideoSettings Settings) | 전체 비디오 설정을 지정합니다. |
SetBaseResolution | (int32 Width, int32 Height) | 기본(캔버스) 해상도를 설정합니다. |
SetOutputResolution | (int32 Width, int32 Height) | 스케일된 출력 해상도를 설정합니다. |
SetFPS | (int32 FpsNumerator, int32 FpsDenominator = 1) | 출력 프레임 레이트를 설정합니다. |
GetCachedVideoSettings | () → FOBSVideoSettings | (Pure) 캐시된 비디오 설정입니다. |
방송 서비스 설정
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetStreamServiceSettings | () | 현재 방송 서비스 설정을 가져옵니다. |
SetStreamServiceSettings | (FOBSStreamServiceSettings Settings) | 방송 서비스 설정을 지정합니다. |
SetSimpleRTMPSettings | (FString Server, FString StreamKey) | 커스텀 RTMP 서버와 스트림 키를 구성합니다. |
GetCachedStreamServiceSettings | () → FOBSStreamServiceSettings | (Pure) 캐시된 방송 서비스 설정입니다. |
장면
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetSceneList | () | 장면 목록을 가져옵니다. |
SetCurrentScene | (FString SceneName) | 활성 프로그램 장면을 전환합니다. |
GetCurrentSceneName | () → FString | (Pure) 캐시된 현재 활성 장면 이름입니다. |
GetCachedScenes | () → TArray<FOBSScene> | (Pure) 캐시된 장면 목록입니다. |
장면 항목 변형
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetSceneItemTransform | (FString SceneName, int32 SceneItemId) | 장면 항목의 변형을 가져옵니다. |
SetSceneItemTransform | (FString SceneName, int32 SceneItemId, FOBSSceneItemTransform Transform) | 장면 항목의 전체 변형을 설정합니다. |
SetSceneItemPosition | (FString SceneName, int32 SceneItemId, float X, float Y) | 위치만 설정합니다. |
SetSceneItemRotation | (FString SceneName, int32 SceneItemId, float Rotation) | 회전(도 단위)만 설정합니다. |
SetSceneItemScale | (FString SceneName, int32 SceneItemId, float ScaleX, float ScaleY) | 스케일만 설정합니다. |
SetSceneItemCrop | (FString SceneName, int32 SceneItemId, int32 Left, int32 Top, int32 Right, int32 Bottom) | 자르기 경계를 설정합니다. |
SetSceneItemBounds | (FString SceneName, int32 SceneItemId, EOBSBoundsType BoundsType, float BoundsWidth, float BoundsHeight, int32 BoundsAlignment = 0) | 바운딩 박스 동작을 설정합니다. |
GetSceneItemId | (FString SceneName, FString SourceName) | 소스 이름을 숫자 장면 항목 ID로 변환합니다. |
장면 항목 CRUD
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
CreateSceneItem | (FString SceneName, FString SourceName, bool bEnabled = true) | 기존 소스를 장면에 추가합니다. |
RemoveSceneItem | (FString SceneName, int32 SceneItemId) | 장면에서 항목을 제거합니다. |
DuplicateSceneItem | (FString SceneName, int32 SceneItemId, FString DestinationSceneName = "") | 항목을 복제합니다(선택적으로 다른 장면으로). |
장면 항목 잠금 / Z 순서 / 블렌드
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetSceneItemLocked | (FString SceneName, int32 SceneItemId) | 잠금 상태를 가져옵니다. |
SetSceneItemLocked | (FString SceneName, int32 SceneItemId, bool bLocked) | 잠금 상태를 설정합니다. |
GetSceneItemIndex | (FString SceneName, int32 SceneItemId) | z 순서 인덱스를 가져옵니다(0 = 뒤). |
SetSceneItemIndex | (FString SceneName, int32 SceneItemId, int32 ItemIndex) | z 순서 인덱스를 설정합니다(0 = 뒤). |
GetSceneItemBlendMode | (FString SceneName, int32 SceneItemId) | 블렌드 모드를 가져옵니다. |
SetSceneItemBlendMode | (FString SceneName, int32 SceneItemId, EOBSBlendMode BlendMode) | 블렌드 모드를 설정합니다. |
녹화
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
StartRecord | () | 녹화를 시작합니다. |
StopRecord | () | 녹화를 중지합니다. |
ToggleRecord | () | 녹화를 토글합니다. |
PauseRecord | () | 진행 중인 녹화를 일시 정지합니다. |
ResumeRecord | () | 일시 정지된 녹화를 재개합니다. |
ToggleRecordPause | () | 일시 정지/재개를 토글합니다. |
GetRecordStatus | () | 녹화 상태를 가져옵니다. |
GetRecordDirectory | () | 녹화 디렉터리를 가져옵니다(OnRecordDirectoryReceived 발생). |
SetRecordDirectory | (FString Directory) | 녹화 디렉터리를 설정합니다(다음 녹화부터 적용). |
GetCachedRecordDirectory | () → FString | (Pure) 캐시된 녹화 디렉터리입니다. |
SplitRecordFile | () | 진행 중인 녹화를 새 파일로 분할합니다. |
CreateRecordChapter | (FString ChapterName = "") | 챕터 마커를 추가합니다(Hybrid MP4, OBS 30.2.0 이상 전용). |
방송
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
StartStream | () | 방송을 시작합니다. |
StopStream | () | 방송을 중지합니다. |
ToggleStream | () | 방송을 토글합니다. |
GetStreamStatus | () | 방송 상태를 가져옵니다. |
SendStreamCaption | (FString CaptionText) | CEA-608 방송 자막 텍스트를 전송합니다(방송이 활성화된 상태여야 합니다). |
가상 카메라
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
StartVirtualCam | () | 가상 카메라를 시작합니다. |
StopVirtualCam | () | 가상 카메라를 중지합니다. |
ToggleVirtualCam | () | 가상 카메라를 토글합니다. |
GetVirtualCamStatus | () | 가상 카메라 상태를 가져옵니다. |
IsVirtualCamActive | () → bool | (Pure) 캐시된 가상 카메라 활성 상태입니다. |
Replay Buffer
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
StartReplayBuffer | () | Replay Buffer를 시작합니다. |
StopReplayBuffer | () | Replay Buffer를 중지합니다. |
ToggleReplayBuffer | () | Replay Buffer를 토글합니다. |
SaveReplayBuffer | () | 현재 Replay Buffer 내용을 디스크에 저장합니다. |
GetReplayBufferStatus | () | Replay Buffer 상태를 가져옵니다. |
IsReplayBufferActive | () → bool | (Pure) 캐시된 Replay Buffer 활성 상태입니다. |
일반 출력
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetOutputList | () | 모든 출력 목록을 가져옵니다. |
GetOutputStatus | (FString OutputName) | 특정 출력의 상태를 가져옵니다. |
GetOutputSettings | (FString OutputName) | 특정 출력의 설정을 가져옵니다. |
SetOutputSettings | (FString OutputName, FString JsonSettings) | JSON으로 출력 설정을 지정합니다. |
StartOutput | (FString OutputName) | 특정 출력을 시작합니다. |
StopOutput | (FString OutputName) | 특정 출력을 중지합니다. |
ToggleOutput | (FString OutputName) | 특정 출력을 토글합니다. |
GetCachedOutputs | () → TArray<FOBSOutput> | (Pure) 캐시된 출력 목록입니다. |
오디오
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetInputList | (FString InputKind = "") | 입력 목록을 가져옵니다. 선택적으로 종류별로 필터링합니다. |
SetInputMute | (FString InputName, bool bMuted) | 입력의 음소거 상태를 설정합니다. |
ToggleInputMute | (FString InputName) | 입력의 음소거를 토글합니다. |
SetInputVolume | (FString InputName, float VolumeDb) | 입력의 볼륨을 dB 단위로 설정합니다. |
SetVolumeMetersEnabled | (bool bEnable) | 고빈도 InputVolumeMeters 이벤트를 구독합니다(기본값: 비활성화). |
SetInputActiveStateEventsEnabled | (bool bEnable) | InputActiveStateChanged 이벤트를 구독합니다(기본값: 비활성화). |
고급 오디오
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetInputAudioBalance | (FString InputName) | 스테레오 밸런스를 가져옵니다(0=L, 0.5=C, 1=R). |
SetInputAudioBalance | (FString InputName, float Balance) | 스테레오 밸런스를 설정합니다. |
GetInputAudioSyncOffset | (FString InputName) | 동기화 오프셋(ms)을 가져옵니다. |
SetInputAudioSyncOffset | (FString InputName, int32 OffsetMs) | 동기화 오프셋을 설정합니다(-950~20000 ms). |
GetInputAudioMonitorType | (FString InputName) | 오디오 모니터 유형을 가져옵니다. |
SetInputAudioMonitorType | (FString InputName, EOBSMonitorType MonitorType) | 오디오 모니터 유형을 설정합니다. |
GetInputAudioTracks | (FString InputName) | 트랙별 활성화 상태를 가져옵니다. |
SetInputAudioTracks | (FString InputName, FOBSAudioTracks Tracks) | 모든 트랙 활성화 상태를 설정합니다. |
SetInputAudioTrack | (FString InputName, int32 TrackNumber, bool bEnabled) | 특정 트랙(1~6) 하나의 활성화 상태를 설정합니다. |
GetSpecialInputs | () | 기본 데스크톱/마이크 오디오 장치를 가져옵니다. |
GetCachedSpecialInputs | () → FOBSSpecialInputs | (Pure) 캐시된 특수 입력입니다. |
마이크 / 음성 활동 감지
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
EnableMicActivityDetection | (FString InputName, float ThresholdDb = -40, float AttackSeconds = 0.05, float ReleaseSeconds = 0.5) | 디바운스된 발화 중/대기 감지를 시작합니다(볼륨 미터 자동 활성화). |
DisableMicActivityDetection | (FString InputName) | 입력에 대한 감지를 중지합니다(미터 구독은 유지). |
IsMicActive | (FString InputName) → bool | (Pure) 현재 디바운스된 발화 상태입니다(등록되지 않은 경우 false). |
입력 (CRUD)
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
CreateInput | (FString SceneName, FString InputName, FString InputKind, FString InputSettingsJson = "", bool bSceneItemEnabled = true) | 새 입력을 만들고 장면에 추가합니다. |
RemoveInput | (FString InputName) | 입력을 제거합니다(사용 중이어선 안 됩니다). |
SetInputName | (FString InputName, FString NewInputName) | 입력 이름을 변경합니다. |
GetInputKindList | (bool bUnversioned = false) | 사용 가능한 입력 종류를 가져옵니다. |
GetCachedInputKinds | () → TArray<FString> | (Pure) 캐시된 입력 종류 목록입니다. |
입력 설정
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
FetchInputSettings | (FString InputName) | 입력의 현재 설정을 가져옵니다(핸들러 이벤트 발생). |
SetInputSettings | (FString InputName, FString SettingsJson, bool bOverlay = true) | JSON으로 입력 설정을 지정합니다. |
SetTextSourceText | (FString InputName, FString NewText) | 편의 기능: 텍스트 소스의 텍스트를 설정합니다. |
SetBrowserSourceUrl | (FString InputName, FString NewUrl) | 편의 기능: 브라우저 소스의 URL을 설정합니다. |
SetImageSourceFile | (FString InputName, FString NewFilePath) | 편의 기능: 이미지 소스의 파일 경로를 설정합니다. |
SetMediaSourceFile | (FString InputName, FString NewFilePath, bool bLooping = false) | 편의 기능: 미디어 소스의 파일 경로를 설정합니다. |
SetColorSourceColor | (FString InputName, int64 Color) | 편의 기능: 색상 소스의 색상을 설정합니다(ABGR, int64). |
미디어
서브시스템은 미디어 재생 관련 동작을 직접 노출하지 않습니다. 미디어 재생 제어(재생/일시 정지/중지/재시작, 탐색, 상태)는 미디어 입력 핸들러를 통해 접근하십시오.
OBS->GetMediaInputs()->...
UInhyeongOBSMediaInputs에 대한 자세한 내용은 Handlers API를 참조하십시오.
스튜디오 모드
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetStudioModeEnabled | () | 스튜디오 모드 활성화 상태를 가져옵니다. |
SetStudioModeEnabled | (bool bEnabled) | 스튜디오 모드를 활성화/비활성화합니다. |
IsStudioModeEnabled | () → bool | (Pure) 캐시된 스튜디오 모드 상태입니다. |
GetCurrentPreviewScene | () | 미리보기 장면을 가져옵니다. |
SetCurrentPreviewScene | (FString SceneName) | 미리보기 장면을 설정합니다. |
TriggerStudioModeTransition | () | 미리보기 장면을 프로그램으로 전환합니다. |
GetPreviewSceneName | () → FString | (Pure) 캐시된 미리보기 장면 이름입니다. |
전환
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
GetSceneTransitionList | () | 전환 목록을 가져옵니다. |
GetCurrentSceneTransition | () | 현재 활성 전환을 가져옵니다. |
SetCurrentSceneTransition | (FString TransitionName) | 활성 전환을 설정합니다. |
SetCurrentSceneTransitionDuration | (int32 DurationMs) | 전환 시간을 설정합니다. |
GetCurrentTransitionName | () → FString | (Pure) 캐시된 현재 활성 전환 이름입니다. |
GetCurrentTransitionDuration | () → int32 | (Pure) 캐시된 전환 시간(ms)입니다. |
IsTransitionActive | () → bool | (Pure) 캐시된 “전환 진행 중” 상태입니다. |
필터
서브시스템은 필터 CRUD를 직접 노출하지 않습니다. 소스 필터 관리(생성/제거/이름 변경/순서 변경, 활성화, 설정)는 필터 핸들러를 통해 접근하십시오.
OBS->GetFilters()->...
필터 이벤트는 서브시스템에서 재브로드캐스트됩니다(Events 참조). UInhyeongOBSFilters에 대한 자세한 내용은 Handlers API를 참조하십시오.
스크린샷
서브시스템은 스크린샷 캡처 메서드를 직접 노출하지 않습니다. 스크린샷 핸들러를 통해 접근하십시오.
OBS->GetScreenshots()->...
스크린샷 결과 델리게이트는 서브시스템에서 재브로드캐스트됩니다(OnScreenshotCaptured / OnScreenshotSaved). 단, 캡처 메서드 자체는 핸들러에 있습니다. UInhyeongOBSScreenshots에 대한 자세한 내용은 Handlers API를 참조하십시오.
게임 이벤트 (엔진 → OBS)
| 함수 | 시그니처 / 파라미터 | 설명 |
|---|
EmitGameEvent | (FString EventName, FString PayloadJson, FString Realm = "inhyeongobs") → bool | 네임스페이스가 지정된 커스텀 이벤트를 OBS에 발생시킵니다. 연결되지 않았거나 페이로드가 유효한 JSON이 아닌 경우 false를 반환합니다. |
EmitGameEventMap | (FString EventName, TMap<FString,FString> Payload, FString Realm = "inhyeongobs") | 맵 편의 기능: 각 키/값이 페이로드 아래 JSON 문자열 필드가 됩니다. |
핸들러 접근자
이 BlueprintPure 게터들은 클라이언트가 소유하는 도메인 핸들러를 반환합니다. 서브시스템에 직접 노출되지 않은 핸들러 수준 메서드에 접근할 때 사용하십시오(Handlers API 참조).
| 함수 | 반환값 | 도메인 |
|---|
GetOutputs | UInhyeongOBSOutputs* | 방송, 녹화, 가상 카메라, Replay Buffer. |
GetScenes | UInhyeongOBSScenes* | 장면 전환, 장면 항목. |
GetAudio | UInhyeongOBSAudio* | 입력 목록, 볼륨, 음소거, 볼륨 미터. |
GetInputSettings | UInhyeongOBSInputSettings* | 텍스트/브라우저/이미지/미디어 소스 설정. |
GetMediaInputs | UInhyeongOBSMediaInputs* | 미디어 소스 재생 제어. |
GetStudioMode | UInhyeongOBSStudioMode* | 미리보기 장면, 스튜디오 전환, T-Bar. |
GetTransitions | UInhyeongOBSTransitions* | 장면 전환, 시간, 설정. |
GetFilters | UInhyeongOBSFilters* | 소스 필터 관리. |
GetScreenshots | UInhyeongOBSScreenshots* | base64 또는 파일로 스크린샷 캡처. |
GetConfig | UInhyeongOBSConfig* | 장면 모음, 프로필, 비디오 설정, 영구 데이터. |
UInhyeongOBSGeneral 핸들러(성능 통계, 단축키, 벤더 요청)는 서브시스템에 GetGeneral() 접근자가 없으므로 GetClient()->GetGeneral()을 통해 접근하십시오.
이벤트
서브시스템의 모든 이벤트 델리게이트(예: OnConnected, OnCurrentSceneChanged, OnRecordStateChanged, OnMicActivityChanged)는 Events에 문서화되어 있습니다. 모든 Blueprint 이벤트에는 람다 바인딩을 위한 Native 접미사가 붙은 네이티브 C++ 대응 항목이 있습니다(Native Delegates 참조).