언리얼의 게임플레이 프레임워크
언리얼엔진의 게임플레이 프레임워크는 게임을 구성하는 기본적인 뼈대이자 규칙의 모음이다. 복잡한 게임 로직을 명확하게 분리하고 관리하기 위해 존재하는데 각각의 역할을 분리하여 나눠갖는다. 구성요소로는 GameMode, GameState, PlayerController, PlayerState, Pawn클래스로 구성되어 있다. 각 클래스가 나눠 갖는 역할은 다음과 같다.
1. GameMode : 게임의 규칙
2. GameState : 게임의 상태
3. PlayerController : 플레이어의 인풋
4. PlayerState : 플레이어의 점수와 같은 상태
5. Pawn : 플레이어의 실제 아바타
멀티플레이어 환경에서는 서버와 클라이언트로 구성되어 있다. 지난번 리플리케이션에서 다루었듯 게임의 모든 자료는 서버가 쥐고있고 클라이언트는 서버에서 보내준 결괏값만 화면에 표시하는 역할을 갖는다. 이러한 프레임워크의 일반적인 흐름은 다음과 같다.
플레이어가 접속, 즉 새로운 클라이언트가 서버에 접속을 요청하면 서버의 GameMode가 Loging함수를 호출한다. 그 다음 PlayerController를 생성한다. 서버의 GameMode는 해당 플레이어를 위한 PlayerState를 생성하고 PlayerController에 연결시킨다. GameMode는 해당 플레이어의 Pawn을 생성하고 Possess 시킨다. 이제 PlayerController는 클라이언트로부터 받은 입력을 서버에 보내고 서버는 그 입력을 처리하여 클라이언트에 보낸다. 이제 각 클래스의 세부사항을 들여다보도록 하자
GameMode
GameMode는 게임의 규칙을 정의하는 클래스다 해당 게임이 어떠한 규칙으로 진행되는지에 대한 정보를 가지고 있어 서버전용 클래스이기도 하다. 이 GameMode에서 Pawn, PlayerController, PlayerState, GameState등의 기본 클래스를 지정할 수 있다.
GameState
GameState는 게임 전체의 현재 상태를 저장하고 공유하는 클래스로서 플레이어에게 공유되어야 할 정보를 담고있다. 즉 레플리케이션이 자주 되며 모든 플레이어가 동일한 GameState정보를 갖게 된다. 예를 들면 매치 상태라던가 획득한 점수라던가 게임 시간과 같은 공통된 부분이 이에 해당한다.
PlayerController
플레이어 컨트롤러는 플레이어의 의지를 나타내는 클래스로서 클라이언트의 입력을 받아 게임 월드에 영향을 준다. 플레이어의 인풋을 받아 posses한 Pawn을 움직이게 할 수 있고 새로운 Pawn을 받을 수도 있다.
Pawn
Pawn은 플레이어가 조종하는 아바타로 월드 내의 플레이어의 물리적 실체 역할이다 PlayerController에 의해 빙의되어 입력받은 값대로 움직이게 된다. 물리적인 충돌의 처리도 Pawn을 통해 처리된다.
PlayerState
플레이어 한 명의 상태정보를 저장하고 공유하는 클래스로서 플레이어 개개인의 상태를 저장한다. PlayerState역시 서버에서 생성되어 모든 클라이언트에 복제되며 주요 기능으로는 플레이어의 이름, 점수와 같은 다른 플레이어가 열람해야 하는 정보들을 저장한다.
'unreal 5기' 카테고리의 다른 글
| 251028 언리얼엔진 본캠프 54일차 TMap (0) | 2025.10.28 |
|---|---|
| 251027 언리얼엔진 본캠프 53일차 UActorComponent와 USceneComponent (0) | 2025.10.27 |
| 251023 언리얼엔진 본캠프 51일차 레플리케이션(Replication) (0) | 2025.10.23 |
| 251022 언리얼엔진 본캠프 50일차 리플렉션(Reflection) 시스템 (0) | 2025.10.22 |
| 251021 언리얼엔진 본캠프 49일차 언리얼엔진의 Cast (0) | 2025.10.21 |