nDisplay 시스템에 대한 모든 입력은 프라이머리 노드에 의해서만 처리됩니다. 리플리케이션이 전혀 없는 경우에는 프라이머리 노드를 통해서만 씬의 변경사항을 확인할 수 있습니다. 따라서 프라이머리 노드는 nDisplay 네트워크의 다른 모든 부분에 대한 변경사항을 리플리케이트할 수 있어야 합니다.
이를 위해 nDisplay는 액터에 어태치할 수 있는 두 가지 종류의 컴포넌트를 제공합니다.
-
DisplayClusterSceneComponentSyncParent 컴포넌트는 부모 컴포넌트의 3D 트랜스폼에서 발생한 변경사항을 트래킹하고, 해당 변경사항을 네트워크의 다른 클러스터 노드에 푸시합니다.
nDisplay 시스템에서 사용되는 디폴트 DisplayClusterPawn이 이 컴포넌트를 사용합니다. -
DisplayClusterSceneComponentSyncParent 컴포넌트는 자손 컴포넌트의 3D 트랜스폼에 대한 변경사항을 트래킹하고, 해당 변경사항을 네트워크의 다른 클러스터 노드에 푸시합니다.
예를 들어 아래 그림에 나와 있는 액터와 같이 액터가 레벨을 중심으로 움직이는 경우, DisplayClusterSceneComponentSyncParent_Scene 컴포넌트는 부모 액터의 3D 트랜스폼에 대한 변경사항을 트래킹 및 리플리케이트합니다. DisplayClusterSceneComponentSyncThis 컴포넌트는 씬 그래프 루트를 기준으로 움직이는 자손 스태틱 메시 컴포넌트의 이동을 트래킹 및 동기화합니다.
씬에 있는 다른 액터가 게임플레이 도중 영향을 받을 수 있는 경우, 이 두 가지 컴포넌트 중 하나를 사용하여 해당 변경사항을 모든 노드에 리플리케이트해야 합니다. 이렇게 하려면 다음 단계를 따릅니다.
- 레벨 뷰포트 또는 월드 아웃라이너(World Outliner) 패널에서 리플리케이트해야 할 액터를 선택합니다.
-
디테일(Details) 패널에서 + 컴포넌트 추가(Add Component) 를 클릭합니다. DisplayClusterSceneComponentSyncParent 또는 DisplayClusterSceneComponentSyncThis 를 검색하여 목록에서 선택합니다.
이러한 컴포넌트는 리플리케이션을 완전히 수행하지 않습니다. 부모 액터의 트랜스폼 또는 자손 컴포넌트의 트랜스폼만 클러스터로 전송됩니다.
커스텀 데이터 리플리케이트
프라이머리 노드와 나머지 클러스터 사이에서 다른 커스텀 데이터를 리플리케이트해야 하는 경우, 자체 C++ 클래스를 사용하여 IDisplayClusterClusterSyncObject 인터페이스를 구현할 수 있습니다. nDisplay는 이 인터페이스에서 메서드를 자동으로 호출하여 해당 클래스의 각 인스턴스를 프라이머리 노드에서 다른 클러스터 노드로 동기화해야 하는지 여부를 확인합니다.