Custom DI
Custom Data Interface는 마지막 확장 선택이다
기본 인터페이스로 표현하기 어려운 게임 고유 데이터를 C++로
나이아가라에 노출하는 고급 확장이다.
만들기 전 질문
기존 DI · User Parameter · Blueprint
구현 비용이 크므로 대체 가능성을 먼저 확인한다.
- 01 대체 확인 기존 DI와 파라미터로 충분한가 가능하면 C++ 확장을 만들지 않는다.
- 02 계약 고정 데이터 소유자와 갱신 주기를 정한다 깨지는 지점을 작게 만든다.
- 03 핀 노출 그래프가 읽을 함수만 연다 입력과 출력 타입을 좁게 유지한다.
- 04 실행 검증 CPU/GPU 경로를 따로 본다 프리뷰와 실제 플레이 값을 비교한다.
| 판단 | 필요 조건 | 구현 범위 | 검증 방법 |
|---|---|---|---|
| Need고유 데이터 | 외부 물리, AI 상태, 날씨, 파일 데이터처럼 기본 함수로 읽을 수 없는 값. | User Parameter나 기존 DI 조합으로 충분하면 구현하지 않는다. | 필요 데이터와 호출 빈도를 먼저 적는다. |
| C++ Layer클래스와 함수 | UNiagaraDataInterface 기반 클래스로 읽기 함수를 정의한다. | VM/GPU 지원 범위와 데이터 소유자를 고정한다. | 데이터 구조 변경 때 깨지는 계약이 작은지 본다. |
| Expose스크립트 호출 | 모듈 그래프가 사용할 입력 핀과 함수 시그니처를 노출한다. | 필요한 입력과 출력만 열어 그래프 사용 실수를 줄인다. | 함수 이름, 타입, 기본값이 에디터에서 읽히는지 확인한다. |
| Test실행 위치 | CPU/GPU, 에디터 프리뷰, 실제 플레이 값을 따로 본다. | 실패 시 대체값과 성능 비용을 함께 정한다. | GPU 파티클에서 필요한 함수가 실제 지원되는지 확인한다. |