플레이어
개요
PlayerSystem
은 플레이어 컴포넌트를 업데이트하여 플레이어 상태 유지뿐만 아니라 플레이어 참여 과정을 관리합니다.
플레이어 컴포넌트
사람과 AI 등 모든 플레이어는 Player
컴포넌트를 가지고 있는 엔티티로 나타나게 됩니다. Player
컴포넌트는 플레이어 입력과 명령을 InputDesires
로 변환하기 전에 처리하는 역할을 합니다. 또한 연결 상태 관리 및 필요한 경우 AI를 넘겨받는 역할을 담당합니다.
"플레이어 엔티티", 즉 Player
컴포넌트를 가진 엔티티는 게임 세계에서 플레이어의 현재 상태에 대한 모든 정보를 보유하는 "액터 엔티티"와는 독립적입니다. 플레이어 엔티티는 액터 엔티티를 위해 SpawnCooldown
/ DespawnCooldown
과 같은 플레이어에 대한 글로벌 정보와 해당 플레이어가 사람 또는 AI에 의해 제어되는지를 정의하는 EPlayerType
을 가지고 있습니다.
요약하면:
- 플레이어 엔티티:
Player
컴포넌트를 가진 엔티티입니다. 여기에는 특정 플레이어에 대한 글로벌 정보와 AI 또는 사람에 의해 제어되는지에 대한 정보가 포함됩니다. 해당하는 액터 엔티티에 대한 레퍼런스가 있습니다. - 액터 엔티티: 게임 세계에서 현재 상태를 나타내는 엔티티입니다. 플레이어 엔티티가 제어합니다.
참여 과정
주의: 이 과정은 기본 동작이며 게임의 디자인에 따라 변경될 것으로 예상됩니다.
가입 프로세스는 유니티 측의 GameplayDirector.cs
에서 SendPlayerData()
를 호출하여 초기화되며 Quantum 측의 PlayerSystem
에서 ISignalOnPlayerDataSet
시그널을 수신하면 다음과 같은 단계가 순서대로 실행됩니다.
- 플레이어가 관중인 경우 즉시 나갑니다(관중을 위해 만들어진 엔티티는 없습니다).
Player
컴포넌트에 있는 사용자 ID를 비교하여 기존 플레이어 엔티티에 다시 연결합니다.EPlayerType
이 할당되지 않은 플레이어 엔티티를 찾아봅니다.- 미리 정의된
TeamConfig
없이 같은 팀의 AI 플레이어를 교체합니다. - 같은 팀의 AI 플레이어를 교체해 봅니다.
- 액터 엔티티를 생성하지 않고 모든 AI 플레이어를 교체합니다.
- AI 플레이어를 교체해 봅니다.
- 새 플레이어 엔티티를 생성합니다.
단계가 성공하면 프로세스가 즉시 종료됩니다.
Back to top