게임모드 GameMode
GameMode
- 게임의 전반적인 규칙과 흐름을 총괄 관리하는 일종의 컨트롤 타워, 총괄 관리자
- 유니티에서 만들어 썼던
GameManager
개념을 언리얼에서는 기본으로 제공하고 있음.
- 어떤
Pawn
또는 Character
를 플레이어에게 스폰해줄지, 어떤 PlayerController
를 사용할지, 승패 조건이나 점수 계산 방법은 어떻게 설정할지 등을 게임 플레이의 핵심 로직을 담당.
- 싱글 플레이에서는 ‘서버’와 ‘클라이언트’ 개념이 나뉘지 않으므로, GameMode가 온전히 로컬에서 동작하여 게임 전체를 제어합니다.
주요 기능과 책임
- 플레이어 Pawn/Character 스폰
- 게임이 시작될 때 (또는 플레이어가 리스폰될 때),
DefaultPawnClass
또는 지정한 Pawn 클래스
를 자동으로 스폰
- 스폰된 Pawn을 플레이어가 조작할 수 있도록
PlayerController
와 연동해주는 역할
- PlayerController 지정
- 플레이어의 입력을 전달하고 처리
- 플레이어의
Pawn
은 그저 액터 객체일 뿐, 캐릭터에 빙의(possess)해야 조작 가능
- 어떤
PlayerController
상속 클래스로 동작할지 설정합니다.
- 게임 규칙 (로직) 관리
- 게임 전반에 관한 함수들이나 동작을 처리
- 점수 계산, 타이머, 라운드 제어, 난이도 등 게임 전반의 규칙을 정의하고 유지
- 특정 점수 달성, 보스 몬스터 처치, 제한 시간 종료 등 승리/패배를 결정하는 조건을 관리
- 승리 혹은 패배가 확정되면, 게임 오버 화면을 띄우거나 다음 레벨로 전환하는 식의 후속 처리를 담당
- GameState
- 전체 게임 흐름에 대한 전역 데이터를 관리 (타이머, 전역 변수 등)
- 게임 규칙에 따른 로직의 결과 데이터 또는 변수들을 저장
- PlayerState
- 플레이어별 데이터들을 저장 (체력, 점수 등등)
- 주로 멀티에서 사용
- 멀티가 아니더라도 상태 저장과 관리를 좀 더 체계적으로 하고 싶을 때 유용
GameMode 클래스 생성
GameMode
를 상속해서 클래스를 만들때, 부모 클래스 선택지가 2개 있음.

GameModeBase
와 이를 상속한 GameMode
가 있음.
- 둘의 차이점
GameModeBase
- 게임모드의 기반 클래스.
- 게임 모드에 대해 자세하게 구현하진 않고 말 그대로 사용할 수 있는 기반을 제공하는 클래스.
- 보통 처음에 게임모드를 작성한다고하면 도화지 상태의 클래스를 기반으로 작성.
GameMode
GameModeBase
클래스를 상속받아 제공하는 클래스.
- 멀티 플레이 관련 기능들을 구현해서 제공하고 있음.
C++ 생성
GameModeBase
를 상속해서 처음 생성하면 특별한 내용은 없음.
- 이 상태에서 코드를 작성해서 필요한 내용들을 채워나갈 것.
BP 클래스 생성
- 에디터에서 사용하기 위해선 C++ 클래스를 BP로 감싸서 사용해야함.
- BP로 한번 감싸는 이유 :
- 특정 옵션을 변수화해서 에디터에서 즉각적으로 수정사항을 반영할 수 있음.
즉, 유용하기 때문
- 게임모드 BP를 에디터의 설정에 사용해서 레벨에 대한 게임모드를 적용할 수 있음.
게임모드 적용
- 게임모드를 적용하는 방법은 크게 두 가지가 있음.
전역 설정 : 전체 레벨 적용
- Edit > Project Settings > Maps & Modes
- Default GameMode 부분의 값을 원하는 GameMode로 설정

- 이 프로젝트의 모든 레벨에 대해 기본 GameMode가 선택한 게임모드로 작동함.
레벨 별 설정
- 게임모드 설정할 레벨 열기
- Window > World Settings 창 열기
- World Settings의 Default Modes에서 원하는 GameMode 설정

- 이렇게 설정하면 이 레벨은 전역 설정 대신에 레벨 별로 설정한 GameMode를 사용함.
만약 전역 설정과 레벨 별 설정이 같이 있다면 레벨 별 설정을 사용 (Override).
게임모드 설정 변경

GameMode
를 넣어줬다면 게임모드에서 사용할 클래스들을 변경할 수 있음.
사용 클래스들
- Default Pawn Class: 레벨 시작 시 플레이어가 조종하게 될 Pawn (또는 Character) 클래스를 지정
- HUD Class: 게임 화면에 표시되는 HUD(UI) 요소를 관리하는 클래스를 지정.
- Player Controller Class: 플레이어 입력 처리와 카메라 제어, UI와의 상호작용, 폰에 대한
Possess/Unpossess
설정을 담당하는 클래스를 지정.
- Game State Class / Player State Class: 게임의 전역 상태나 플레이어별 상태를 추적할 때 사용.
- Spectator Class: 관전자 모드에서 사용할 Pawn 클래스를 지정.
일반 플레이어와 다른 이동 방식이나 카메라 제어가 필요할 때 활용.
사용할 클래스를 코드로 제어할 수도 있음.
#include "Cp2GameMode.h"
#include "Cp2Character.h"
#include "Cp2PlayerController.h"
ACp2GameMode::ACp2GameMode()
{
DefaultPawnClass = ACp2Character::StaticClass();
PlayerControllerClass = ACp2PlayerController::StaticClass();
}
Class::StaticClass()
: 객체를 생성하지 않고 클래스를 반환해서 넣어줌.
실행

- 게임모드를 변경하고 플레이해보면 아웃라이너에서 설정했던 클래스들이 스폰되는 것을 확인할 수 있음.
- 각 액터들은 자신의 역할에 맞는 기능들을 게임 플레이동안 수행함.