[언리얼 C++] 게임플레이 프레임워크
게임플레이 프레임워크는 게임의 틀을 이루는 게임 규칙, 플레이어 입력과 컨트롤, 카메라, 유저 인터페이스 등의 코어 시스템입니다.
1. 기본 프레임워크 요소
다양한 게임 프레임워크 요소들이 서로 조합되어 게임을 이루게 됩니다.
게임을 이루는 기본 프레임워크 요소들은 다음과 같습니다.
- Game Mode
- Pawn
- Controller
- Camera
- User Interface
이제 위의 기본 프레임워크 요소들에 대해 간단히 설명하도록 하겠습니다.
게임 프레임워크의 바탕은 Game Mode입니다. Game Mode에서는 게임의 규칙을 설정하며, 플레이어의 스폰이나 게임 UI의 노출 처리를 할 수 있습니다.
플레이어 셋업이 이루어지는 곳은 Player Controller로, 이것이 Pawn을 빙의합니다. Pawn은 게임 내 플레이어의 물리적 표현인 반면, Controller는 Pawn에 빙의되어 그 동작에 대한 규칙을 설정할 수 있습니다.
그리고 Pawn의 특수한 서브 클래스인 Character가 있는데, Character는 달리기나 점프같은 이동 함수성이 내장되어 있습니다.
Pawn 자체에 이동이나 기타 게임 로직용 규칙을 포함시킬 수 있지만, 그러한 함수성은 Controller에 포함시킬 수도 있습니다. Controller는 플레이어의 입력을 받는 Player Controller 아니면 컴퓨터의 자동 제어를 받는 AI Controller가 될 수 있습니다. AI Controller에는 컴퓨터의 자동 제어가 필요한 Character에 대한 이동 규칙과 행동 규칙이 포함되어 있습니다.
Camera에 제공되는 시야는 플레이어에게만 의미가 있으므로, 플레이어가 조종하는 Character에 있는 Camera Component 하나만 Player Camera에 사용될 것입니다.
User Interface로는 게임에 필요한 메인 메뉴창, 설정창 그리고 게임 결과창 등등 여러가지 게임 UI들을 표현하여 화면에 노출시킬 수 있습니다.
2. 게임 흐름
엔진 시작 및 게임 실행 프로세스 방법은 크게 두가지, 에디터 방법과 독립형 방법이 있습니다.
일반적인 이벤트 순서는 엔진을 초기화시키고, Game Instance를 생성 및 초기화한 뒤, 레벨을 로드하고, 마지막으로 플레이를 시작합니다. 하지만 에디터 모드와 독립형 모드 사이의 차이점이 있는데, 일부 함수가 호출되는 정확한 순서와 어떤 함수가 호출되는지가 다릅니다.
아래 플로우 차트는 두 방법으로 병렬 실행했을때 게임 시작 전 수렴할때까지의 흐름을 보여줍니다.
- 에디터 모드
에디터 모드는 에디터에서 플레이와 에디터에서 시뮬레이트에서 사용됩니다.
엔진은 에디터 실행에 필요하므로 즉시 초기화 및 시작되나, Game Instance와 같은 오브젝트의 생성 및 초기화는 사용자가 버튼을 눌러 PIE 또는 SIE 세션을 실행할때까지 연기됩니다. 추가로 레벨의 액터를 복제하여 에디터의 레벨에 영향을 끼치도록 하고, Game Instance를 포함한 모든 오브젝트는 각 PIE 인스턴스마다 별도의 사본을 갖습니다. UWorld 클래스의 게임플레이 시작과 함께 에디터 모드와 독립형 모드의 재회가 이루어집니다.
- 독립형 모드
독립형 모드는 에디터 외부에서 플레이하는 게임 모드로, 시작시 엔진 초기화에 이어 바로 게임 플레이에 필요한 오브젝트가 생성 및 초기화됩니다. Game Instance와 같은 오브젝트는 엔진 시작 전 생성 및 초기화되며, 엔진의 시작 함수 호출 직후 시작 맵이 로드됩니다. 공식적으로 게임플레이가 시작되는 시점은 레벨이 적합한 게임 모드와 게임 스테이트에 이어 액터를 생성한 이후입니다.