토끼와 달팽이가 경주를 하는 게임의 개념을 간단히 그려 봅시다.
게임 프레임워크의 바탕은 GameMode 입니다.
GameMode 에서는 게임의 규칙을 설정
여기서는 결승선을 먼저 통과하는 플레이어가 이기는 규칙입니다. 플레이어 스폰 처리도 여기서 합니다.
PlayerController - 플레이어 셋업이 이루어지는 곳,사람 플레이어의 입력을 받는 곳
이것이 Pawn 을 빙의(possess)합니다.
Pawn 은 게임 내 플레이어의 물리적 표현
Controller 는 Pawn 에 빙의되어 그 동작에 대한 규칙을 설정할 수 있습니다.
우리 예제에서는 Pawn 이 둘 있는데, 하나는 달팽이이고 하나는 토끼입니다.
토끼는 사실상 Character 가 되는데, 이는 Pawn 의 특수한 하위클래스로 달리기나 점프같은 이동 함수가 내장되어 있습니다.
반면 달팽이는 이동 방식이 다르기 때문에 Pawn 클래스를 직접 확장하면 됩니다.
Pawn 자체에 이동이나 기타 게임 로직용 규칙을 포함시킬 수는 있지만, 그러한 함수는 Controller 에 포함시킬 수도 있습니다.
Controller 는 PlayerController 아니면 AIController(컴퓨터의 자동 제어를 받는 곳) 가 될 수도 있습니다.
이 예제에서 플레이어는 달팽이를 제어할 것이기에, 달팽이 Pawn 은 PlayerController 에 빙의됩니다.
토끼는 AI 의 제어를 받는데, 언제 멈추고 달리고 낮잠을 잘 것인지 하는 규칙은 모두 AIController 에 설정되어 있으며, 이 컨트롤러가 토끼 Character 에 빙의됩니다.
Camera 에 제공되는 시야는 사람 플레이어에게만 의미가 있으므로, 달팽이 Pawn 에 있는 CameraComponent 하나만 PlayerCamera 에 사용될 것입니다.
게임플레이 도중 플레이어에게 받은 Input 으로 맵 위의 달팽이를 이리저리 움직이면서, Camera 로 제공된 뷰 위에 겹쳐놓인 HUD 에 누가 처음으로 들어왔는지, 경과된 경주 시간은 얼마나 되는지가 표시됩니다.
게임에서 사람이 제어하는 플레이어는 자체적인 AHUD 클래스를 가지고 있어, 독자적인 뷰포트를 그립니다.
분할화면 멀티플레이어 게임의 경우, 다수의 뷰포트에서 같은 화면을 공유하긴 하지만, 각각의 HUD 는 여전히 자신의 뷰포트에 그립니다. 사용할 HUD 의 유형이나 클래스는 사용중인 게임타입에 지정됩니다.