コンフィグファイル
イントロダクション
いくつかのQuantumコンフィグファイルには特定の役割と目的があります。
コンフィグファイルはUnityプロジェクトでそれぞれのフォルダに格納されています。これらを手早く検索するには、(Unityの)エディタウィンドウの「Menu/Quantum/Show Shortcuts」にあるショートカットが便利です。
デフォルトコンフィグインスタンスの多くはスクリプタブルオブジェクトとして、Unityプロジェクトアセットのルートレベルの「Resources」フォルダ内にあり、最終的にここからビルドされたアプリの中に含まれます(例としてDeterministicSessionConfigAsset.Instanceをご覧ください)。その他(RuntimeConfig, RuntimePlayer)はランタイム時にアセンブリされます。
Quantum開始シーケンス
以下の表ではどのコンフィグを誰がいつ使用するのかということが示されています。
コンフィグファイル
PhotonServerSettings
Assets/Resources/PhotonServerSettings.asset
バージョン2.0以降のQuantumではPhoton Realtimeを使用してPhoton Cloudに接続および通信を行っています。このコンフィグはクライアントの接続先を表しています((cloud + region, local ip, ..)。
また、有効なAppId(有効なQuantumプラグインを参照するもの)もこちらで設定されています。
このコンフィグのインスタンスで許可されているのは1つだけです。ローディングはPhotonNetworkクラスに高度に統合されています。PhotonNetwork.PhotonServerSettings
を参照してください。
DeterministicConfig
Assets/Resouces/DeterministicConfig.asset
DeterministicConfigで、開発者は予測シミュレーションとプラグイン(QuantumRunnerサーバーコンポーネント)の内部をパラメータ化できます。各パラメータの詳細については、このコンフィグのインスペクター内でShow Help Info
に切り替えます。
デフォルトの方法ではこのアセットの1つのインスタンスのみが許可されていますが、QuantumRunner.StartParameters
にパスされる限り、ファイルの検索方法は重要ではありません。
このコンフィグファイルは、一度のセッションの全てのクライアント間で同期されます。各プレイヤーがローカルで独自のDeterministicConfigバージョンでシミュレーションを開始したとしても、サーバーによって、プラグインに最初に参加したプレイヤーのコンフィグファイルのインスタンスが配布されます。
このコンフィグ上のデータはチェックサム生成に含まれています。
SimulationConfig
Assets/Resources/DB/Configs/SimulationConfig.asset
このコンフィグファイルには、ECSレイヤと、物理やナビゲーションなどのコアシステム内で使用されるパラメータがあります。各値の詳細は、マニュアルで関連するシステムのセクションを参照してください。
SimulationConfigはQuantumデータベースの一部で、このコンフィグの多くのインスタンスがサポートされています。コンフィグアセットGUIDをRuntimeConfigに追加して、どのSimualtionConfigを使用するか選択します。
開発者はquantum_code/quantum.state/Core/SimulationConfig.cs
クラスを「拡張」(パーシャルクラスを作成)してより多くのデータを追加できます。
デルタ時間タイプ
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
もしくは下記のサンプルをご覧ください。
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