This document is about: QUANTUM 2
SWITCH TO

환경 구성 파일

소개

특정 역할과 목적을 가진 몇 개의 Quantum 구성 파일이 있습니다.

이러한 구성 파일은 유니티 프로젝트의 다른 폴더에 배치됩니다. "Menu/Quantum/Show Shortcuts" 표시에 있는 바로 가기(통합) 편집기 창을 통해 빠르게 찾을 수 있습니다.

대부분의 기본 구성 의도는 유니티 프로젝트 Assets의 루트 레벨에 있는 "Resources" 폴더 내에 스크립트 가능한 객체로 존재하며, 이 폴더로부터 앱 빌드로 종료됩니다(예, DeterministicSessionConfigAsset.Instance 인스턴스)와 기타(RuntimeConfig, RuntimePlayer)를 조립할 수 있습니다.

Quantum 시작 순서

누가 사용하고 언제 보내는지 표시하는 그림

Config Sequence Diagram
시퀀스 다이어그램 구성

구성 파일

PhotonServerSettings

Assets/Resources/PhotonServerSettings.asset

버전 2.0부터 Quantum은 Photon Realtime을 사용하여 Photon Cloud에 연결하고 통신합니다. 이 구성은 클라이언트가 연결되는 위치(클라우드 + 지역, 로컬 IP 등)를 설명합니다.

Photon Realtime 소개

유효한 AppId(활성 Quantum 플러그인 참조)도 여기에 설정됩니다.

이 구성 파일의 인스턴스는 하나만 허용됩니다. 로드는 PhotonNetwork 클래스에 긴밀하게 통합됩니다. PhotonNetwork.PhotonServerSettings를 참조하십시오.

유효한 AppId(활성 Quantum 플러그인 참조)도 여기에 설정됩니다.

이 구성 파일의 인스턴스는 하나만 허용됩니다. 로드는 PhotonNetwork 클래스에 긴밀하게 통합됩니다. PhotonNetwork.PhotonServerSettings를 참조하세요.

Photon Server Settings
Photon Server 설정

DeterministicConfig

Assets/Resouces/DeterministicConfig.asset

DeterministicConfig를 통해 개발자는 결정론적 시뮬레이션 및 플러그인(Quantum 서버 구성 요소)의 내부 매개 변수를 지정할 수 있습니다. 각 파라미터의 세부 정보를 보려면 이 구성의 인스펙터에서 도움말 정보 표시를 토글 합니다.

기본 방법은 QuantumRunner.StartParameters로 전달되는 경우 이 자산의 인스턴스를 하나만 허용하며 파일이 어떻게 검색되는지는 중요하지 않습니다.

이 구성 파일은 한 세션의 모든 클라이언트 간에 동기화됩니다. 각 플레이어가 자체 버전의 DeterministicConfig를 사용하여 로컬에서 자체 시뮬레이션을 시작하더라도 서버는 플러그인에 가입한 첫 번째 플레이어의 구성 파일 인스턴스를 배포합니다.

이 구성의 데이터는 체크섬 생성에 포함됩니다.

Deterministic Config
결정론적 구성

SimulationConfig

Assets/Resources/DB/Configs/SimulationConfig.asset

이 구성 파일에는 ECS 계층과 물리 및 내비게이션과 같은 핵심 시스템 내부에서 사용되는 매개변수가 들어 있습니다. 각 값에 대한 자세한 내용은 매뉴얼의 관련 시스템 섹션을 참조하십시오.

SimulationConfig는 Quantum DB의 일부이며 이 구성의 여러 인스턴스가 지원됩니다. RuntimeConfig에 구성 자산 GUID를 추가하여 사용할 SimualtionConfig를 선택합니다.

개발자는 quantum_code/quantum.state/Core/SimulationConfig.cs 클래스를 "사용" 하고 더 많은 데이터를 추가할 수 있습니다.

Simulation Config
시뮬레이션 구성

델타 타임 타입

QuantumRunner가 경과 시간을 누적하여 Quantum 시뮬레이션을 업데이트하는 방법을 사용자 지정할 수 있습니다(QuantumRunner.DeltaTime 참조).

  • 기본 설정은 내부 스톱워치를 사용하며 출시 시에 권장되는 설정입니다.
  • EngineDeltaTime은 Unity.deltaTime을 사용하여 시뮬레이션 업데이트를 트리거 할 시기를 추적합니다. 이것은 중단점을 사용하여 프로젝트를 디버깅할 때 매우 편리합니다. 시뮬레이션이 일시 중지된 정확한 시간부터 시뮬레이션을 재개할 수 있기 때문입니다. 아, 이 설정은 온라인 매치를 초기화할 때 시간 동기화 문제를 일으킬 수 있습니다: 로드 시(예: 레벨 로드) 시간 추적이 부정확할 수 있으며, 온라인 게임을 시작할 때 클라이언트에 많은 추가시간 동기화 요청과 취소된 입력을 초래할 수 있습니다.

RuntimeConfig

정적 구성 데이터만 있는 SimulationConfig와 달리 RuntimeConfig는 게임마다 다를 수 있는 정보를 보관합니다. 기본적으로 로드할 맵과 임의 시작 시드를 정의합니다. 게임을 시작할 때마다 처음부터 조립됩니다.

개발자는 quantum_code/quantum.state/RuntimeConfig.User.cs에 사용자 지정 데이터를 추가할 수 있습니다.(직렬화 방법을 입력해야 합니다.)

DeterministicConfig와 마찬가지로 이 "파일"은 Quantum 플러그인에 연결된 첫 번째 플레이어 이후에 다른 모든 클라이언트에 배포됩니다.

이 구성을 사용하는 편리한 방법은 기본값과 특정 데이터를 포함하고 있는 에셋 파일을 가리키는 에셋 링크(GUID)가 있는 RuntimeConfig(및 RuntimePlayer)의 인스턴스를 저장하는 MonoBehaviour를 만드는 것입니다. 플레이어가 게임 로비 안에 있을 때 게임을 연결하고 시작하기 전에 런타임 구성의 일부를 사용자 지정 로딩으로 덮어쓸 수 있습니다. 아래의 QuantumRunnerLocalDebug.cs 또는 샘플을 참조하십시오.

Runtime Setup
런타임 설정

C#

using Quantum;
using UnityEngine;

public sealed class RuntimeSetup : MonoBehaviour
{
    public static RuntimeSetup  Instance { get; private set; }

    public RuntimeConfig GameConfig { get { return _gameConfig;   } }
    public RuntimePlayer PlayerConfig { get { return _playerConfig; } }

    [SerializeField] private RuntimeConfig _gameConfig;
    [SerializeField] private RuntimePlayer _playerConfig;

    private void Awake() {
        Instance = this;
    }
}

RuntimePlayer

RuntimeConfig 와 유사하게 RuntimePlayer는 한 플레이어의 동적 속성을 설명합니다(quantum_code/quantum.state/RuntimePlayer.User.cs).

플레이어의 데이터는 실제 게임이 시작된 후 플레이어마다 개별적으로 전송되기 때문에 다른 구성과 다르게 동작합니다. 자세한 내용은 매뉴얼의 Player 문서를 참조하십시오.

Back to top