[이득우 언리얼 C++] 4. 게임플레이 프레임워크

    💻 Code : https://github.com/tedison7/ArenaBattle

    게임 모드

    게임모드(Game Mode)는 게임의 규칙을 정하고, 게임의 틀을 잡아주는 역할을 한다. 폰(Pawn)은 플레이어가 조종할 수 있는 액터를 뜻한다. 게임모드와 폰을 직접 제작해보자.

    • 기존 Step1 레벨을 다른이름으로 저장 기능을 통해 Step2로 저장

    • GameModeBase 클래스를 부모로하는 ABGameMode 클래스를 생성
    • Pawn 클래스를 부모로하는 ABPawn 클래스를 생성

    • Step2 레벨에서 월드세팅에 GameMode Override 항목을 생성한 ABGameMode로 선택
    • 플레이 버튼을 눌러보면 월드 아웃라이너에 ABGameMode와 DefaultPawn이 생성됨을 확인

    • ABGameMode의 코드를 수정하여 DefaultPawnClass가 직접 생성한 ABPawn으로 지정한다.

    플레이어의 입장

    • 플레이어 컨트롤러(PlayerController) : 게임에서 폰을 조종하는 역할을 맡는다.
    • 폰(Pawn) : 폰은 플레이어 컨트롤러에게 조종당하는 액터이다. 플레이어 컨트롤러를 통해 다른 폰으로 옮겨가 조종할 수 있다.
    • 빙의(Possess) : 플레이어 컨트롤러를 통해 폰을 조종하는 행위

    플레이 버튼을 눌러 플레이어 입장하는 과정은 다음과 같다.

    • 플레이어 컨트롤러 생성
    • 플레이어 폰의 생성
    • 플레이어 컨트롤러가 플레이어 폰을 빙의
    • 게임 시작

    ABPlayerController 클래스를 직접 생성하여 과정을 확인해보자. 책에 있는 예제 코드를 따라하였고 한가지 달라진 점은 ABController의 Possess 함수는 4.22 버전부터 OnPossess 함수로 이름이 변경되었다. 코드 작성이후 실행하면 로그를 통해 호출 순서를 확인할 수 있다.

    ThirdPersonCharacter을 레벨에 배치하고 Auto Possess Player 항목을 Player 0로 설정하면 ABPawn을 생성하지 않고 배치된 캐릭터에 빙의 된다.

    이를 코드에서 설정하고자 한다면 다음과 같이 작성하면 된다.

    요약

    • 게임모드, 플레이어 컨트롤러, 폰에 대한 개념 이해
    반응형

    댓글

    Designed by JB FACTORY