< 언리얼 C++ > GameMode

2026. 4. 12. 17:49TIL

저번 과제를 진행하며 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에서 변경하면 된다.