This document is about: QUANTUM 2
SWITCH TO

개요

FPS 템플릿은 애플리케이션 스크립트를 세 가지 기본 레이어로 나누어집니다:

  1. 게임: 스크립트 인스턴스는 애플리케이션이 실행되는 동안 유지됩니다.
  2. : 스크립트 인스턴스들은 단일 씬에서만 존재합니다. 그리고
  3. 시뮬레이션: 단일 Quantum 시뮬레이션에 관련이 있는 스크립트 인스턴스입니다.

이러한 분리는 주요 유니티 클래스 섹션에서 명확하게 확인할 수 있습니다.

주요 유니티 클래스

  • Game: 주 진입점이며 초기화, 초기화 해제 및 틱 표시를 담당합니다.
  • Game Services: 글로벌 서비스(단일 인스턴스, 항상 사용 가능)에 대한 참조를 보유합니다.
  • Log: 사용자 지정 로깅
  • SceneDirector: 씬 객체의 초기화, 초기화 해제 및 틱 표시를 담당하며 씬 서비스에 대한 참조를 보유합니다.
  • GameplayDirector: Scene Director에서 상속되고 시뮬레이션 컨텍스트를 참조하며 시뮬레이션의 이벤트에 반응합니다.
  • SimulationContext: 단일 시뮬레이션과 관련된 데이터를 보유하며, 시뮬레이션 컨텍스트 서비스에 대한 참조를 보유합니다.
  • Gameplay Info: 단일 시뮬레이션을 실행하는 데 필요한 모든 정보가 포함되어 있습니다.
  • Entity: 특정 Quantum 엔티티에 대한 유니티 카운터파트를 나타내고, 엔티티에 대한 필수 데이터를 보유, 변환 동기화를 관리, 엔티티 컴포넌트에 대한 참조를 보유하며, 틱을 관리합니다.
  • EntityComponent: 특정 Quantum 컴포넌트 또는 유니티 전용 컴포넌트에 대한 유니티 카운터파트를 나타냅니다.
  • Register: 유니티 쪽에서 자주 사용되는 캐시된 속성을 담고있습니다.

게임 서비스

  • Analyzer: 성능 기록 및 분석을 위한 게임 서비스
  • Network: Photon Realtime의 연결을 관리하는 게임 서비스
  • Messages: Photon Chat과의 연결을 유지하는 게임 서비스
  • Party: 파티 관리를 위한 게임 서비스 (Messages 필요)
  • Lobby: 커스텀 로비 연결을 위한 게임 서비스 (Messages 필요)
  • Matchmaking: 매치를 찾고 룸과의 연결을 관리하는 게임 서비스(Network 그리고 Messages 필요)
  • RemoteSettings: 유니티 원격 구성을 위한 게임 서비스입니다.
  • SceneLoader: 씬 로딩을 위한 게임 서비스

씬 서비스

  • SceneInput: 장치의 입력을 폴링하고 시뮬레이션으로 전송하기 위한 씬 서비스
  • SceneCamera: 카메라 관리를 위한 씬 서비스
  • SceneUI: UI 관리를 위한 씬 서비스
  • SceneAudio: 오디오 관리를 위한 씬 서비스
  • SceneMatchmaking: 특정 매치 메이킹 프로세스를 실행하기 위한 씬 서비스
  • SceneCache: 객체를 캐싱하기 위한 씬 서비스

시뮬레이션 컨텍스트 서비스

  • Simulator: Quantum 시뮬레이션을 틱하는 시뮬레이션 컨텍스트 서비스
  • Events: Quantum 이벤트에 등록/등록 취소하기 위한 시뮬레이션 컨텍스트 서비스
  • Callbacks: Quantum 콜백에 등록/등록 취소하기 위한 시뮬레이션 컨텍스트 서비스
  • Entities: Quantum ⇔ Unity 동기화를 위한 시뮬레이션 컨텍스트 서비스로 엔티티 초기화, 초기화 해제 및 티킹을 담당합니다.
  • Replay: 주요 시뮬레이션을 기반으로 리플레이 시뮬레이션을 유지하는 시뮬레이션 컨텍스트 서비스
  • Register: 로컬 플레이어에 대한 정보를 포함하고 자주 액세스하는 참조(엔티티/컴포넌트)를 캐시하고 예측 영역을 설정하는 시뮬레이션 컨텍스트 서비스

