Fusion Introduction
概述
Fusion是Unity的一個新的高性能狀態同步網路庫。通過一個單一的API,它支持許多網路架構,如專用伺服器、客戶端托管和共享/分布式權限。
它在構建時考慮到了簡單性,可以自然地集成到普通的Unity工作流程中,同時也提供了先進的功能,如數據壓縮、客戶端預測和開箱即用的停滯補償。
Fusion實現了一個強大基於tick的模擬和狀態快照系統,並內置了調節功能。這使得Fusion能夠與非決定性程式庫(如Unity PhysX)無縫接軌。
除了基於雲端的共享模式,即每個客戶端對自己的對象有完全的權限(就像之前的PUN),Fusion還包括兩種完全的伺服器權限模式。
- 嚴格的客戶/伺服器設置,有專門的無標頭Unity事件;或者,
- 玩家即主機,其中一個客戶端既是伺服器又是客戶端(主機);
PUN, Bolt & Fusion 比較
盡管PUN和Bolt是可靠的網路解決方案,但它們的架構不允許進一步優化。Fusion融合了PUN和Bolt的所有最佳概念,同時以高性能的架構從頭開始構建,以實現開箱即用的最先進的功能。下方圖片總結了以下改進內容。
最先進的功能
Fusion在基礎SDK中直接包含了最先進的功能。
- Delta Snapshots和Eventual Consistency狀態傳輸模式:Fusion可以傳輸:a)壓縮的完整狀態(使用新的和獨特的delta壓縮技術,意味著非常低的CPU負載);或者b)受控塊中的狀態變化(最終一致性)-在這種情況下,我們也啟用所有的利益管理變化。
- ** Client side prediction + server reconciliation**:使用內部本地數據緩衝區意味著Unity-held數據在渲染時始終保持滑順,調和和插值自動(或自定義)處理。
- Lag Compensation:簡單的設置命中箱與全面的停滯補償查詢API相結合,可以與同步動畫相結合,以獲得精確的電競級射擊機制的刻度或子刻度。
- RPCs:高性能的RPCs也是Fusion的API中的一流概念。
- Made for Unity MonoBehaviours:遊戲狀態被完全定義為Unity行為的一部分。不需要寫序列化或任何其他復雜的代碼。它與所有Unity最新的預制件功能(如嵌套和變數)一起工作。
一庫多重架構
Fusion的開發是為了發展和取代現有的兩個用於Unity的Photon狀態轉移產品(Bolt和PUN);它包括所有支持的架構和更多!
- Single Player: 本地使用相同的代碼,不需要連接。
- Dedicated Server: 部署具有完全伺服器權限的Unity無標頭事件。
- Client Hosted: 玩家托管_伺服器+_客戶端,內置打通功能,中繼作為後備功能,並可實現完全的主機遷移(由Photon Cloud提供支持)。
- Shared Mode: 客戶對Photon Cloud的授權,由數據驅動的伺服器管理快照,使用
Eventual Consistency
(EC)和興趣管理(AoI
:興趣區域),可擴展到高玩家數量。 - Shared Mode with Custom Server: Fusion的Photon伺服器插件可以完全訪問遊戲狀態,即使沒有Unity。編寫輕量級的伺服器遊戲邏輯只需一些努力就可實現。
預制構件
Fusion支持所有Unity最新的預制構件功能,而且開箱即用。
- 預制件變數
- 嵌套預制構件
- 嵌套的聯網對象(非預制板)