GameMode | [언리얼 엔진 C++ (Unreal Engine C++)]

2026. 6. 8. 17:05·Unreal Engine/UE 기초

 

GameMode

 


 

GameMode 이해하기

 

1️⃣ GameMode란?

  • GameMode는 게임의 전반적인 규칙과 흐름을 총괄 관리하는, 일종의 컨트롤 타워 역할을 하는 클래스입니다.
    • 다른 곳에서 사용하는 GameManager 와 동일하다고 생각하면 됩니다.
    • 단! GameMode는 Singleton처럼 “하나만 있는 관리자”처럼 보이지만, 직접 Singleton으로 만드는 클래스는 아니고 언리얼이 월드 단위로 자동 관리하는 게임 규칙 클래스예요.
    • GameMode는 언리얼 엔진이 월드마다 하나씩 생성해서 관리하는 게임 규칙 관리자
  • 싱글 플레이에서는 ‘서버’와 ‘클라이언트’ 개념이 나뉘지 않으므로, GameMode가 온전히 로컬에서 동작하여 게임 전체를 제어합니다.
  • 어떤 Pawn (또는 Character)을 플레이어에게 스폰해줄지, 어떤 PlayerController를 사용할지, 승패 조건이나 점수 계산 방법은 어떻게 설정할지 등 게임 플레이의 핵심 로직을 담당합니다.
    • PlayerController 클래스: input 을 받아서 조종가능한 (Playable) 캐릭터에 연결해서 조종하는 역할 = 캐릭터에 빙의 한다는 개념.
    • 프로젝트 전역(기본) 혹은 레벨별로 필요한 GameMode를 구분해 설정할 수 있습니다. (예: 튜토리얼 맵 전용 GameMode, 일반 맵 전용 GameMode 등)

2️⃣ GameMode의 주요 기능과 책임 4가지

Pawn/Character 스폰, PlayerController 지정, Game Logic 게임 규칙 관리 (함수), GameState / PlayerState 사용

  1. 플레이어 Pawn/Character 스폰
    • 게임이 시작될 때 (또는 플레이어가 리스폰될 때), DefaultPawnClass 또는 지정한 Pawn 클래스를 자동으로 스폰합니다.
    • 스폰된 Pawn을 플레이어가 조작할 수 있도록 PlayerController와 연동해주는 역할을 합니다.
  2. PlayerController 지정
    • 플레이어의 입력(키보드, 마우스, 게임패드 등)을 전달하고 처리하는 PlayerController가 어떤 클래스로 동작할지 설정합니다.
  3. Game Logic 게임 규칙 관리 (함수)
    • 점수 계산, 타이머, 라운드 제어, 난이도 등 게임 전반의 규칙을 정의하고 유지합니다.
    • 특정 점수 달성, 보스 몬스터 처치, 제한 시간 종료 등 승리/패배를 결정하는 조건을 관리합니다.
    • 승리 혹은 패배가 확정되면, 게임 오버 화면을 띄우거나 다음 레벨로 전환하는 식의 후속 처리를 담당합니다.
  4. GameState / PlayerState 사용
    • GameState는 전체 게임 흐름 (타이머, 전역 변수 등)
    • PlayerState는 플레이어별 정보 (체력, 점수 등)를 관리하는 용도로 쓰일 수 있습니다.
      • 주로 멀티플레이어 게임에서 많이 사용 합니다.
      • 멀티플레이만큼 복잡하게 쓰진 않더라도, 상태 저장과 관리를 좀 더 체계적으로 하고 싶을 때 유용합니다.

 


GameMode 클래스 생성하기

 

