
언리얼 기초 · 약 3분
Actor·Pawn·Character와 GameMode의 역할
월드의 객체, 조종 가능한 몸체, 캐릭터 이동 기능, 시작 규칙을 구분해 올바른 부모 클래스를 고릅니다.
Wolfgadeok · 업데이트
상속은 역할을 더하는 구조다
Actor는 레벨에 배치하거나 실행 중 생성할 수 있는 기본 단위다. 반드시 정지한 물체인 것은 아니다. 날아가는 화살과 움직이는 문도 Actor로 구현할 수 있다. Pawn은 Controller가 빙의해 조종할 수 있는 Actor이고, Character는 Pawn에 캡슐, 스켈레탈 메시, 캐릭터 이동을 위한 구성을 더한 클래스다.
따라서 Actor → Pawn → Character는 '정적 물체 → 키보드 입력 → 뼈가 있는 모델'이라는 단순 분류가 아니다. Actor도 입력을 처리하도록 만들 수 있고, Pawn은 AIController의 제어를 받을 수도 있다. 스켈레탈 메시를 쓴다고 반드시 Character를 상속해야 하는 것도 아니다. 필요한 이동과 제어 모델에 맞는 가장 적절한 기반을 선택한다.

GameMode는 시작 규칙을 정한다
레벨에 플레이어 캐릭터가 보이지 않아도 실행하면 나타나는 것은 기본 Pawn 생성 흐름이 준비되어 있기 때문이다. GameMode의 Default Pawn Class, PlayerController Class 등을 확인하면 어떤 종류의 객체가 생성되는지 추적할 수 있다. GameMode도 Actor 계열이며, 화면에 모습이 없다고 Actor가 아닌 것은 아니다.
네트워크 게임에서는 GameMode 인스턴스가 서버 측 규칙을 담당한다. 여러 참가자가 알아야 하는 진행 상태는 GameState, 플레이어별 상태는 PlayerState 등으로 나누어 생각한다. GameInstance는 레벨을 넘어 유지할 애플리케이션 단위 데이터의 역할이며 GameMode와 같은 개념이 아니다.
기본 Pawn을 교체해 보는 절차
먼저 캐릭터 자체가 정상인지 확인한 다음 생성 규칙을 바꾼다. 메시와 애니메이션까지 동시에 교체하면 어느 설정 때문에 문제가 생겼는지 찾기 어려워진다.
- 기존 캐릭터를 기반으로 테스트용 Blueprint를 만들고 눈에 띄는 작은 차이만 준다.
- GameModeBase를 부모로 하는 프로젝트용 GameMode Blueprint를 만들거나 기존 GameMode를 사용한다.
- Default Pawn Class에 테스트 캐릭터를 지정한다. 프로젝트 기본 GameMode와 현재 레벨의 GameMode Override를 함께 확인한다.
- Play를 실행하고 실제 생성된 Pawn 클래스와 Controller의 빙의 대상을 확인한다.
- 변경이 보이지 않으면 레벨 오버라이드, 배치된 Pawn의 자동 빙의 설정, PlayerStart 주변의 생성 조건을 차례로 점검한다.

설정의 우선순위를 추적한다
프로젝트 기본값을 바꿨는데 특정 맵만 예전 캐릭터가 나오는 경우가 있다. 이런 현상은 엔진이 값을 무시하는 것이 아니라 레벨별 설정이 우선해서 생길 수 있다. 코드의 기본 클래스, Blueprint의 기본값, 레벨 오버라이드를 순서대로 따라가면 현재 결과를 설명할 수 있다. 튜토리얼의 프로젝트 고유 클래스 이름을 복사하기보다 자신의 클래스 관계를 적어 보는 것이 좋다.