[언리얼 엔진] 게임 플레이 프레임 워크

게임 플레이 프레임 워크(Gameplay Framework)는 모든 프로젝트에 있는 게임의 룰, 플레이어 입력, 아바타, 카메라, 플레이어 HUD를 관리하기 위한 C++ 또는 블루 프린트 클래스 컬렉션이다.


 

게임 모드 클래스

게임 플레이 프레임 워크(Gameplay Framework)에는 게임모드 클래스(Game Mode Class)가 있는데, 이것은 게임의 규칙을 설정하는 데 사용한다. 그리고 게임의 핵심 기능들을 정의하기 위한 클래스들을 담고 있다.

 

예를 들어,  게임모드 클래스는 1인칭 슈팅 게임에서 적 생성 로직이 들어있는 시스템을 가지고 있거나 레이싱 게임에서 시간을 체크하는 로직을 담고 있을 만한 공간이다.


게임 모드 클래스(Game Mode Class)에 붙어 있는 게임 플레이 프레임워크 리스트

·DefaultPawn 클래스

·Hud 클래스

·PlayerController 클래스

·Spectator 클래스

·ReplaySpectator 클래스

·PlayerState 클래스

·GameState 클래스

 

게임 모드와 의존 관계들이 생성되고 나면, 게임 모드를 프로젝트에 할당하거나 프로젝트 안의 레벨별로 모드를 설정할 수 있다. 프로젝트는 대부분 2~3개 정도의 게임 모드들을 가지고 있는데 이때 기본으로 설정될 수 있는 게임 모드는 오직 한 개다.

 

기본 게임 모드는 프로젝트 설정으로 간 후 Map & Modes → Default Modes에서 설정할 수 있다. 게임모드가 기본 모드로 설정되고 나면 모든 레벨이 시작될 때 기본적으로 이 모드를  사용한다. 그리고 World Settings 탭에 있는 GameMode Override 속성을 바꿔서 게임 모드를 변경할 수 있다.


컨트롤러 클래스

컨트롤러 클래스는 게임 내 폰(Pawn)을 제어한다. PlayerController 클래스는 플레이어로부터 입력을 받고 플레이어 폰을 조정하며, 컨트롤러 클래스에는 두 가지 기본 타입이 있는데 PlayerController와 AIController이다.

PlayerController 클래스는 플레이어 입력을 관리하고 게임 내 폰에 빙의(Possess)해 조정한다. 

 

플레이어 입력은 마우스, 키보드, 게임패드, 터치, 엑스박스 키넥트와 같이 다양하다. PlayerController 클래스는 마우스 커서의 표시 성에도 관여하며 마우스 클릭 이벤트에 어떻게 반응하는지도 처리한다.

게임 내 모든 사람 플레이어는 PlayerController 클래스를 가지고 있으며 캐릭터에 할당된다. 

 

예를 들어, 게이머가 멀티플레이어 게임에 입장하면 PlayerController클래스가 게임모드 클래스 내에서 생성되며 게이 세션이 종료할 때까지 플레이어에 할당된다. 중요한 점은 PlayerController 클래스는 게임 월드에서 물리학적으로 표현되지 않는다는 점이다.


폰, 캐릭터 클래스

언리얼 엔진에서 폰(Pawn)은 플레이어 아바타를 뜻하는 용어이다. 폰 클래스는 PlayerController 클래스부터 입력을 취하고 게임 내 플레이어의 물리적인 표현을 담당한다.

 

 

이것은 레벨 안에 있는 플레이어의 위치를 의미하기도 하며 충돌 박스를 가진 복잡한 스켈레탈 메시를 뜻하기도 한다. 게임모드에는 DeafaultPawn 클래스 속성에 할당될 수 있는 여러 가지 클래스들이 있는데,

 

예를 들어 Pawn, Character, Vehicle 클래스들이 있다. Pawn 클래스는 다한한 폰 타입들을 생성할 수 있는 일반 클래스이며 Character나 Vehicle 클래스들은 특정 목적을 위해 사용되는 클래스들이다.

 

보통 대부분 게임에서는 일반적인 폰이 사용되는 것을 볼 수 있다. 폰이 컨트롤러 클래스부터 방향을 얻기 때문에 폰은 PlayerController나 AIController 클래스에 의해 제어된다.


허드 클래스

허드(HUD) 클래스는 2D 인터페이스를 플레이어 스크린에 보여주고 인게임 HUD(Head Up Display)를 만든다.

 

게임의 전체 HUD 시스템은 HUD 클래스 안에서 작성될 수 있다. 언리얼 엔진은 인터페이스를 제작할 수 있게 해주는 UMG(Unreal Motion Graphic)를 제공한다. UMG는 복잡한 인터페이스와 HUD를 제작할 수 있도록 도구와 클래스들을 제공한다.


프레임 워크 클래스 관계

이 흐름도는 게임 플레이 클래스끼리의 상관관계를 나타내며, 게임은 GameMode와 GameState로 이루어진다.

게임에 참여하는 사람 플레이어는 PlayerController에 연관된다.

 

이러한 PlayerController는 플레이어가 레벨 내 물리적 존재를 가질 수 있도록 Pawn에 빙의된다.

 

PlayerController는 플레이어에게 입력 컨트롤, 헤드업 디스플레이(HUD), 카메라 시야 처리를 위한 PlayerCameraManager 등을 줄 수 있다.

댓글

Designed by JB FACTORY