뷰 아키텍쳐 그림

fps template unity architecture diagram
FPS 템플릿 유니티 아키텍쳐 다이어그램.

주요 Quantum 클래스

주요 Quantum 클래스들은 모두 시뮬레이션 레이어의 일부분입니다.

Generic Quantum

다음 섹션에서는 FPS 템플릿에 사용되는 일반 Quantum SDK의 기본 클래스를 다룹니다.

데이터 구조

  • Globals: 글로벌 데이터용 상태 데이터를 가지고 있습니다
  • Map: 베이크된 맵 데이터와 사용자 지정 맵 에셋에 대한 참조를 포함합니다.
  • Signals: 시그널 발생을 위해 사용
  • Events:이벤트 발생을 위해 사용
  • RNG: 난수 생성기
  • FrameContext: 여러 프레임에 걸쳐 공유되는 데이터를 포함하고 있으며, FrameContextUser에 대한 참조를 보유
  • FrameContextUser: 사용자 지정 사용자 데이터를 포함

시스템

  • CullingSystem3D: Culling을 위한 기본 Quantum 시스템
  • PhysicsSystem3D: 3D 물리용 기본 Quantum 시스템
  • NavigationSystem: 내비게이션용 기본 Quantum 시스템

Framework 특유성

FPS 템플릿은 자체 인프라를 사용하여 Quantum SDK를 확장합니다. 가장 중요한 클래스는 아래에 나와 있습니다.

데이터 구조=

  • Gameplay: 게임플레이 시스템의 상태 데이터를 보유
  • Teams: 팀 시스템의 상태 데이터를 보유

시스템

  • ActorSystem: 일반 엔티티 로직을 실행하기 위한 시스템
  • MapEntitiesSystem: 맵 엔티티 관리를 위한 시스템
  • PredictionAreaSystem: 예측 영역 관리를 위한 시스템
  • ResetComponentDesiresSystem: 모든 컴포넌트가 원하는 구조를 재설정하기 위한 시스템
  • PreProcessComponentDesiresSystem: 컴포넌트 요건을 조기에 변경하기 위한 시스템
  • PostProcessComponentDesiresSystem: 컴포넌트 요구를 늦게 변경하는 시스템
  • AISystem: 엔티티 AI 계산용 시스템
  • PlayerSystem: 플레이어 관리용 시스템
  • AttributesSystem: 엔티티 속성 계산용 시스템
  • LookSystem: 엔티티 모양을 위한 시스템
  • MovementSystem: 엔티티 이동용 시스템
  • BodySystem: 엔티티 바디 관리용 시스템
  • AutoTargetSystem: 자동 타겟 엔티티 룩업용 시스템
  • EffectsSystem: 엔티티 효과 관리용 시스템
  • ProjectilesSystem: 발사체용 시스템
  • WeaponsSystem: 무기 관리용 시스템
  • AbilitiesSystem: 엔티티 능력 관리용 시스템
  • InteractionsSystem: 엔티티 상호작용용 시스템
  • ControlsSystem: 제어 가능한 엔티티 조작용 시스템
  • GameplaySystem: 게임 플레이 상태 관리용 시스템
  • HitSystem: 히트 해결 및 계산용 시스템
  • HealthSystem: 체력/방어 관리용 시스템
  • TeamsSystem: 팀 관리용 시스템
  • NavigatorSystem: 복잡한 3D 내비게이션용 시스템

시뮬레이션 아키텍처 그림

fps template simulation architecture diagram
FPS 템플릿 시뮬레이션 아키텍처 그림
Back to top