중간 과정 진행 후 커밋
This commit is contained in:
@@ -225,4 +225,57 @@ IDLE → READY → SENDING → ON_AIR → NEXT
|
||||
- 포맷 기반
|
||||
- 컷 단위 송출
|
||||
- 스케줄 큐 구조
|
||||
- 상태 머신 기반 제어
|
||||
- 상태 머신 기반 제어
|
||||
---
|
||||
|
||||
## 15. 인코딩 검증 규칙
|
||||
|
||||
- 한글 문자열이 포함된 파일을 수정한 뒤에는 반드시 인코딩 깨짐 여부를 다시 확인한다.
|
||||
- UI 문구, 로그 문구, 기본값 문자열은 저장 직후 한글이 정상 표시되는지 우선 점검한다.
|
||||
- `?`, `<60>`, 비정상 한자 형태의 모지바케가 보이면 즉시 수정 대상으로 간주한다.
|
||||
- 텍스트 파일은 UTF-8 기준으로 관리한다.
|
||||
---
|
||||
|
||||
## 16. Karisma / Tornado3 연동 기준
|
||||
|
||||
- CG 연동 라이브러리는 `Interop.KAsyncEngineLib.dll`을 사용한다.
|
||||
- 기본 접속 대상은 `127.0.0.1:30001`이다.
|
||||
- `TORNADO_KARISMA_HOST`가 있으면 기본 호스트 대신 사용한다.
|
||||
- `TORNADO_KARISMA_PORT`가 있으면 기본 포트 대신 사용한다.
|
||||
- 앱 시작 시 `T3_Cut 경로`가 유효하지 않으면 실CG 대신 Mock Adapter로 폴백한다.
|
||||
- 현재 구현 기준으로는 시작 시 Mock으로 결정된 경우, 설정 변경 후 실CG 재연결을 위해 앱 재시작이 필요할 수 있다.
|
||||
- 채널 기본 바인딩은 `노멀=0:0`, `좌상단=0:1`, `하단=0:2`, `비디오월=1:0`이다.
|
||||
- 환경변수 `TORNADO_KARISMA_BIND_NORMAL`, `TORNADO_KARISMA_BIND_TOPLEFT`, `TORNADO_KARISMA_BIND_BOTTOM`, `TORNADO_KARISMA_BIND_VIDEOWALL`로 채널 바인딩을 덮어쓸 수 있다.
|
||||
|
||||
## 17. T3_Cut 운영 규칙
|
||||
|
||||
- 사용자 설정 명칭은 `이미지 루트 경로`가 아니라 `T3_Cut 경로`로 표기한다.
|
||||
- 송출에 사용하는 컷 파일 확장자는 `.tscn`이다.
|
||||
- 컷 파일은 `T3_Cut` 루트 아래의 고정된 포맷 구조를 기준으로 사용한다.
|
||||
- 포맷 목록은 폴더 스캔으로 동적 생성하지 않고 하드코딩된 목록으로 관리한다.
|
||||
- 같은 컷 이름에 `_loop.tscn` 파일이 있으면 반복 송출 컷으로 사용한다.
|
||||
- 최초 송출 시에는 기본 컷 파일을 사용한다.
|
||||
- 이미 송출 중인 상태에서 같은 컷을 다시 사용할 때는 `_loop.tscn`이 있으면 우선 사용한다.
|
||||
- `_loop.tscn`이 없으면 기본 `.tscn` 파일로 폴백한다.
|
||||
- 예시: `1-2위_광역단체장.tscn`은 최초 송출용, `1-2위_광역단체장_loop.tscn`은 반복 송출용으로 간주한다.
|
||||
|
||||
## 18. CG 연동 상태 UI 표기 기준
|
||||
|
||||
- 메인 화면 상단에는 `CG 연동 상태`를 표시한다.
|
||||
- 사용자는 UI에서 현재 어댑터가 `실CG`인지 `Mock`인지 즉시 식별할 수 있어야 한다.
|
||||
- 상단 상태 영역에는 실CG 연동 여부, 연결 대상, 채널 정상 상태 요약을 함께 표시한다.
|
||||
- 채널 패널별로도 해당 채널이 어떤 백엔드를 사용하는지 표시한다.
|
||||
- 실제 Karisma 사용 시 연결 대상 예시는 `127.0.0.1:30001` 형식으로 표시한다.
|
||||
|
||||
## 19. CG Return Value / Callback 로그 정책
|
||||
|
||||
- CG 시스템으로부터 오는 Return Value 관련 결과는 `로그` 탭에서 확인할 수 있어야 한다.
|
||||
- 즉시 반환되는 값과 비동기 콜백 결과를 모두 로그로 남긴다.
|
||||
- `Connect()` 호출 직후의 반환값은 즉시 로그로 기록한다.
|
||||
- `LoadScene()` 및 `LoadSceneForce()` 호출 결과도 즉시 로그로 기록한다.
|
||||
- `KAEventHandler` 기반 콜백 결과를 `LogService`를 통해 공용 로그에 남긴다.
|
||||
- 로그에는 콜백 이름, 결과 enum 이름, 숫자 코드, 추가 정보(scene, object, output, layer 등)를 함께 남긴다.
|
||||
- `OnConnect(int ErrorCode)`는 `0`을 성공으로 간주하고, `0`이 아닌 값은 실패로 기록한다.
|
||||
- `eKResult.RESULT_SUCCESS`는 정보 로그로 남기고, 그 외 결과는 경고 로그로 남긴다.
|
||||
- 현재 로깅 대상에는 `OnConnect`, `OnClose`, `OnLogMessage`, `OnMessageNo`, `OnLoadScene`, `OnLoadSceneForce`, `OnBeginTransaction`, `OnEndTransaction`, `OnHeartBeat`, `OnSetValue`, `OnScenePrepare`, `OnScenePrepareEx`, `OnPlay`, `OnPlayOut`, `OnPause`, `OnResume`, `OnStop`, `OnStopAll`, `OnCutIn`, `OnCutOut`, `OnTrigger`, `OnTriggerObject`, `OnQueryIsOnAir`, `OnQueryLayerCount`, `OnScenePlayingStarted`, `OnScenePlayed`, `OnSceneAnimationPlayed`, `OnScenePaused`를 포함한다.
|
||||
- CG 콜백 로그와 앱 내부 로그는 같은 로그 시스템에 합쳐서 표시한다.
|
||||
Reference in New Issue
Block a user