This document is about: QUANTUM 1
SWITCH TO

Quantumコンフィグ

イントロダクション

いくつかのQuantumコンフィグファイルには特定の役割と目的があります。

コンフィグファイルはUnityプロジェクトでそれぞれのフォルダに格納されており、ファイルの検索は時として面倒です。こちらの投稿でクイック検索ツールバーについて確認してください:Unity Window Config Shortcuts

コンフィグファイルの多くはUnityの「リソース」フォルダ内にあり、最終的にアプリのビルドにこのように(例としてDeterministicSessionConfigAsset.Instanceを参照)含まれます。一方、その他(RuntimeConfig、RuntimePlayer)はランタイム中にアセンブリされます。

Quantum開始シーケンス

以下の表ではどのコンフィグを誰がいつ使用するのかということが示されています。

Config Sequence Diagram

コンフィグファイル

PhotonServerSettings

Assets/Photon Unity Networking/Resources/PhotonServerSettings.asset

バージョン1.2.4までのQuantumではカスタムPUNパッケージ(PhotonUnityNetworking v1.93)を使用してPhoton Cloudとの接続と通信を行っています。このコンフィグが表しているのは、クライアントの接続先(クラウド+リージョン、ローカルIPなど)です。

Photon Unity Networking V1インストラクション

また、有効なAppId(有効なQuantumプラグインを参照するもの)もこちらで設定されています。

Quantum AppIdの作成方法

このコンフィグのインスタンスで許可されているのは1つだけです。ローディングはPhotonNetworkクラスに高度に統合されています。PhotonNetwork.PhotonServerSettingsを参照してください。

Photon Server Settings

DeterministicConfig

Assets/Quantum/Resouces/DeterministicConfig.asset

DeterministicConfigで、開発者は予測シミュレーションとプラグイン(QuantumRunnerサーバーコンポーネント)の内部をパラメータ化できます。各パラメータの詳細については、このコンフィグのインスペクター内でShow Help Infoに切り替えます。

デフォルトの方法ではこのアセットの1つのインスタンスのみが許可されていますが、QuantumRunner.StartParametersにパスされる限り、ファイルの検索方法は重要ではありません。

このコンフィグファイルは、一度のセッションの全てのクライアント間で同期されます。各プレイヤーがローカルで独自のDeterministicConfigバージョンでシミュレーションを開始したとしても、サーバーによって、プラグインに最初に参加したプレイヤーのコンフィグファイルのインスタンスが配布されます。

このコンフィグ上のデータはチェックサム生成に含まれています。

Deterministic Config

SimulationConfig

Assets/Resources/DB/Configs/SimulationConfig.asset

このコンフィグファイルには、ECSレイヤと、物理やナビゲーションなどのコアシステム内で使用されるパラメータがあります。各値の詳細は、マニュアルで関連するシステムのセクションを参照してください。

SimulationConfigはQuantumデータベースの一部で、このコンフィグの多くのインスタンスがサポートされています。コンフィグアセットGUIDをRuntimeConfigに追加して、どのSimualtionConfigを使用するか選択します。

開発者はquantum_code/quantum.state/Core/SimulationConfig.csクラスを「拡張」(パーシャルクラスを作成)してより多くのデータを追加できます。

Simulation Config

RuntimeConfig

静的設定データしかないSimulationConfigとは対照的に、RuntimeConfigには ゲームごとに異なる 情報があります。デフォルトでは、例えばどのマップを読み込むか、ランダムな開始シード値などを定義します。これは毎回ゲームを開始する際にスクラッチからアセンブリします。

開発者はquantum_code/quantum.state/RuntimeConfig.User.csにカスタムデータを追加できます(シリアライズ化方法を入力するのを忘れないでください)。

DeterministicConfigと同様に「ファイル」は、初めのプレイヤーがQuantumプラグインに接続し参加した後でその他のクライアント全員に配布されます。

このコンフィグを使用する便利な方法は、デフォルト値と例えば他のアセットファイルを指し示している特定のバランシングデータを含むアセットリンク(GUID)でRuntimeConfig (と、RuntimePlayer)のインスタンスを格納するMonoBehaviourを作成することです。プレイヤーがRuntimeコンフィグの一部であるゲームロビー内にいる場合、ゲームへの接続および開始前にプレイヤーのカスタムロードアウト(load out)で上書きされる可能性があります。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)。

プレイヤーのデータは他のコンフィグとは異なる挙動をします。これは、実際にゲームが開始した後に個々のプレイヤーから個別に送信されるためです。OnGameStarted()コールバックの間にSendPlayerData()が実行されたことを確認してください。

Back to top