This document is about: QUANTUM 2
SWITCH TO

플레이어

개요

PlayerSystem은 플레이어 컴포넌트를 업데이트하여 플레이어 상태 유지뿐만 아니라 플레이어 참여 과정을 관리합니다.

플레이어 컴포넌트

사람과 AI 등 모든 플레이어는 Player 컴포넌트를 가지고 있는 엔티티로 나타나게 됩니다. Player 컴포넌트는 플레이어 입력과 명령을 InputDesires로 변환하기 전에 처리하는 역할을 합니다. 또한 연결 상태 관리 및 필요한 경우 AI를 넘겨받는 역할을 담당합니다.

"플레이어 엔티티", 즉 Player 컴포넌트를 가진 엔티티는 게임 세계에서 플레이어의 현재 상태에 대한 모든 정보를 보유하는 "액터 엔티티"와는 독립적입니다. 플레이어 엔티티는 액터 엔티티를 위해 SpawnCooldown / DespawnCooldown과 같은 플레이어에 대한 글로벌 정보와 해당 플레이어가 사람 또는 AI에 의해 제어되는지를 정의하는 EPlayerType을 가지고 있습니다.

요약하면:

  • 플레이어 엔티티: Player 컴포넌트를 가진 엔티티입니다. 여기에는 특정 플레이어에 대한 글로벌 정보와 AI 또는 사람에 의해 제어되는지에 대한 정보가 포함됩니다. 해당하는 액터 엔티티에 대한 레퍼런스가 있습니다.
  • 액터 엔티티: 게임 세계에서 현재 상태를 나타내는 엔티티입니다. 플레이어 엔티티가 제어합니다.

참여 과정

주의: 이 과정은 기본 동작이며 게임의 디자인에 따라 변경될 것으로 예상됩니다.

가입 프로세스는 유니티 측의 GameplayDirector.cs에서 SendPlayerData()를 호출하여 초기화되며 Quantum 측의 PlayerSystem에서 ISignalOnPlayerDataSet 시그널을 수신하면 다음과 같은 단계가 순서대로 실행됩니다.

  1. 플레이어가 관중인 경우 즉시 나갑니다(관중을 위해 만들어진 엔티티는 없습니다).
  2. Player 컴포넌트에 있는 사용자 ID를 비교하여 기존 플레이어 엔티티에 다시 연결합니다.
  3. EPlayerType이 할당되지 않은 플레이어 엔티티를 찾아봅니다.
  4. 미리 정의된 TeamConfig 없이 같은 팀의 AI 플레이어를 교체합니다.
  5. 같은 팀의 AI 플레이어를 교체해 봅니다.
  6. 액터 엔티티를 생성하지 않고 모든 AI 플레이어를 교체합니다.
  7. AI 플레이어를 교체해 봅니다.
  8. 새 플레이어 엔티티를 생성합니다.

단계가 성공하면 프로세스가 즉시 종료됩니다.

Back to top