Configuration Files
概述
有一些Quantum組態檔案有特定的功用及目的。
這些組態檔案放置在Unity專案中的不同的資料夾中。透過「選單/Quantum/顯示捷徑」中的捷徑(Unity)編輯器視窗,可以簡單快速地找到它們。
大多數的預設組態執行個體作為可指令碼物件,位於Unity專案資產的根層級的「資源」資料夾之中,並且最終將位於您從該處組建的應用程式之中(請參見DeterministicSessionConfigAsset.Instance以取得實例),而其他的執行個體(運行階段組態、運行階段玩家)可在運行階段被組合。
Quantum開始序列
以下圖表顯示了使用哪一個組態,由誰使用,及何時發送。
組態檔案
Photon伺服器設定
Assets/Resources/PhotonServerSettings.asset
Quantum從2.0版本開始使用Photon Realtime來連接及通信到Photon Cloud。這個組態描述了客戶端連接到的地方(雲端+地區、本機IP等等)。
一個有效的應用程式帳號(參照到一個啟用中的Quantum外掛程式)也在此處設定。
只允許這個組態檔案的一個執行個體。載入被緊密地整合到Photon網路類別之中。請參見PhotonNetwork.PhotonServerSettings
。
確定性組態
Assets/Resouces/DeterministicConfig.asset
透過確定性組態,開發者可以參數化確定性模擬及外掛程式(Quantum伺服器元件)的內部。在這個組態的偵測器中切換Show Help Info
,以取得各個參數的細節。
預設方式只允許這個資產的一個執行個體,但是當它被傳送到QuantumRunner.StartParameters
之中,檔案是如何被擷取將不再重要。
這個組態檔案將在一個遊戲階段的所有客戶端之間被同步。雖然各個玩家在本機以他們自己的確定性組態的版本來開始他們自己的模擬,伺服器將分配第一個加入外掛程式的玩家的組態檔案執行個體。
在這個組態上的資料被包含在總和檢查碼生成中。
模擬組態
Assets/Resources/DB/Configs/SimulationConfig.asset
這個組態檔案持有在ECS層中及核心系統中使用的參數,比如物理及導航。請參見操作手冊中的相關系統章節以取得各個值的更多細節。
模擬組態是Quantum DB的一部分,並且支援這個組態的多個執行個體。新增組態資產GUID到運行階段組態,以選擇應使用的模擬組態。
開發者可以「延伸」(建立一個部分類別)quantum_code/quantum.state/Core/SimulationConfig.cs
類別,並且將更多資料新增到它。
差量時間類型
您可以自訂Quantum執行器將如何累積已耗用時間,以更新Quantum模擬(請參見QuantumRunner.DeltaTime屬性)。
Default
設定將使用一個內部的碼錶,並且針對生產而言是建議的設定。- 當為了觸發模擬更新時,
EngineDeltaTime
將使用如Unity.deltaTime來追蹤。當使用中斷點來偵錯專案時,這非常方便,因為在恢復模擬時,並不使用向前快轉,而是從模擬暫停的確切時間繼續。同時,這個設定可導致 在初始化線上對戰的時候產生與時間同步相關的問題:在載入(比如關卡載入)下時間追蹤可能不準確,並且對於一個客戶端而言,在開始線上遊戲時導致很多額外的時間同步請求及被取消的輸入。
運行階段組態
相對於只有靜態組態資料的模擬組態,運行階段組態持有 隨著遊戲不同而有所不同的 資訊。預設下,舉例而言,定義了要載入的地圖及隨機開始的種子。每次開始遊戲時都是從頭開始組合。
開發者可以新增自訂資料到quantum_code/quantum.state/RuntimeConfig.User.cs
(別忘了填寫序列化方法)。
如同確定性組態,在第一個玩家連接並加入Quantum外掛程式之後,這個「檔案」被分配到每個其他客戶端。
一個使用這個組態的方便方式是透過建立一個單行為,其以預設值及資產連結(GUID)來儲存一個運行階段組態(及運行階段玩家)的執行個體,比如指向其他含有特定平衡資料的資產檔案。當玩家在遊戲大廳之中,在連接及開始遊戲之前,運行階段的一部分可透過他的自訂移載被覆寫。請參見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;
}
}
運行階段玩家
類似於運行階段組態,運行階段玩家描述了針對一個玩家的動態屬性(quantum_code/quantum.state/RuntimePlayer.User.cs)。
針對一個玩家的資料的行為和其他組態不同,因為在實際的遊戲已經開始之後,它是由各個玩家個別地發送。請參見操作手冊中的 玩家 文件以取得更多資訊。
Back to top