Skip to content

Desuq Cafe

문서 메뉴

이 번역은 최신 영어 원문보다 늦을 수 있습니다. 영어 버전 보기

게임 이벤트 & General Handler

두 가지 관련 기능을 다룹니다. 엔진에서 OBS로 구조화된 이벤트를 전송하는 기능, 그리고 단일 OBS 도메인에 속하지 않는 범용 엔드포인트를 제공하는 General handler입니다.

OBS로 게임 이벤트 전송

엔진에서 OBS 방향으로 네임스페이스가 지정된 CustomEvent 형태의 구조화된 이벤트를 전송합니다. OBS 측 플러그인과 스크립트(Lua/Python), 브라우저 소스 오버레이, 또는 다른 연결된 WebSocket 클라이언트가 이벤트를 수신하고 반응할 수 있습니다.

// Send arbitrary JSON
OBS->EmitGameEvent(TEXT("BossDefeated"), TEXT("{\"boss\":\"Dragon\",\"timeSec\":372}"));

// ...or a simple string map (each pair becomes a string field under "payload")
TMap<FString, FString> Payload;
Payload.Add(TEXT("combo"), TEXT("42"));
OBS->EmitGameEventMap(TEXT("ComboMilestone"), Payload);
메서드설명
EmitGameEvent(EventName, PayloadJson, Realm="inhyeongobs")임의의 JSON을 전송합니다. 페이로드 문자열이 유효한 JSON이 아니면 false를 반환하고 아무것도 전송하지 않습니다.
EmitGameEventMap(EventName, Map, Realm="inhyeongobs")각 키/값 쌍이 payload 아래의 문자열 필드로 변환됩니다.

이벤트는 OBS의 CustomEvent 아래 안정적인 봉투(envelope) 형태로 래핑됩니다.

{ "realm": "inhyeongobs", "eventType": "BossDefeated", "payload": { }, "ts": 0 }

선택적 Realm 인수(기본값 "inhyeongobs")는 이벤트에 네임스페이스를 부여하여 리스너가 필터링할 수 있게 합니다. 이 메서드들은 General handler의 BroadcastCustomEvent 위에 계층화되어 있으며, EmitGameEvent는 구조화된 래퍼로서 Subsystem 단축키가 직접 제공되는 유일한 General handler 기능입니다.

참고: OBS는 커스텀 이벤트를 발신 세션에 다시 에코하지 않으므로, 전송한 클라이언트는 자신이 보낸 이벤트를 수신하지 못합니다.

General Handler (성능 통계, 단축키, 벤더 및 커스텀 이벤트)

단일 도메인에 속하지 않는 범용 엔드포인트로, 클라이언트의 General handler를 통해 접근합니다.

UInhyeongOBSGeneral* General = OBS->GetClient()->GetGeneral();

// Performance stats (CPU usage, active/render FPS, dropped frames, free disk space, ...)
General->GetStats();                        // async -> OnStatsReceived
FOBSStats Stats = General->GetCachedStats();

// Hotkeys
General->GetHotkeyList();                    // async -> OnHotkeyListReceived
General->TriggerHotkeyByName(TEXT("OBSBasic.StartRecording"));
General->TriggerHotkeyByKeySequence(TEXT("OBS_KEY_F1"), /*bShift=*/false, /*bControl=*/true);

메서드

메서드설명
GetStats()성능 통계(CPU, active/render FPS, 드롭된 프레임, 여유 디스크 공간 등)에 대한 비동기 요청 → OnStatsReceived.
GetCachedStats()마지막으로 캐시된 FOBSStats.
GetHotkeyList()등록된 단축키 이름에 대한 비동기 요청 → OnHotkeyListReceived.
TriggerHotkeyByName(Name)등록된 이름으로 단축키를 발생시킵니다(예: OBSBasic.StartRecording).
TriggerHotkeyByKeySequence(Key, bShift, bControl, …)키 + 수정키 조합으로 단축키를 발생시킵니다.
BroadcastCustomEvent(...)원시 커스텀 이벤트 전송(위의 EmitGameEvent가 이 위에 구현된 구조화된 래퍼입니다).
CallVendorRequest(...)서드파티 OBS 플러그인의 벤더 API 호출 → OnVendorResponseReceived.

이벤트

이벤트발생 시점
OnStatsReceivedGetStats 응답이 도착했을 때.
OnHotkeyListReceivedGetHotkeyList 응답이 도착했을 때.
OnExitStartedOBS가 종료를 시작했을 때.
OnVendorEvent서드파티 벤더 플러그인이 이벤트를 발생시켰을 때.
OnCustomEvent다른 세션에서 커스텀 이벤트를 브로드캐스트했을 때.

General handler의 대부분의 메서드는 GetClient()->GetGeneral()을 통해 접근합니다. EmitGameEvent는 위에 나온 Subsystem 단축키를 통해 직접 접근할 수 있습니다.

참고 항목