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

themoon007님의 프로필 이미지

작성한 질문수

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

10강 캐릭터 공격 구현 개선

마지막 공격모션 ClientRPC 할때 IsLocalController() 개념 확인 질문입니다.

작성

·

420

1

제가 이해한 방식인데요. 파란색으로 표시한 글이 올바르게 이해한게 맞는 건가요??

답변 1

1

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

소스 코드를 보시면 더 확실하게 이해할 수 있습니다.

  • 네트웍이 없는 스탠드얼론 클라이언트인 경우 : true

  • 네트웍 모드가 클라이언트이고 로컬 역할이 오토노머스 프록시인 경우 : true

  • 원격 역할이 오토노머스 프록시가 아니고, 로컬 역할이 오쏘리티(서버)인 경우 : true

     

bool AController::IsLocalController() const
{
	const ENetMode NetMode = GetNetMode();

	if (NetMode == NM_Standalone)
	{
		// Not networked.
		return true;
	}
	
	if (NetMode == NM_Client && GetLocalRole() == ROLE_AutonomousProxy)
	{
		// Networked client in control.
		return true;
	}

	if (GetRemoteRole() != ROLE_AutonomousProxy && GetLocalRole() == ROLE_Authority)
	{
		// Local authority in control.
		return true;
	}

	return false;
}
themoon007님의 프로필 이미지
themoon007
질문자

아하.... 결국엔 본문의 로직에선,

서버에 있는 PlayerController들 일 것이기 때문에 로컬은 Authority일 거고...,

원격은 클라이언트용이라면 각각 주인이 있는 Autonomus일 것이기 때문에 false가 반환 된다고 봐야겠군요...

 

감사합니다. 10장부터 너무 어려워져서 하루 종일 한 강의만 봤네요....

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

그래도 Part3는 충분히 그럴만한 가치가 있다고 생각합니다 ^^