게임플레이
개요
GameplaySystem
은 플레이어/적 스폰, 승리 조건 평가, 씬의 다양한 부분 활성화와 같은 고도의 씬 로직을 실행할 수 있는 방법을 제공합니다. 이 시스템 자체가 보기 매우 드물며, 주로 실제 로직이 구현되는 GameplayController
에서 구현되는 상태 머신을 체크하는 역할을 합니다.
컨트롤러
주요 게임 플레이 로직은 GameplayController
에 정의되어 있으며 GameplayController.User.cs
에서 사용자가 확장할 수 있습니다. GameplayController
는 에셋 이며 Quantum 시뮬레이션을 실행하는 데 필수 입니다. 이 에셋에는 정적 EGameplayState
구성(들어가기-나가기 상태 쌍 및 해당 기간)이 포함되어 있습니다. 또한 실행 시 스크립트에서 상태를 동적으로 설정하여 정적 구성을 효과적으로 재정의할 수 있습니다.
GameplayController
API는 다음과 같습니다:
OnInitialize()
: 시뮬레이션이 초기화되면 호출됨OnDeinitialize()
: 시뮬레이션이 사라지면 호출됨OnEnterState()
: 게임 플레이 상태에 들어갔을 때 호출됨OnUpdateState()
: 특정 게임 플레이 상태에 대하여 매 프레임마다 호출됨OnExitState()
: 게임 플레이 상태에서 나갔을 때 호출됨GetNextState()
: 현재 상태가 종료되려고 할 때 호출됨, 다음 단계 상태를 결정함GetStateDuration()
: 특정 상태의 지속 시간을 리턴
상태 머신
FPS 템플릿은 다음의 EGameplayState
를 구현합니다.
Initialization
: 씬 초기화 될 때 한 번 사용됨Waiting For Players
: 플레이어가 데이터를 전송하고 플레이어 엔티티를 만들 때까지 기다리며 마지막에 없어진 플레이어에 대해 AI를 생성합니다.Game Start
: 매치 소개 순서, 플레이어 개요 등에 사용될 수 있음Round Start
: 웜업 시퀀스, 카운트다운 ...Round Progress
: 메인 게임 플레이, 시간 기반, 팀 제거, ...Round End
: 라운드 승리/패배 순위Round Replay
: 선택적인 리플레이, 최종 킬, 라운드 최고 플레이어, ...Game End
: 최종 게임 플레이 순위, 종료 애니메이션, ...Game Replay
: 선택적인 리플렝, 게임의 최고 명장면, MVP 명장면, ...Game Summary
: 경기 통계, 보상, 이전 경기 상호작용 표시Deinitialization
: 지우기
다음 도표는 게임 플레이 상태 머신의 기본 흐름을 보여주고 있습니다:
데이터
게임 플레이를 지원하는 데이터는 GameplayData
에셋에 저장됩니다. 이 에셋에는 특정 씬에 대한 베이크 된 데이터가 포함되어 있습니다. 기본적으로 GameplayData
에셋에는 웨이포인트 및 NavMeshLinks가 포함되어 있으며GameplayData.User.cs
에서 확장할 수 있습니다.