본문 바로가기

게임 프로그래밍

UE5 GameMode Setup Code

GameMode란?

https://docs.unrealengine.com/4.27/ko/InteractiveExperiences/Framework/GameMode/

 

게임 모드와 게임 스테이트

Game Mode, 게임 모드와 Game State, 게임 스테이트에 대한 개요입니다.

docs.unrealengine.com

 

플레이중인 게임의 정보를 처리하는 클래스는 크게 Game Mode (게임 모드)와 Game State (게임 스테이트), 둘입니다.

가장 제약이 없다는 게임일지라도 토대가 되는 규칙들이 있으며, 이러한 규칙들이 게임 모드를 이룹니다. 가장 기본적인 수준에서 이러한 규칙에 포함되는 것은 다음과 같습니다:

  • 존재하는 플레이어와 관람자의 수는 물론, 허용된 플레이어와 관람자 최대 수
  • 플레이어가 게임에 들어오는 방식, 스폰 위치 선택 규칙과 기타 스폰/리스폰 동작 포함 가능
  • 게임 일시정지 가능 여부, 게임 일시정지 처리 방식
  • 레벨간의 전환, 게임의 시네마틱 모드 시작 여부 포함

게임에 규칙 관련 이벤트가 발생하고 트래킹을 통해 모든 플레이어와 공유할 필요가 있을 때, 그 정보는 게임 스테이트 에 보관되고 그를 통해 동기화됩니다. 이 정보에 포함되는 것들은 다음과 같습니다:

  • 게임 실행 기간 (로컬 플레이어 참가 전 실행 시간 포함).
  • 각 플레이어의 게임 참가 기간, 그 플레이어의 현재 상태.
  • 현재 게임 모드의 베이스 클래스.
  • 게임 시작 여부.

Level 모드 지정방법(Mode Override)

 

적용대상의 Level -> 월드셋팅 최상단 -> GameMode 카테고리 -> 게임모드 오버라이드 체크


.header

// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

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

/**
 * 
 */
UCLASS()
class MHPROJECT_API AMHGameMode : public AGameMode
{
	GENERATED_BODY()
private:
	AMHGameMode();

	
};

.cpp

// Fill out your copyright notice in the Description page of Project Settings.


#include "MHGameMode.h"

AMHGameMode::AMHGameMode()
{
	//패키지를 로드하는 다양한 방법중 생성자 오버라이딩에서 패키지를 호출할경우
	//ConstructorHelpers를 사용하여 에셋을 로드한다.
	
	static ConstructorHelpers::FClassFinder<APawn> BasePlayerClass(TEXT("/Game/ThirdPerson/Blueprints/BP_ThirdPersonCharacter.BP_ThirdPersonCharacter_C"));
	//컨트롤러가 미리 있어야함
    static ConstructorHelpers::FClassFinder<APawn> MHPlayerControllerClassRef(TEXT("/Script/MHProject.MHPlayerController"));
	
	if(BasePlayerClass.Class)
	{
		DefaultPawnClass = BasePlayerClass.Class;
	}

	
	//DefaultPawnClass = AMHPlayerController::StaticClass();

	if(MHPlayerControllerClassRef.Class)
	{
		PlayerControllerClass = MHPlayerControllerClassRef.Class;
	}
	
}

결과

 

게임모드 시스템으로 가질수있는 장점

  1. 다양한 씬에 따른 플레이어의 제어가 가능해진다.
  2.  개발자가 직접 구현해야될 게임 옵션들을 언리얼의 구현된 기능들을 활용하여 작업 속도를 높일수있다.

 

GameMode느낀점

Unreal에서 GameMode란 필수적으로 사용해야하는 시스템입니다.

사용해보면서 GameMode가 존재하기에 플레이어 컨트롤러 시스템의 컨넥팅이 어디서 발생하는지 조금 이해가 가능했고
플레이어가 다수있는 게임을 제작할 경우 GameMode의 사용법이 중요할것이라 생각이 듭니다.