Network Project Config
概述
Network Project Config是一個資產,其中包含影響相關Photon Fusion專案的各種資訊和參數,例如:
- 版本;
- 同儕節點模式;
- 預設玩家計數;
- 網路情況測試;
- 加密;
- 預製件檢查。
這個資產應該位於Assets/Photon/Fusion/Resources/NetworkProject.Config.fusion下。您也可以存取這個的另一個方法是選擇頂部Unity Editor選單中的Tools > Fusion > NetworkProjectConfig。必須應用對此資產的任何更改,因此請確保按一下檢查器底部附近的 應用 按鈕,或在提示時確認儲存更改。
Fusion版本
第一部分列出了當前使用的Fusion版本。展開後,下拉式功能表顯示有關Fusion使用的每個動態連結程式庫(DLL)的更詳細資訊。
場景設定
Peer mode:Single:組建或編輯器運行單一伺服器、主機或客戶端同儕節點的正常用例。Multiple:允許編輯器中有多個同儕節點。
將Peer Mode設定為Multiple,對於在遊戲階段中測試多個同儕節點非常有用,而無需進行組建。
您可以在此處閱讀更多關於多重同儕節點模式的資訊。
延遲補償
啟用Lag Compensation可以使命中框檢測更準確地反映玩家當前看到的內容,對於第一人稱射擊等快節奏遊戲非常有用。這是透過儲存遊戲命中框的一組快照來實現的。這些設定允許使用者定義每個快照中存儲的資訊量,從而影響命中框檢測的準確性。
伺服器模式與主機端模式Hitbox Buffer Length In Ms:指定命中框資料將以毫秒為單位儲存的緩衝區長度;時間越長,命中框快照在被新快照覆寫之前儲存的時間就越長。Hitbox Default Capacity:每個快照存儲的命中框值的預設數量。至少有16個。Cached Static Colliders Size:預設Lag Compensation査詢的已快取靜態碰撞器(PhysX或Box2D)陣列的大小。
雜項
本節含有處理有關Fusion專案的雜項參數的設定。
Enqueue Incomplete Synchronous Spawns:如果啟用,同步不完整生成(可定址等)將被排入序列,而不是擲出例外。它們將取而代之地傳回Fusion.NetworkSpawnStatus.Queued,下一幀將嘗試生成該物件。啟用此功能對於從Fusion 1.x過渡非常有用。Invoke Render In Batch Mode:如果啟用了此功能,則在批次處理模式下玩遊戲時,將叫用Fusion.SimulationBehaviour.Render回調。批次處理模式是指可以傳送給Unity組建可執行文件的-batchmode參數。停用此選項可能對使用批次處理模式下運行的無周邊伺服器的遊戲有用。您可以在這裡閱讀更多關於Unity批次處理模式的資訊。Network Id Is Object Name:勾選後,新生成的物件的名稱將被修改為包含網路Id,如下所示:[Network Id] Original Object Name。Hide Network Object Inactivity Guard:巢狀在NetworkObjects中,名為NetworkObjectInactivityGuard的遊戲物件追蹤在啟用之前被銷毀的NetworkObjects的OnDestroy訊息。如果勾選此選項,這些保護將在層次結構中不可見。
模擬
以下設定處理Fusion模擬的行為方式:
Replication Features:None:這是預設設定,如果專案在遊戲遊玩過程中從未超過每刷新資料限制,這是理想的設定。Scheduling:如果設定了,由於剔除(達到了每刷新資料限制),伺服器沒有將Network Objects複製到客戶端,則伺服器會在下一次向該客戶端發送的Tick更新中增加該Network Object的優先級。Scheduling and Interest Management:除了排程外,還啟用了Interest Management功能,包括Area of Interest和Explicit Interest。您可以在此處閱讀更多關於興趣管理的資訊。
Input Transfer Mode決定了輸入在網路上的傳輸方式:Redundancy:發送差量已壓縮和冗餘輸入,用於大多數遊戲。Latest State:僅發送最新的輸入狀態。適用於使用大型輸入結構的遊戲,如VR,其中通常包含頭部和手部的位置資料。
Player Count:範圍從1到255,這是預設玩家計數,如果在啟動新的Fusion遊戲階段時沒有具體說明,將使用該計數。
共享模式,其中客戶端刷新率總是32,並且客戶端發送率總是16。Client Tick Rate:客戶端刷新率。這利用了一個下拉式清單,其值範圍為8到256。Client Send Rate:客戶端向伺服器發送資料的速率,可以設定為以下值:1/8:僅適用於客戶端刷新率為240或更高的情況。1/4:僅適用於客戶端率可被4整除的情況。1/2。1:1:或與客戶端刷新率相同的值。
Server Tick Rate:伺服器更新的速率。這將與Client Send Rate具有相同的選項。Server Send Rate:伺服器向其他客戶端發送資料的刷新率。這將具有與Client Send Rate相同的選項,但不能高於伺服器的刷新率。
網路
Connection Timeout:如果沒有收到更新,則中斷連線之前的時間量(秒)。如果沒有從所述客戶端接收到更新,伺服器將與客戶端中斷連線;如果沒有從所述伺服器接收到更新,則客戶端將與伺服器中斷連線。Connecting Shutdown Time:連線狀態更改為關閉,與連線及其相關參照被釋放後的時間量(秒)。
Reliable Data Transfer Modes:確定可靠的資料傳輸模式。Client to Server:允許資料從客戶端可靠地傳輸到伺服器。Client to Client With Server Proxy:允許使用伺服器作為代理,在客戶端到客戶端之間可靠地傳輸資料。
主機端移轉
這些設定會影響主機端移轉的行為方式。
Enable Auto Update:如果勾選,主機端移轉將自動更新。Update Delay:主機端移轉快照上傳到Photon Cloud之間的時間(秒)。
加密
此切換設定是否應為此Fusion專案啟用或停用Encryption。請注意,您必須勾選此項,並在Photon App Settings中更新專案的Encryption Mode。
您可以在此處閱讀有關加密的更多資訊。
網路狀況
網路狀況允許使用者模擬和測試不同的網路狀況,如延遲和遺失。
Enabled:如果勾選,將顯示更多選項。Delay Shape設定延遲振盪的模式:Noise;Sine;Square;Triangle;Saw;Reverse Saw。
Delay Min:最小延遲(秒),範圍為0到0.5。Delay Max:最大延遲(秒),範圍為0到0.5。Delay Period:延遲在Delay Min和Delay Max之間以秒為單位振盪的速率。Delay Threshold:當振盪低於該值(範圍從0到1)時,延遲將設定為Delay Min。Additional Jitter:在振盪器確定下一個延遲值後,一個從0到此(以秒為單位)的隨機值將被新增到延遲中。Loss Chance Shape:設定損失振盪的模式。選項與Delay Shape相同Loss Chance Min:損失發生的最低機會值,範圍從0(0%)到1(100%)。Loss Chance Max:損失發生的最高機會值,範圍從0(0%)到1(100%)。Loss Chance Threshold:當振盪低於該值(範圍從0到1)時,延遲將設定為Loss Chance Min。Loss Chance Period:損失機會在Loss Chance Min和Loss Chance Max之間以秒為單位振盪的速率。Additional Loss:在振盪器確定下一個損失機會值後,新增一個從0到此(已標準化)損失機會百分比的額外隨機值。
損失的設定幾乎相同;這些值決定了模擬損失的百分比,範圍從0%到100%,而不是以秒為單位的時間量。
堆
允許使用者定義Fusion使用的預分配記憶體的量,這有助於最佳化記憶體管理和提高效率。
Page Shift:決定每個Heap Page的大小,這會影響記憶體分配的細微性。它的範圍從1KB到256KB,幂次為2。較低的移位導致較小的記憶體分配,而較高的移位允許較大的分配。Page Count:指定為堆分配的初始頁數。範圍從16到4096,這定義了為堆分配的頁數,並影響分配的初始記憶體總量。
Weaver設定
這些設定會影響Fusion IL Weaver,它用於生成低等級網路程式碼並將其插入到Assembly-CSharp.dll中。
Assemblies to Weave:將要編織的組件清單。它們不區分大小寫。預設情況下,包括以下內容:Fusion.Unity;Assemble-CSharp;Assembly-CSharp-firstpass;Fusion.Addons.Physics(如果該專案使用Fusion的物理系統)。
Use Serialized Dictionary:如果勾選,則Fusion.SerializeableDictionary將用於儲存已連網屬性的初始值。如果未勾選,編織器將取而代之使用System.Generic.Dictionary;雖然這種類型不是Unity可序列化的,但Odin等自訂序列化器可能支援它。Null Checks for Networked Properties:如果設定,編織器將新增一個檢查(如果任何附有已連網屬性的Fusion.NetworkBehaviour具有相關的Fusion.NetworkObject附加到它們。)Check Rpc Attribute Usage:如果設定了,編織器將檢查是否在不支援Fusion.RpcAttribute的類型中使用它,舉例而言,如果Fusion.RpcAttribute被新增到Unity.MonoBehaviour方法中,而且這個被勾選,將記錄一條警告,其說明RPC只能新增到Fusion.NetworkBehaviour和Fusion.SimulatedBehaviours中;然而,這需要掃描所有類型,並可能增加編織和指令碼編譯時間。您可以在此處閱讀有關RPC規則的更多資訊。Check Networked Properties Being Empty:如果勾選,使用者在不適當地嘗試使用Fusion.NetworkedAttribute定義屬性時將收到警告。這些屬性的getter和setter應該是空的,例如:
C#
[Networked]
public int NetworkedProperty {get; set;}
預製件
這兩個設定處理預製件的卸載方式。
Unload Prefab On Releasing Last Instance:如果為真,則預製件將在最後一個執行個體釋放時卸載。Unload Prefabs On Shutdown:如果為真,所有預製件都將在關機時卸載。
卸載不再需要的預製件可以幫助提高記憶體使用率,但如果再次需要,則需要重新載入它們。
自動生成
本節顯示自動生成的資訊。
Show Network Prefab Inspector:打開一個視窗,允許使用者查看包含Fusion.NetworkObject元件與啟用Fusion.NetworkObject.IsSpawnable的專案中的不同預製件。Prefabs:前面提到的按鈕下方是專案中列出的NetworkObject預製件的每個預製件的下拉式清單。此清單不能由使用者直接更新;但是,可以在運行階段使用Fusion.NetworkPrefabTable.TryAddSource來註冊額外的預製件。Behaviour Meta:一個自動生成的清單,包含專案中的所有Fusion.SimulationBehaviours的中繼資訊,如執行順序。
網路預製件檢查器
如前所述,Network Prefabs Inspector允許使用者檢查包含Fusion.NetworkObject元件與更詳細地啟用Fusion.NetworkObject.IsSpawnable的預製件。
此視窗的主工具列具有以下功能:
Refresh:重新整理清單,如果有任何新的預製件,則進行更新;Sync Selection:如果啟用,Unity將選擇視窗中突出顯示的預製件資產;Loaded Only:如果啟用,則只顯示已載入的預製件。
每一行都呈現不同的預製件;此視窗中的每一列表示以下內容:
State:顯示預製件當前是否已載入。Type:顯示此物件是什麼類型的預製件,指的是它將如何被載入。R:放在Resources資料夾中的預製件;SL:放置在Resources資料夾外的靜態預製件;A:作為Addressable載入的預製件(未顯示。)
PrefabId:Fusion指派給預製件的id。Path:預製件的檔案路徑。