2026. 4. 12. 17:49ㆍTIL
저번 과제를 진행하며 GameMode를 사용해봤는데, 생각보다 어렵고 중요한 내용이 많아 공부한 내용을 정리해보려고 한다.
GameMode란?
게임의 컨트롤 타워라고 생각하면 편하다.
게임이 시작될 때 누가 스폰될지, 어떤 컨트롤러를 쓸지, 점수는 어떻게 계산할지 등 게임 전반의 규칙과 흐름을 총괄하는 클래스이다.
GameMode가 담당하는 일은 다음과 같다.
- 플레이어 스폰 관리
- 게임이 시작되거나 플레이어가 리스폰될 때, 어떤 Pawn(캐릭터)을 스폰할지 결정한다.
- 스폰된 Pawn이 PlayerController와 연결되어 플레이어가 조작할 수 있게 해준다.
- PlayerController 지정
- 키보드, 마우스, 게임패드 입력을 처리하는 PlayerContoller가 어떤 클래스로 동작할지 설정한다.
- 게임 규칙 관리
- 점수 계산, 타이머, 라운드 제어, 승패 조건 등 게임의 핵심 규칙을 정의하고 유지한다.
- ex) 제한 시간이 끝나면 게임 오버 / 보스를 클리어하면 다음 레벨로 이동 같은 로직
- GameState / PlayerState 연동
- GameState는 전체 게임의 흐름(타이머, 전역 변수 등), PlayerState는 플레이어 개인 정보(체력, 점수 등)를 관리하는 데 쓰인다.
- 싱글 플레이 게임에선 서버 / 클라이언트 개념이 따로 없기 때문에 GameMode가 로컬에서 게임 전체를 온전히 제어한다.
GameMode vs GameModeBase
저번 과제를 진행하며 고민했던 부분 중 하나이다. 두 클래스의 차이는 다음과 같다.
| GameMode | GameModeBase | |
| 특징 | 멀티플레이 기능 일부 포함 | 단순화된 형태 |
| 멀티플레이 | 세션, 플레이어 연결 로직 포함 | 거의 포함 안 됨 |
| 사용 상황 | 싱글 / 멀티 모두 사용 가능 | 간단한 싱글 플레이 |
간단한 싱글 플레이 게임을 만든다면 GameModeBase를 선택하는 것이 더 가볍고 적합하다. 그래서 저번 과제에서는 GameModeBase를 사용했다.
멀티플레이 기능까지 고려한다면 GameMode를 선택하는 것이 바람직하다.
GameMode C++ 클래스 만들기
이제 직접 GameMode 클래스를 만들어 보려고 한다.
C++ 클래스 생성 -> All Classes -> GameMode 검색 후 GameMode 선택



클래스를 만들고 살펴보면, 아무 로직도 없는 기본 골격만 있는 거를 확인할 수 있다.
이후, 필요한 기능을 여기에 추가하면서 진행하면 된다.
GameMode 블루프린트로 감싸기
C++클래스로 만들었다고 바로 에디터에서 편하게 쓸 수 있는 건 아니다. 블루프린트로 한 번 더 감싸는 과정이 필요하다.
왜냐하면 C++ 클래스에서 EditDefaultOnly로 선언한 변수들은 블루프린트의 기본값 패널에서만 편집이 가능하기 때문이다.
에디터에서 편하게 수정하기 위해서는 블루프린트로 감싸는 과정이 필요하다.

이런식으로 생성하고 디테일 창을 확인해보면

에디터에서 기본값들이 노출되어 있어 편하게 설정할 수 있다.
GameMode 적용하기
이렇게 만든 GameMode를 적용하는 방법은 두 가지가 있다.
방법 1 - 프로젝트 전역 설정
Edit - Project Settings - Maps & Modes로 이동한다.

여기서 Default GameMode에 아까 만든 GameMode 클래스를 지정하면 프로젝트 내의 "모든 레벨"에 GameMode가 적용된다.
방법 2 - 레벨별 설정

World Settings의 GameMode Override 창에서 아까 만든 GameMode를 적용하면 해당 레벨에서 GameMode가 적용되는 것을 확인할 수 있다.
두 설정이 충돌한다면?
두 설정이 겹쳐서 충돌하게 될 경우에는 방법2에서 소개한 레벨별 설정이 우선 적용된다.
예시로 튜토리얼 레벨은 월드 세팅으로 전용 GameMode를 사용하고 나머지 레벨은 기본 GameMode를 쓰는 식으로 구분할 수 있다.
World Settings에서 확인할 수 있는 항목들

각 항목들은 다음과 같은 역할을 한다.
| 항목 | 역할 |
| Default Pawn Class | 게임 시작 시 플레이어가 조종할 Pawn 클래스 |
| HUD Class | 화면에 표시되는 UI 요소 관리 |
| Player Controller Class | 입력 처리, 카메라 제어, UI 상호작용 |
| Game State Class | 게임 전체 상태 추적 |
| Player State Class | 플레이어 개인 상태 추적 |
| Spectator Class | 관전자 모드에서 사용할 Pawn |
처음엔 다 기본값으로 설정되어 있지만, 새로 클래스를 생성하게 되면 여기서 교체하거나 블루프린트 GameMode에서 변경하면 된다.
'TIL' 카테고리의 다른 글
| <Unreal> 멀티플레이 기초 - RPC(Remote Procedure Call) (0) | 2026.06.04 |
|---|---|
| 게임 멀티플레이 기초 - 서버와 클라이언트 <NetMode, NetRole> (0) | 2026.06.03 |
| < 언리얼 C++ > 회전 발판과 움직이는 장애물 만들기 (0) | 2026.04.11 |
| [TIL 46일차] <언리얼 C++> 리플렉션 시스템 (2) | 2026.04.09 |
| [TIL 45일차] <언리얼 C++> 액터의 라이프 사이클 (0) | 2026.04.08 |