게임모드

언리얼 엔진의 게임모드(GameMode)란 게임의 전반적인 규칙과 흐름을 총괄 관리하는 일종의 컨트롤 타워 역할을 하는 클래스입니다.
간단하게 게임이 어떻게 작동해야 하는지 제어하는 역할을 합니다.

싱글 플레이에서는 서버와 클라이언트 개념이 나뉘지 않으므로, 게임모드가 온전히 로컬에서 동작하여 게임 전체를 제어합니다.

어떤 폰(혹은 캐릭터)을 플레이어에게 스폰해줄지, 어떤 플레이어컨트롤러를 사용할지, 승패 조건이나 점수 계산 방법은 어떻게 설정할지 등 게임 플레이의 핵심 로직을 담당합니다.

프로젝트 전역(기본) 혹은 레벨별로 필요한 게임모드를 구분해 설정할 수 있습니다.
예시로 튜토리얼 맵 전용이나 일반 맵 전용을 구분할 수 있습니다.

게임모드 주요 기능과 책임

게임이 시작될 때 혹은 플레이어가 리스폰 될 때 디폴트 폰 클래스(Default Pawn Class)로 지정한 폰 혹은 캐릭터 클래스를 자동으로 스폰합니다.

스폰된 폰을 플레이어가 조작할 수 있도록 플레이어 컨트롤러(Player Controller)와 연동해주는 역할을 합니다.

플레이어의 입력(키보드, 마우스, 게임패드 등)을 전달하고 처리하는 플레이어 컨트롤러가 어떤 클래스로 동작할지 설정합니다.

점수 계산, 타이머, 라운드 제어, 난이도 등 게임 전반의 규칙을 정의하고 유지합니다.

특정 점수 달성, 보스 몬스터 처치, 제한 시간 종료 등 승리와 패배를 결정하는 조건을 관리합니다.

승리 혹은 패배가 확정되면, 게임 오버 화면을 띄우거나 다음 레벨로 전환하는 식의 후속 처리를 담당합니다.

게임 스테이트(Game State)와 플레이어 스테이트(Player State)를 사용합니다.

게임모드와 게임모드 베이스

게임 모드(GameMode)와 게임모드 베이스(GameModeBase) 두 클래스가 있습니다.

게임모드는 언리얼에서 제공하는 멀티플레이 기능(세션, 플레이어 연결 로직 등)을 일부 포함하고 있으며, 싱글 플레이에서도 문제없이 사용할 수 있습니다.
필요에 따라 게임 스테이트와 플레이어 스테이트등의 연결이 활성화되어 있습니다.
멀티플레이어 슈팅과 같은 표준 게임 유형에 적합합니다.

게임모드 베이스는 모든 게임모드의 부모클래스로 좀 더 단순화된 형태입니다.
멀티플레이 관련 로직이 거의 포함되어있지 않습니다.
간단한 싱글 플레이 게임 또는 직접 멀티플레이 로직을 구현하고 싶을 때 사용하기도 합니다.

언리얼엔진5의 게임모드는 4.14버전에서의 AGameMode를 단순화시키고 효율화시킨 버전에서 시작됐습니다.
4.14버전의 AGameMode는 마찬가지로 존재하며, 기능도 그대로이지만 4.14 버전의 AGameModeAGameModeBase의 자손이 되었습니다.

게임모드 적용

C++나 블루프린트로 생성한 게임모드 클래스를 게임에서 활용하려면, 프로젝트 전역적으로 설정하는 방법과 레벨별로 설정하는 방법 2가지가 있습니다.

프로젝트 전역 설정

상단 메뉴 > 편집 > 프로젝트 세팅 > 맵 & 모드 > Default Modes 카테고리에 접근하면 됩니다.

GameMode-ProjectSettings

GameMode-DefaultModes

GameMode-DefaultGameMode

위의 이미지 처럼 프로젝트 전역에서 사용할 게임모드를 선택할 수 있습니다.

레벨별 설정

상단 메뉴 > 창 > 월드 세팅으로 패널을 연 후 GameMode 카테고리에 접근하면 됩니다.

GameMode-WorldSettings

GameMode-WorldSettings_GameMode

GameMode-WorldSettings_GameModeOverride

위의 이미지 처럼 레벨별로 사용할 게임모드를 설정할 수 있습니다.

만약 프로젝트 전역 설정과 레벨별 설정 두 가지 모두 설정했다면 레벨별 설정이 우선 적용됩니다.
즉, 레벨에서 오버라이드된 게임모드가 존재한다면 그 레벨에서는 해당 게임모드를 사용하고, 그렇지 않은 레벨은 전역에서 설정된 게임모드를 사용합니다.

게임모드 기본 설정 확인

게임모드를 생성한 후 별도의 코드나 설정이 없을 경우 언리얼 엔진의 기본값이 적용됩니다.

레벨별로 설정한 게임모드를 참고해서 살펴보겠습니다.

GameMode-SelectedGameMode

위와 같은 기본 클래스들이 세팅되어있는 것을 알 수 있습니다.

게임을 시작하면 게임모드에 기본 설정된 클래스들이 자동으로 스폰되고, 만약 사용자가 다른 클래스를 설정한 경우 설정된 클래스로 자동 스폰 됩니다.

참고

게임 모드와 게임 스테이트

UE5 카테고리 내 다른 글 보러가기

댓글남기기