Unreal Engine/기능 구현 / / 2025. 7. 23. 14:52

[Unreal Engine 5] Pawn과 PlayerController의 관계

반응형

게임에서 "내가 플레이하는 나"라는 존재는 누구인가?

 

일반적인 생각으로는 당연히 내가 조작하는대로 움직이는 캐릭터다.

그리고 그 캐릭터는 대부분 Pawn이라고 불리는 클래스를 상속받는다.

 

그러면 Pawn이 진짜 "내가 플레이하는 나"라는 정의에 부합하는가?

그렇지 않다.

 

Pawn은 그저 껍데기다.

아바타에 불과하다.

 

우리 육체는 아바타에 불과하다.

진짜 나라는 존재는 뇌와 신경계다.

뇌에서 전기신호를 보내면 우리는 생각하고 움직인다.

즉, 육체가 본체가 아니라 전기 신호가 본체다.

 

이걸 게임에 적용하면 움직이는 대상이 본체가 아니라 움직이라고 조작을 하는 컨트롤러가 본체라고 할 수 있다.

 

Pawn : 아바타

Controller : 나와 타인을 구분짓는 요소

 

내가 조작할 수 있으면 그것은 '나'이고, 조작할 수 없으면 '남'이다.

 

왜 게임은 이러한 방식으로 '나'라는 플레이어를 구분지었을까?

크게 두 가지 이유로 구분할 수 있다.

1. 네트워크 환경에서 나와 다른 플레이어를 구분하기 위해

2. 게임 내 로직 구현의 유연함

 

첫 번째 이유는 네트워크 환경에서 어떻게 나와 남을 구분할 것인지이다.

네트워크 환경은 싱글 플레이에 비해 신경써야 할 부분이 정말 많다.

어디가 클라이언트 코드이고 어디부터 서버 코드인지 명확히 구분해줘야 한다.

 

내가 아이템 창을 켠다고 서버에 접속 중인 모두가 강제로 아이템 창이 켜지는게 말이 되는가?

내가 이동한다고 서버에 접속 중인 모두가 똑같이 이동하는게 정상적인가?

 

이걸 통제할 수단이 필요하다.

 

또 하나, 로직 구현의 유용함 때문에 폰으로부터 컨트롤러가 구분되는데

게임에서 우리는 항상 캐릭터에게 구속될 이유가 없다.

 

로그인 화면에서 서버에 접속하기까지 입력을 받기 위해 캐릭터가 필요한가?

캐릭터 사망 후 옵저버 모드는 어떻게 구현하는가?

내 캐릭터가 아니라 몬스터나 NPC를 조작하는 기능은 어떻게 구현할 것인가?

 

이러한 점을 고려했을 때, 내가 조작할 수 있는 대상과 "조작"이란 개념은 분리되어야 구현에 유리하다.

캐릭터가 필요없는 상황에서는 컨트롤러만으로 조작을 한다.

캐릭터가 죽으면 컨트롤러는 캐릭터를 버린다. 그리고 "관전자"라는 또 다른 액터에 부착되어서 조작한다.

그리고 캐릭터가 리스폰되면 관전자를 버리고 다시 캐릭터를 조작 대상으로 삼는다.

 

캐릭터를 버리고 조작이라는 개념을 넣는 순간 게임에 수 많은 기능 구현이 편리해진다.

 

그래서 언리얼 엔진에는 APlayerController가 존재한다.

대부분 플레이어라면 할 수 있는 거의 모든 기능은 여기에 모여있다.

 

내가 조작할 대상

내가 바라볼 카메라

내가 입력한 키보드, 마우스 상호작용

내 화면에 보여야 할 UI

모두 컨트롤러가 통제한다.

 

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유