본문으로 건너뛰기
Unreal Engine 멀티플레이LESSON 11

PlayerController와 Pawn의 네트워크 역할

난이도입문 → 초급
예상 시간70분
선수지식10강의 Gameplay Framework 상태 배치

11강. PlayerController와 Pawn의 네트워크 역할

1. 이번 강의에서 해결할 문제​

다른 플레이어의 PlayerController를 클라이언트에서 찾으려 하거나 HUD를 Pawn에 만들어 Respawn마다 중복 생성합니다. PlayerController와 Pawn은 둘 다 플레이어와 관련 있지만 네트워크 존재 범위와 수명이 다릅니다.

2. 학습 목표​

3. 핵심 개념​

서버는 모든 접속 플레이어의 PlayerController를 가지지만 각 클라이언트는 자신의 PlayerController만 가집니다. 다른 플레이어 정보는 PlayerState와 Pawn을 통해 봅니다. Pawn은 서버와 관련 클라이언트에 복제되고 소유 클라이언트의 복사본이 Autonomous Proxy로 입력을 만듭니다.

PlayerController는 연결과 함께 비교적 오래 살며 Pawn을 다시 Possess할 수 있습니다. HUD·메뉴·로컬 입력 모드처럼 플레이어 화면 수명의 기능은 Controller에, 위치·충돌·전투처럼 World 개체의 기능은 Pawn/Character에 둡니다.

4. 단계별 실습​

CaptureArenaPlayerController.h
UCLASS()
class CAPTUREARENA_API ACaptureArenaPlayerController : public APlayerController
{
GENERATED_BODY()

protected:
virtual void BeginPlay() override;
virtual void OnPossess(APawn* InPawn) override;
virtual void OnRep_Pawn() override;

private:
void BindToCurrentPawn();
void CreateLocalHud();
};
CaptureArenaPlayerController.cpp
void ACaptureArenaPlayerController::BeginPlay()
{
Super::BeginPlay();

if (IsLocalController())
{
CreateLocalHud();
}
}

void ACaptureArenaPlayerController::OnPossess(APawn* InPawn)
{
Super::OnPossess(InPawn); // 서버
BindToCurrentPawn();
}

void ACaptureArenaPlayerController::OnRep_Pawn()
{
Super::OnRep_Pawn(); // 소유 클라이언트가 새 Pawn을 수신
BindToCurrentPawn();
}

void ACaptureArenaPlayerController::BindToCurrentPawn()
{
UE_LOG(LogTemp, Display, TEXT("Controller=%s Local=%d Pawn=%s"),
*GetName(), IsLocalController(), *GetNameSafe(GetPawn()));
}

HUD를 만들 때 IsLocalController()를 검사하고 이미 생성됐는지도 확인합니다. Pawn에 필요한 체력 Delegate는 Possess/OnRep_Pawn마다 이전 바인딩을 해제하고 새 Pawn에 연결합니다.

5. 코드가 동작하는 이유​

서버의 OnPossess는 권위 있는 소유 관계를 설정합니다. 소유 클라이언트는 복제를 통해 Pawn 포인터를 받고 OnRep_Pawn에서 로컬 UI를 다시 연결합니다. 다른 클라이언트는 해당 PlayerController가 없지만 Pawn과 PlayerState 복사본으로 캐릭터와 이름을 표시할 수 있습니다.

6. 자주 하는 실수와 해결법​

7. 직접 실습​

8. 이해 점검 질문 3개​

9. 핵심 요약​

MINI QUIZ

PlayerController와 Pawn의 네트워크 역할 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“PlayerController와 Pawn의 네트워크 역할” 실습 결과를 해석하는 올바른 기준은 무엇인가요?
  2. 문제 2“PlayerController와 Pawn의 네트워크 역할”의 작업 기준으로 ‘HUD를 Character BeginPlay마다 생성’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

11강. PlayerController와 Pawn의 네트워크 역할 미완료 상태