언리얼/언리얼 학습

GameMode

코드망령 2026. 6. 1. 18:08

#GameMode

현재 레벨의 게임 규칙을 관리하는 객체

플레이어가 어떻게 스폰되는지

승리와 패배 조건이 무엇인지

게임이 어떤 방식으로 진행되는지 등을 담당한다.


생명 주기

게임 시작
  |
  v
MainMenu 레벨 로드
  |
  v
MainMenu GameMode 생성
  |
  v
Lobby 레벨 이동
  |
  v
MainMenu GameMode 소멸
  |
  v
Lobby GameMode 생성
  |
  v
Battle 레벨 이동
  |
  v
Lobby GameMode 소멸
  |
  v
Battle GameMode 생성
  |
  v
게임 종료

GameMode는 레벨마다 새롭게 생성된다.

레벨이 변경되면 기존 GameMode는 파괴되고

새로운 GameMode가 생성된다.


사용 목적

현재 레벨의 게임 규칙을 관리한다.

플레이어 관리

  • 플레이어 스폰 위치 결정
  • 기본 Pawn 지정
  • PlayerController 지정
  • HUD 지정

게임 규칙 관리

  • 승리 조건
  • 패배 조건
  • 점수 계산
  • 라운드 진행

게임 흐름 관리

  • 게임 시작
  • 게임 종료
  • 재시작
  • 라운드 전환

사용 예시

FPS 게임

  • 플레이어가 죽으면 리스폰
  • 킬 수 계산
  • 승리 팀 결정

RTS 게임

  • 자원 관리
  • 승리 조건 판정
  • 게임 종료 처리

MOBA 게임

  • 넥서스 파괴 시 승리
  • 팀 관리
  • 플레이어 스폰 관리

코드 예시

class AMyGameMode : public AGameModeBase
{
    GENERATED_BODY()

public:
    virtual void BeginPlay() override;
};

주요 설정

Default Pawn Class

플레이어가 조종할 기본 Pawn

DefaultPawnClass = AMyCharacter::StaticClass();

PlayerController Class

플레이어 입력을 처리할 컨트롤러

PlayerControllerClass = AMyPlayerController::StaticClass();

HUD Class

게임 화면 UI

HUDClass = AMyHUD::StaticClass();

GameState Class

게임 상태 저장

GameStateClass = AMyGameState::StaticClass();

주요 함수

BeginPlay()

레벨 시작 시 호출

virtual void BeginPlay() override;

주로

  • 게임 초기화
  • 타이머 시작
  • 게임 시작 이벤트

등을 수행한다.


PostLogin()

플레이어가 접속했을 때 호출

virtual void PostLogin(APlayerController* NewPlayer) override;

주로

  • 플레이어 등록
  • 팀 배정
  • 플레이어 정보 초기화

등을 수행한다.


Logout()

플레이어가 나갔을 때 호출

virtual void Logout(AController* Exiting) override;

주로

  • 플레이어 제거
  • 팀 정보 갱신
  • 게임 종료 체크

등을 수행한다.


RestartPlayer()

플레이어 리스폰

RestartPlayer(AController* NewPlayer);

주로

  • 부활 처리
  • 시작 위치 재배치

등을 수행한다.


특징

  • 레벨마다 하나씩 존재한다.
  • 레벨 변경 시 새로 생성된다.
  • 현재 레벨의 규칙을 담당한다.
  • 서버에만 존재한다.
  • 클라이언트에서는 접근할 수 없다.

GameMode와 GameState

GameMode

게임 규칙 담당

예시

  • 승리 조건
  • 패배 조건
  • 점수 계산
  • 플레이어 스폰

서버에만 존재


GameState

게임 상태 저장

예시

  • 남은 시간
  • 현재 점수
  • 현재 라운드
  • 팀 점수

서버와 클라이언트 모두 존재


GameMode와 GameInstance 차이

구분 GameMode GameInstance
생성 시점 레벨 시작 게임 시작
소멸 시점 레벨 종료 게임 종료
레벨 이동 시 새로 생성 유지
서버/클라이언트 서버만 존재 둘 다 존재
역할 게임 규칙 관리 전역 데이터 관리

GameMode는 월드(World)에 존재하는 Actor이다.

하지만 일반적으로 맵에 직접 배치하지 않고

레벨이 시작될 때 엔진이 자동으로 생성한다.

'언리얼 > 언리얼 학습' 카테고리의 다른 글

FOnlineSessionSettings  (0) 2026.06.03
FInputModeUIOnly  (0) 2026.06.02
GameInstance  (0) 2026.06.01
Delegate (델리게이트)  (0) 2026.06.01