1️⃣ GameMode vs GameModeBase

  • 언리얼 엔진 5에는 GameMode와 GameModeBase 두 종류가 있습니다.
  • GameMode
    • 언리얼에서 제공하는 멀티플레이 기능 (세션, 플레이어 연결 로직 등)을 일부 포함하고 있으며, 싱글 플레이에서도 문제없이 사용할 수 있습니다.
    • 필요에 따라 GameState, PlayerState 등 연동이 활성화되어 있습니다
  • GameModeBase
    • 좀 더 단순화된 형태로, 멀티플레이 관련 로직이 거의 포함되지 않습니다.
    • 간단한 싱글 플레이 게임 또는 직접 멀티플레이 로직을 구현하고 싶을 때 사용하기도 합니다.

 

2️⃣ C++ 클래스 GameMode 생성

  • 언리얼 에디터 상단 메뉴에서 Tools → New C++ Class를 클릭합니다.

 

  • Common Classes 목록 또는 검색창에서 GameMode를 선택합니다.

 

  • 클래스 접근 수준을 Public으로 설정한 후, 클래스 이름을 SpartaGameMode로 지정하고 Create Class 버튼을 클릭합니다.

 

 

  • 아직 아무런 로직이 구현되지 않은 기본 골격만 갖춘 상태입니다. 우선은 수정 없이 그대로 둡니다.
#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameMode.h"
#include "MainGameMode.generated.h"

UCLASS()
class BC_CH3_ASSIGNMENT_4_API AMainGameMode : public AGameMode
{
	GENERATED_BODY()	
};

 

3️⃣ GameMode 클래스 적용

  • 직접 만든 C++ GameMode 클래스를 게임에서 활용하려면, 일반적으로 블루프린트 클래스로 한 번 더 감싸는 방식을 권장합니다. 이렇게 하면, 에디터에서 세부 파라미터를 수정하기 훨씬 편리하기 때문입니다.
  • Content Browser에서 생성한 GameMode를 우클릭하고, Create Blueprint Class based on MainGameMode를 선택합니다.

 

  • 이름은 BP_MainGameMode로 지정하고, Blueprints 폴더에 생성합니다.

 

언리얼 엔진에서 GameMode를 적용하는 방법은 크게 두 가지입니다.

 

1.프로젝트 전역 설정

  • 상단 메뉴 Edit → Project Settings로 이동 → 왼쪽 목록에서 Maps & Modes 항목 선택
  • Default GameMode를 BP_MainGameMode로 지정

 

 

이제 현재 프로젝트의 모든 레벨에 대해 기본 GameMode가 BP_MainGameMode 가 됩니다.

  • GameMode 가 관리하는 Class들

 

 

 

2. 레벨 별 설정

  •  World Settings ->  Game Mode 에서 설정

 

  • 현재 열려 있는 레벨의 GameMode Override를 BP_MainGameMode로 지정

  • 이렇게 하면, 이 특정 레벨은 프로젝트 전역 설정 대신 BP_MainGameMode 를 사용하게 됩니다.

 

  • 만약 프로젝트 전역 설정과 레벨 별 설정이 충돌한다면, 레벨 별 설정 (World Settings)이 우선 적용됩니다. 즉, 레벨에서 오버라이드된 GameMode가 존재한다면 그 레벨에서는 해당 GameMode를 사용하고, 그렇지 않은 레벨은 전역에 설정된 GameMode를 사용합니다.

 

4️⃣ GameMode 기본 설정 확인

  • 현재 BP_SpartaGameMode에는 별도의 코드나 설정이 없으므로, 언리얼 엔진의 기본값이 적용됩니다.
  • World Settings 창의 ‘Selected GameMode’ 영역을 펼쳐보면 다음과 같은 기본 클래스를 확인할 수 있습니다.
    • Default Pawn Class: 레벨 시작 시 플레이어가 조종하게 될 Pawn (또는 Character) 클래스를 지정합니다.
    • HUD Class: 게임 화면에 표시되는 HUD(UI) 요소를 관리하는 클래스를 지정합니다.
    • Player Controller Class: 플레이어 입력 처리와 카메라 제어, UI와의 상호작용을 담당하는 클래스를 지정합니다.
    • Game State Class / Player State Class: 게임의 전역 상태나 플레이어별 상태를 추적할 때 사용합니다.
    • Spectator Class: 관전자 모드에서 사용할 Pawn 클래스를 지정합니다. 일반 플레이어와 다른 이동 방식이나 카메라 제어가 필요할 때 활용합니다.

 


