This document is about: QUANTUM 2
SWITCH TO

コンフィグファイル

イントロダクション

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

コンフィグファイルはUnityプロジェクトでそれぞれのフォルダに格納されています。これらを手早く検索するには、(Unityの)エディタウィンドウの「Menu/Quantum/Show Shortcuts」にあるショートカットが便利です。

デフォルトコンフィグインスタンスの多くはスクリプタブルオブジェクトとして、Unityプロジェクトアセットのルートレベルの「Resources」フォルダ内にあり、最終的にここからビルドされたアプリの中に含まれます(例としてDeterministicSessionConfigAsset.Instanceをご覧ください)。その他(RuntimeConfig, RuntimePlayer)はランタイム時にアセンブリされます。

Quantum開始シーケンス

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

Config Sequence Diagram
Config Sequence Diagram

コンフィグファイル

PhotonServerSettings

Assets/Resources/PhotonServerSettings.asset

バージョン2.0以降のQuantumではPhoton Realtimeを使用してPhoton Cloudに接続および通信を行っています。このコンフィグはクライアントの接続先を表しています((cloud + region, local ip, ..)。

Photon Realtime イントロダクション

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

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

Photon Server Settings
Photon Server Settings

DeterministicConfig

Assets/Resouces/DeterministicConfig.asset

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

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

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

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

Deterministic Config
Deterministic Config

SimulationConfig

Assets/Resources/DB/Configs/SimulationConfig.asset

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

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

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

Simulation Config
Simulation Config

デルタ時間タイプ

QuantumRunnerが経過時間を蓄積する方法についてカスタマイズし、Quantumシミュレーションをアップデートできます(QuantumRunner.DeltaTimeぷrパティを参照してください)。

  • 内部のストップウォッチにはデフォルト設定が使用されます。本番環境ではこちらが推奨されます。
    • EngineDeltaTimeは、シミュレーションの更新をいつ行うかを記録するために、例えばUnity.deltaTimeを使用します。これは、ブレークポイントを使用してプロジェクトをデバッグする際に非常に便利です。シミュレーションを早送りではなく、まさしく停止した位置からレジュームするからです。ただし、この設定は オンラインマッチを初期化する際の時間同期の問題 を伴います。つまり、ローディング(レベルのローディングなど)によりタイムトラッキングが正確でなくなる可能性があり、多くの余剰時間同期リクエストやクライアントがオンラインゲームを開始した時にインプットがキャンセルされる場合があります。

RuntimeConfig

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

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

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

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

Runtime Setup
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