인프런 커뮤니티 질문&답변

themoon007님의 프로필 이미지
themoon007

작성한 질문수

이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해

6강 액터 리플리케이션 빈도와 연관성

오너를 가지고있는 액터가 IsNetRelevantFor() 할 때 궁금한 점이있습니다.

해결된 질문

작성

·

144

0

분수대 같은 개별 액터가 아니라

빙의 되어있는 폰같은 액터의 경우, 오너로 자신의 player controller 가 있을 것인데요.

이 폰에서 IsNetRelevantFor() 함수가 호출될 때 매개변수로 받는 RealViewer에 대하여 어떤 RealViewer(클라이언트)이든 무조건 true가 반환 되서, 모든 클라이언트에게 복제가 되는 건가요?

 

IsNetRelevantFor() 의 첫 번째 조건은 자기 자신의 오너쉽과 관련된 클라이언트에 대해서는 무조건 true 가 반환 되는 걸로 보여지지만

if (bAlwaysRelevant || IsOwnedBy(ViewTarget) || IsOwnedBy(RealViewer) || this == ViewTarget || ViewTarget == GetInstigator())
{
	return true;
}

 

Player State 나 Game State가 무조건 모든 클라이언트에게 복제 되는 것 처럼.

(bOnlyRelevantToOwner같은 특별한 옵션이 없다고 가정했을 때) Player Controller를 오너로 가지고있는 액터도 모든 클라이언트에 복제가 된다고 이해해도 되나요??

 

답변 1

1

이득우님의 프로필 이미지
이득우
지식공유자

서버는 다수의 커넥션을 관리하고 있을텐데요, 각 커넥션에 1:1로 대응하는 플레이어 컨트롤러가 위의 RealViewer가 됩니다. 서버 내 어떤 액터가 있을 때 이 액터와 Relevant(관련있는) 커넥션에 대해서만 리플리케이션이 일어납니다. 즉 모든 커넥션 중 IsRelevantFor를 true로 패스한 커넥션에 대해서만 해당 액터의 리플리케이션이 진행된다고 보면 됩니다.

GameState와 PlayerState가 모든 클라이언트에게 복제되는 이유는 bAlwaysRelevant 속성이 참이기 때문입니다.

themoon007님의 프로필 이미지
themoon007

작성한 질문수

질문하기