1.5 - 함수 리플리케이션

Network Feature 예제 레벨에 대한 개요로, 예제 1.5: Function Replication, Remote Procedure Call 입니다.

Choose your operating system:

Windows

macOS

Linux

1_5.png

서버 클라이언트 시점 모두를 확인하기 위해서는, Play (플레이) 드롭다운 아래 Number of Clients (클라이언트 수) 칸을 2 로 설정합니다.

변수에 추가로 함수 호출 역시 리플리케이트 가능합니다. Replicated Function Calls (리플리케이트된 함수 호출)은 Reliable (신뢰성) 또는 Unreliable (비신뢰성) 설정이 가능합니다. 신뢰성 호출은 반드시 실행이 보장되는 반면, 비신뢰성 호출은 트래픽이 심한 경우 실행되지 않을 수가 있습니다. 장식성 비주얼 처리를 담당하는 함수는 보통 비신뢰성 설정을 하여 네트워크 포화 상태를 방지합니다.

리플리케이트되는 함수는 크게 세 가지 유형이 있습니다: Multicast (멀티캐스트), Server (서버), Client (클라이언트) 입니다. 멀티캐스트 함수는 실행되는 곳인 서버에서 호출된 이후, 클라이언트에 자동으로 전송됩니다. 서버 함수는 클라이언트에서 호출되어 서버에서만 실행됩니다. 클라이언트 함수는 서버에서 호출되어 소유중인 클라이언트에서만 실행됩니다.

서버/클라이언트 리플리케이션 함수에는 Net Owner (네트 소유자)가 있는 액터에만 사용할 수 있다는 추가적인 제약이 있습니다. 네트 소유자가 있는 액터라 함은, 플레이어 컨트롤러이거나 거기에 소유된 경우입니다. 예를 들어 플레이어 컨트롤러에 빙의된 폰에는 서버/클라이언트 리플리케이트되는 함수를 가질 수 있습니다.

이 예제에서 멀티캐스트 함수는 버튼 눌림에서 발동되는 장식성 이벤트를 처리합니다.

블루프린트 분석

(아래 그림에서 여러 부분으로 나뉘어 있는) BP_Button_Multicast 블루프린트의 이벤트 그래프에서, 첫 번째 그림에 보면 Overlap 이벤트는 서버와 클라이언트에서 동시에 발동되면서 스크립트 나머지는 Switch Has Authority 노드를 사용하여 서버에서만 실행되도록 하는 것을 볼 수 있습니다.

클릭하면 크게 볼 수 있습니다.

Button Pressed (버튼 눌림) 또는 Button Released (버튼 뗌) 커스텀 이벤트가 호출되면, 멀티캐스트 설정이 되어있기 때문에 모든 클라이언트에서도 발동되므로 이벤트를 실행시킨 플레이어 뿐만아니라 모두가 확인할 수 있습니다.

클릭하면 Button Pressed 이벤트를 크게 볼 수 있습니다.

클릭하면 Button Released 이벤트를 크게 볼 수 있습니다.

게임내 결과는 버튼을 누르고 땔 때 발동되는 이벤트를 서버와 클라이언트 양쪽에서 확인할 수 있습니다.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
건너뛰기