[이득우의 언리얼 C++ 게임 개발의 정석] Chapter 4. 게임플레이 프레임워크

수민·2023년 3월 14일
0
post-thumbnail

이득우의 언리얼 C++ 게임 개발의 정석을 읽고 개인 공부 목적으로 요약 정리한 글입니다!

구매링크


👀 게임모드 (GameMode)

게임의 규칙, 틀 관리
플레이어 입장 시 플레이어를 점검하고 게임에 입장한 플레이어가 조종할 액터를 생성해 전달

폰 (Pawn)

: 플레이어 컨트롤러에게 조종당하는 액터

플레이어 컨트롤러 (PlayerController)

: 게임 세계에서 플레이어와 1:1로 소통하며 폰을 조종한다.
플레이어 입장 시 배정, 배정되면 변경할 수 없음

플레이어 컨트롤러두뇌로서 꼭두각시처럼 조종하는 거다!!

플레이어가 플레이어 컨트롤러를 통해 폰을 조종하는 행위 = "빙의"

  1. 플레이어 컨트롤러가 폰을 빙의
  2. 플레이어의 의지는 플레이어 컨트롤러를 거쳐 폰에게 전달
  3. 폰은 플레이어의 의지에 따라 움직인다!

플레이어는 플레이어 컨트롤러에 의해 폰을 변경하여 조종할 수도 있다


👀 플레이어가 입장(로그인)하면 생기는 일들

1. 플레이어 컨트롤러 생성
2. 플레이어 폰 생성
3. 플레이어 컨트롤러가 플레이어 폰을 빙의
4. 게임 시작

GameModeBase

AHunt_PrototypeGameModeBase::AHunt_PrototypeGameModeBase()
{
	DefaultPawnClass = AMyPawn::StaticClass();
	PlayerControllerClass = AMyPlayerController::StaticClass();
}

void AHunt_PrototypeGameModeBase::PostLogin(APlayerController* NewPlayer)
{
	Super::PostLogin(NewPlayer);
    // 플레이어가 로그인 완료할 때 호출
    // 함수 내부에서 빙의 작업 이루어짐![](https://velog.velcdn.com/images/uiwns811/post/1046c1a2-6faa-437f-b100-cd687e3d57f6/image.svg)

}

생성자에서 게임 모드의 DefaultPawn 속성에 Pawn을 넣는다.
AMyPawn 액터를 생성하고 지정 X
StaticClass() 함수를 통해 AMyPawn의 클래스 정보를 지정 O

멀티 플레이 환경에서는 플레이어가 입장할 때마다 클래스 정보를 기반으로 폰을 생성해야 한다.

PlayerController

void AMyPlayerController::PostInitializeComponents()
{
	Super::PostInitializeComponents();
}

void AMyPlayerController::OnPossess(APawn* aPawn)
{
	Super::OnPossess(aPawn);
    // OnPossess 함수를 통해 Pawn을 빙의
}

Pawn

void AMyPawn::PostInitializeComponents()
{
	Super::PostInitializeComponents();
}

void AMyPawn::PossessedBy(AController* NewController)
{
	Super::PossessedBy(NewController);
    // PossessedBy 함수
}
profile
우하하

0개의 댓글