DefaultPawnClass는 “게임 시작 시 어떤 캐릭터 (Pawn)를 플레이어에게 제공할 것인지”를 결정합니다.

(Blueprint에서 이렇게 설정했으면 C++ 에서 따로 다시 안해도 되지만 안전을 위해서 해두자)

! 주의 MainChacter는 만들어 둔 상태여야 한다.

#include "MainGameMode.h"
#include "MainCharacter.h"

AMainGameMode::AMainGameMode()
{
	// StaticClass(): 클래스 이름을 통해서 호출해주는것
	DefaultPawnClass = AMainCharacter::StaticClass();
	//
}

 

#pragma once

#include "CoreMinimal.h"
#include "GameFramework/GameMode.h"
#include "MainGameMode.generated.h"

UCLASS()
class BC_CH3_ASSIGNMENT_4_API AMainGameMode : public AGameMode
{
	GENERATED_BODY()
	
public:
	AMainGameMode();
};

 

StaticClass(): 클래스 이름을 통해서 호출해주는것.

  • 말그대로 Static 이기 때문에 객체를 생성하지 않아도 선언해주는 것

 

 

추천

 

[Unreal Engine/UE 기초] - Character 클래스 구현 | [언리얼 엔진 C++ (Unreal Engine C++)]

[페이지] Unreal Engine | 언리얼 엔진

 

 

저작자표시 동일조건 (새창열림)
'Unreal Engine/UE 기초' 카테고리의 다른 글
  • Enhanced Input System 입력 매핑 구현하기 | [언리얼 엔진 C++ (Unreal Engine C++)]
  • Character 클래스 구현 | [언리얼 엔진 C++ (Unreal Engine C++)]
  • UE_LOG & On-Screen Debug Message | [언리얼 엔진 C++ (Unreal Engine C++)]
  • 리플렉션 시스템 (Blueprint 와 C++ 관계, UCLASS, UPROPERTY, UFUNCTION) | [언리얼 엔진 C++ (Unreal Engine C++)]
DevCol
DevCol
DevCol (Development Collaboration). 함께 개발 & 공부 & IT 정보 나눔장소
  • DevCol
    DevCol (Development Collaboration)
    DevCol
  • 블로그 메뉴

    • Unreal Engine
    • TIL
    • 게임국가기술자격검정 게임프로그래밍전문가 [한국콘텐츠진흥원]
    • 분류 전체보기 (73) N
      • Unreal Engine (31) N
        • Project (2) N
        • Dev Log (0)
        • Debugging (2) N
        • Blueprint (1)
        • UE 기초 (25) N
        • UE 심화 (0)
        • TA (1) N
      • Programming Language (0)
        • C++ (0)
        • C# (0)
      • Unity Engine (0)
      • 자격증 (3)
        • 게임국가기술자격검정 [한국콘텐츠진흥원] (3)
      • Coding Test | 코딩테스트 (0)
        • 프로그래머스 기초 (0)
        • 프로그래머스 입문 (0)
      • TIL (38) N
        • Boot Camp (32) N
      • Git & Github (1)
  • 링크

    • Youtube
    • GitHub
    • itch.io
    • Blog (En)
  • 공지사항

  • 인기 글

  • 태그

    게임 개발
    Programming
    코드 카타
    Boot Camp
    Code Kata
    언리얼 엔진
    Unreal engine
    기초
    til
    cpp
    C++
    UE5
    내일배움캠프
    코드카타
    Devlog
    UE
    c
    프로그래밍
    Game Dev
    게임개발
  • 최근 글

  • GitHub Youtube itch
  • hELLO · Designed By 정상우.v4.10.6
  • DevCol
    GameMode | [언리얼 엔진 C++ (Unreal Engine C++)]
    상단으로

    티스토리툴바