언리얼 엔진 본캠프 7주차-2 언리얼 엔진 C++ : GameMode와 캐릭터

정재훈·2025년 1월 28일
0

unreal engine

목록 보기
19/45

<GameMode>

GameMode 클래스 : 총괄 관리자(TextRPG의 GameManager)

역할

  1. 플레이어 캐릭터 관리 : 플레이어(Pawn 클래스 or Character 클래스)의 스폰 및 정보 관리
    • 팀 기반인 게임에서는 팀 구성도 관리
  2. PlayerController 클래스 : 키보드, 마우스로 캐릭터를 조정할 수 있게 만들어 주는 클래스
    • 플레이어가 사용할 PlayerController를 정의하여 연결
    • 캐릭터 조종뿐만 아니라 플레이어의 UI/HUD도 관리
    • 플레이어와 서버 간의 통신 중계도 하고
    • 플레이어 초기화에도 사용함
      • PlayerControllerPlayerState를 참조하기 때문에 이걸 사용해서 초기화할 수 있다
  3. GameState 클래스와 PlayerState 클래스
    • GameState 클래스 : 게임의 현재 상태(진행 상황, 타이머, 스폰된 아이템 개수 등)와 서버-클라이언트 간 동기화 되는 데이터를 저장하는 클래스
    • PlayerState 클래스 : 개별 플레이어의 상태, 정보를 저장하는 클래스
    • GameStatePlayerState를 사용해서 서버-클라이언트 간 동기화를 수행
  4. 게임 규칙 관리 : 승리 조건, 점수 계산등의 규칙 관리
  5. 레벨 전환 및 상태 관리 : 레벨을 변경하거나 게임의 상태(시작, 진행, 종료)를 관리
  6. HUD 및 UI 관리 : 어떤 HUD를 사용할지, 어떤 UI를 사용할지 정의

클래스

  • GameModeBase : GameMode의 기본 클래스로 최소한의 기능만 제공
  • GameMode : GameModeBase를 확장한 클래스로 더 많은 멀티플레이 기능과 게임 로직을 제공

주요 프로퍼티

  • DefaultPawnClass : 게임에서 플레이어가 기본적으로 사용할 캐릭터 객체(Pawn, Character)를 담을 변수(=프로퍼티)
  • PlayerControllerClass : 플레이어 입력을 처리할 PlayerController 객체를 담을 변수
  • GameStateClass : 게임의 상태 정보를 저장하고 클라이언트와 동기화하는 GameState 객체를 담을 변수
  • PlayerStateClass : 각 플레이어의 정보를 저장하는 PlayerState 객체를 담을 변수
  • HUDClass : HUD를 담당하는 객체를 담을 변수
  • SpectatorClass : 관전자 모드에서 사용할 Pawn 객체를 담을 변수

주요 함수

  • StartPlay(): 게임이 시작될 때 호출되며 초기화 논리를 작성하는 함수
  • HandleStartingNewPlayer(AController NewPlayer) : 새로운 플레이어가 접속했을 때 호출되며, 플레이어 초기화를 처리
  • Logout(AController Exiting) : 플레이어가 게임을 떠날 때 호출
  • K2_PostLogin(APlayerController NewPlayer) : 플레이어가 로그인한 직후 호출되는 블루프린트 노출 함수
  • RestartPlayer(AController NewPlayer) : 플레이어를 다시 스폰할 때 사용되는 함수(ex) 리스폰)

<Pawn과 Character>

Pawn 클래스

: 조작 가능한 객체들의 부모클래스

  • 컴포넌트는 루트 컴포넌트 하나만 있고 아무것도 구현되어 있는 게 없는 상태
  • 기본적인 움직임과 입력에 대한 처리는 지원(PlayerController와 연결 가능)
    • 하지만 입력에 대한 처리를 어떤 식으로 할 것인가는 직접 구현해야함

Character 클래스

: Pawn클래스를 상속하고 인간형 캐릭터를 지원하기 위해 더 높은 수준으로 설계된 클래스

  • CapsuleComponent, ArrowComponent, SkeletalMeshComponent, CharacterMovementComponent가 추가되어 있음
  • ArrowComponent : 캐릭터가 어느 방향을 바라보고 있는지 표시해주기 위한 컴포넌트
    • 로직과는 별개로 어디가 정면인지 알려주기 위해 사용
  • SkeletalMesh : 뼈대를 중심으로 "움직이는 Mesh"
    • 뼈가 움직이면 뼈에 붙어있는 Mesh도 함께 움직임
  • CharacterMovementComponent : 이동, 점프, 중력, 네트워크까지 다양한 입력에 대해 "이런 식으로 처리해라, 저런 식으로 처리해라" 라는 (이동 로직, 물리 로직)을 구현해놓은 컴포넌트
  • SetupPlayerInputComponent() : 입력에 의해 호출될 함수를 바인딩하는 함수(IA와 함수를 바인딩)

profile
드가자

0개의 댓글