언어:
페이지 정보
엔진 버전:
언리얼 엔진

2.1 - 네트워크 연관성 [1 부 - 전혀 리플리케이트되지 않음]

언리얼 엔진

2_1.png

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

블루프린트를 통해 제대로 된 네트워킹 게임플레이를 만들기 위해서는, Network Relevancy (네트워크 연관성) 개념을 이해하는 것이 중요합니다. 간단히 말해서, 클라이언트 머신에서는 모든 액터에 대한 네트워크 데이터를 항상 수신할 필요가 없다는 것입니다. 커다란 맵 한 쪽에 있는 플레이어는 네트워킹 관점에서 맵 반대편에서 벌어지는 일을 모두 알 필요가 없습니다. 그러한 경우, 어떤 액터는 일정한 시간에 플레이어에게 "연관성이 있다"고 합니다. 연관성이 있는 액터는 주로 플레이어가 볼 수 있거나, 만질 수 있거나, 근처에 있는 것을 말합니다. 플레이어는 일종의 최적화로써, 연관성이 있는 액터에 대해서만 최대 네트워크 업데이트를 받습니다.

이 최적화의 한 가지 부작용은, (보통 플레이어가 근처로 이동한다든가 해서) 액터가 한 때 연관성이 없다가 생기는 경우를 어떻게 처리할 것인지 고려해야 한다는 점입니다. 플레이어가 기존에 진행중인 게임에 참가하는 경우에 대한 처리 문제와도 매우 유사합니다.

이 예제와 나머지 네트워크 연관성 예제에서는, 상자 열기와 연관성에 관련된 관계를 재현해 보겠습니다.

블루프린트 분석

BP_Relevancy_Replication_None 블루프린트의 이벤트 그래프에서, 오소리티가 누군가 트리거에 겹쳤다는 신호를 받았을 때 OnChestTouched 함수가 호출되어 DoOnce 노드에 의해 한 번만 실행되는 것을 볼 수 있습니다.

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

그리고 OnChestTouched 함수는 두 개의 함수를 추가로 실행합니다: 하나는 상자 열기, 다른 하나는 상자 열기에 관련된 이펙트 재생입니다.

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

이 예제에서는 리플리케이션이나 연관성 처리 시도를 하지 않기에, 서버에서만 상자가 열리는 것을 볼 수 있습니다.