해결된 질문
작성
·
143
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 속성이 참이기 때문입니다.