Unreal Engine - GameMode, Pawn, Character

2025. 1. 22. 16:43·Unreal Engine

1. GameMode


GameMode란

  • 게임의 전반적인 규칙과 흐름을 총괄 관리하는 컨트롤 타워 역할하는 클래스
    • 어떤 캐릭터를 스폰하는지,
    • 어떤 PlayerController를 사용할지,
    • 점수계산 방식 등의 주요 게임 플레이 로직을 담당한다.
  • 크게, GameMode와 GameModeBase 클래스가 있다.
    • GameModeBase는 단순화되어있으며, 간단한 게임에서 사용하고 멀티플레이어 로직이 없다.
    • GameMode 클래스는 좀 더 복잡하고 무겁지만, 더 많은 기능이 있으며, 멀티플레이어 로직이 존재한다.

GameMode의 주요 기능

  • 플레이어 Pawn/Character 스폰
  • PlayerController 지정
  • 게임 규칙 관리
    • 점수 계산, 타이머, 라운드 제어
    • 승/패 결정
    • 게임 오버 화면이나 다음 레벨로 전환하는 등의 후속 처리
  • GameState/PlayerState 사용
    • 상태 저장과 관리를 체계적으로 할 때 사용 
      • GameState : 게임 전역 데이터(점수, 타이머 등)을 관리
      • PlayerState : 플레이어별 정보(체력 등) 을 관리

게임모드 클래스의 주요 기능을 볼 수 있는 BP의 디테일 창 모습

GameMode 지정

  • GameMode 는 월드세팅에서 적용할 수 있고, 
  • 프로젝트 세팅에서도 설정해 줄 수 있는데
  • 만약 두 GameMode가 다르다면, 월드에서 세팅해준 GameMode를 1순위로 적용한다.

 

 

2. Pawn


Pawn 클래스란

  • 플레이어 혹은 AI가 Possess할 수 있는 가장 상위 클래스이다.
  • 이동로직, 충돌, 중력, 네트워크 이동 등의 기능은 포함되어 있지 않다. -> 이 경우 Character 클래스가 더 좋다.
  • 즉, Pawn 클래스는 비행기, 드론, 카메라 등 캐릭터 형태가 아닌 것을 구현할 때 유용하다.

 

 

3. Character


Character 클래스란

  • Pawn을 상속받아 만들어진 클래스 중 하나로 UCharacterMovementComponent를 포함하고 있다.
  • 달리기, 점프 등 움직임에 대한 기능이 구현되어있어 보행형 캐릭터를 만들 때 유용하다.

Character 클래스 만들어보기

  • C++에서 한 기본 설정은, spring arm 컴포넌트와 카메라를 달아주는 것이다.
    • 헤더파일의 중복을 없애주고 빠른 컴파일을 위해 .h 파일에서 전방선언을 해 주었다.
    • .cpp 파일에서는 spring arm과 카메라 세팅을 했는데, 이때 spring arm만 pawn과 함께 회전시키도록 해주었다.
#include "CoreMinimal.h"
#include "GameFramework/Character.h"
#include "SpartaCharacter.generated.h"

class USpringArmComponent;
class UCameraComponent;

UCLASS()
class SCC_PROJECT_API ASpartaCharacter : public ACharacter
{
	GENERATED_BODY()

public:
	ASpartaCharacter();

protected:
	virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

public:
	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
	USpringArmComponent* SpringArmComp;

	UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera")
	UCameraComponent* CameraComp;
};
#include "SpartaCharacter.h"
#include "Camera/CameraComponent.h"
#include "GameFramework/SpringArmComponent.h"

ASpartaCharacter::ASpartaCharacter()
{
	PrimaryActorTick.bCanEverTick = false;

	SpringArmComp = CreateDefaultSubobject<USpringArmComponent>(TEXT("SpringArm"));
	SpringArmComp->SetupAttachment(RootComponent);
	SpringArmComp->TargetArmLength = 300.f;
	SpringArmComp->bUsePawnControlRotation = true; //카메라 회전 세팅

	CameraComp = CreateDefaultSubobject<UCameraComponent>(TEXT("Camera"));
	CameraComp->SetupAttachment(SpringArmComp, USpringArmComponent::SocketName); //끝부분에 붙이기
	CameraComp->bUsePawnControlRotation = false;
}


void ASpartaCharacter::SetupPlayerInputComponent(UInputComponent* PlayerInputComponent)
{
	Super::SetupPlayerInputComponent(PlayerInputComponent);

}
  • BP에서는 캐릭터의 스켈레탈 메시 설정과 위치와 방향세팅을 하였다.
    • 언리얼에서 캐릭터는 x축 방향이 앞 방향(화살표 컴포넌트의 방향)이므로, -90도 회전을 통해 맞춰주고
    • 캡슐 컴포넌트의 크기와 스켈레탈 메시의 위치가 잘 맞도록 조절해 주었다.

'Unreal Engine' 카테고리의 다른 글

Unreal Engine - 캐릭터 만들기  (0) 2025.01.24
Unreal Engine - Enhanced Input System (PlayerController)  (2) 2025.01.22
Unreal Engine - 클래스와 변수의 리플렉션 (매크로 지정자 위주)  (0) 2025.01.22
Unreal Engine - Actor의 생성과 응용  (0) 2025.01.21
Unreal Engine - 개발 환경 세팅 및 빌드 프로세스  (0) 2025.01.21
'Unreal Engine' 카테고리의 다른 글
  • Unreal Engine - 캐릭터 만들기
  • Unreal Engine - Enhanced Input System (PlayerController)
  • Unreal Engine - 클래스와 변수의 리플렉션 (매크로 지정자 위주)
  • Unreal Engine - Actor의 생성과 응용
gbleem
gbleem
gbleem 님의 블로그 입니다.
  • gbleem
    gbleem 님의 블로그
    gbleem
  • 전체
    오늘
    어제
    • 분류 전체보기 (184)
      • Unreal Engine (73)
      • C++ (19)
      • 알고리즘(코딩테스트) (27)
      • TIL (60)
      • CS (4)
      • 툴 (1)
  • 블로그 메뉴

    • 홈
    • 카테고리
  • 링크

    • 과제용 깃허브
    • 깃허브
    • velog
  • 공지사항

  • 인기 글

  • 태그

    motion matching
    additive animation
    상속
    enhanced input system
    actor 클래스
    applydamage
    템플릿
    gamestate
    addonscreendebugmessage
    const
    매크로 지정자
    map을 vector로 복사
    character animation
    싱글턴
    blend pose
    DP
    C++
    BFS
    Vector
    cin함수
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
gbleem
Unreal Engine - GameMode, Pawn, Character
상단으로

티스토리툴바