Quick Start Guide
Fusion Unreal SDK 3.0.0 是以開發快照的形式提供,不 適用於已上線或已發布的遊戲。在預覽階段可能存在阻礙性錯誤,且 API 可能會發生變更或中斷。
簡介
本文檔是使用 Fusion 與 Unreal 進行開發的快速參考。本指南將解釋如何為第三人稱遊戲添加網路化移動,並展示 Photon Fusion for Unreal 的一些核心功能。
本指南基於 Unreal 5.6 的模板構建。不過,所使用的方法和步驟適用於 Photon Fusion 支援的所有 Unreal 版本。
建立新專案
在 Unreal 5.6 中建立一個新的 Unreal 專案,並選擇 Third Person(第三人稱)模板作為基礎。
設定 Photon Fusion 外掛程式
要在新專案或現有專案中設定 Fusion Unreal,請執行以下步驟:
- 如果尚未存在,在您的 Unreal 專案資料夾中建立一個
Plugins(外掛程式)資料夾。 - 下載 Fusion Unreal 外掛程式。
- 解壓縮 Fusion Unreal 外掛程式,並將
PhotonFusion資料夾複製到Plugins資料夾中。 - 打開專案,確保在「外掛程式」視窗中啟用了
Photon Fusion外掛程式。 - 打開專案設定中的「
Fusion Settings(Fusion 設定)」部分,並填寫您的 App ID。
連接到 Photon 並加入房間
遊戲首先需要做的是加入一個 Photon 房間。可以使用Fusion Online Subsystem(Fusion 線上子系統)連接到 Photon,然後建立或加入房間。進入房間後,用戶端之間的狀態可以進行複製。
建立一個名為BP_FusionSetup的新 Actor 藍圖,並在事件圖的BeginPlay中添加以下藍圖邏輯。
Room Name(房間名稱)可以使用任何字串,並設定合適的Region(地區)(目前可用:eu、us、asia)。
最後,在Lvl_ThirdPerson地圖中的任意位置添加BP_FusionSetup,以便在遊戲一開始就執行加入房間的邏輯。
Actor 複製
要使 Actor 被考慮進行複製,需要勾選Replicates(可複製),並且具有Fusion Actor Settings(Fusion 角色設定)元件。
Fusion Actor Settings有許多屬性可以調整,以更好地適應您的遊戲,不過我們發現大多數預設值在一系列常見場景中表現良好。
需要注意的一個屬性是Disable Interpolation(禁用插值)。預設情況下,Fusion 複製的屬性會在當前本地值和已複製的新值之間進行插值。當擁有者直接設定角色的位置時,這種預設行為可以減少物件移動中的卡頓。但是,在某些情況下,最好通過勾選Disable Interpolation方塊來禁用這種預設行為,因為 Fusion 外部的邏輯已經處理了平滑問題。
在本指南中,第三人稱角色將被複製,由於 Fusion 支援 Character Movement Component(角色移動元件),該元件提供平滑效果,因此應勾選Disable Interpolation方塊。
- 打開
BP_ThirdPersonCharacter,添加Fusion Actor Settings元件。 - 在
Fusion Actor Settings元件的詳細信息中勾選Disable Interpolation. - 確保在
Class Defaults(類別預設值)中勾選了Replicates.
測試
請確保每個 PIE 視窗在自己的進程中執行,方法是在編輯器偏好設定中禁用Run Under One Process(在一個進程下執行)選項。
現在已經完成了足夠的設定,以支援基本的角色複製移動。不過,需要調整一些編輯器設定,才能使用多個 PIE 用戶端進行測試。
確保每個 PIE 視窗在自己的進程中執行,方法是禁用
Run Under One Process選項:- 編輯器偏好設定 -> 關卡編輯器 -> 播放 -> 多人遊戲選項 -> 在一個進程下執行
雖然不是必須的,但我們建議禁用
Use Less CPU when in Background(在背景時使用更少的 CPU)選項- 編輯器偏好設定 -> 一般 -> 效能 -> 編輯器效能 -> 在背景時使用更少的 CPU
打開Lvl_ThirdPerson地圖,並使用多個 PIE 視窗啟動遊戲。
按下播放按鈕後,您應該會看到所有角色都站在地圖中。花點時間在不同視窗之間切換,並以不同玩家的身份到處跑動。您應該能從所有用戶端的視角看到每個角色的移動。
恭喜,您剛剛使用 Photon Fusion 建立了您的第一個網路化體驗!
屬性複製
本節利用 Photon Fusion 對標準 Unreal 複製的支援,添加更改玩家角色顏色的功能,並使該更改出現在所有用戶端上。
在BP_ThirdPersonCharacter中添加以下邏輯,以便在按下P鍵時隨機建立並保存角色的新顏色。將Linear color(線性顏色)變數命名為Paint Tint(塗料色調),並將複製設定設為RepNotifiy。
向RepNotifiy函數添加以下邏輯。Paint Tint變數用於設定材質中的相應參數。(為簡單起見,我們在這裡建立動態材質,但通常最佳做法是快取它)。
現在,每個玩家的顏色變更都應該會被複製。
這裡只複製了一種變數類型,但 Photon Fusion 支援所有變數類型,無論是否有 RepNotify。
嘗試在遊戲中按下P鍵,看看為您的角色隨機選擇的新顏色。顏色變更將被複製到其他用戶端。
添加物理物件
Photon Fusion 提供「Forecast(預測)」模式,用於在多個用戶端之間同步物理物件狀態。在將物件狀態與本地狀態和物理模擬組合之前,會使用外插法預測物件的遠端狀態。
任何以StaticMesh(靜態網格體)作為根場景物件且啟用Simulate Physics(模擬物理)的 Actor,預設都會使用預測模式。如有需要,可以在Fusion Actor Settings元件中禁用此功能,在這種情況下,如果啟用了標準插值,將使用標準插值。
- 建立一個名為
BP_Ball的新 StaticMesh 藍圖 Actor。 - 通過勾選 Actor 上的
Replicates來確保啟用複製。 - 將網格體設定為球體,並確保啟用
Simuate Physics(模擬物理)選項。 - 添加
Fusion Actor Settings元件。 - 在
Fusion Actor Settings元件上將Auto Dynamic Ownership Range(自動動態所有權範圍)調整為 500。 - 將
BP_Ball拖入地圖。
Auto Dynamic Ownership Range用於根據玩家距離自動調整 Actor 的所有權。這意味著在此範圍內的玩家將被分配BP_Ball的所有權,並成為其他用戶端進行外插的遠端狀態基礎。
可以通過將該值設定為 0 來禁用這種基於範圍的檢查,然後根據需要在FusionOnlineSubsystem上手動調用SetsWantsOwner()。
RPCs
Photon Fusion 支援自訂 Fusion RPC。在以下步驟中,我們將建立一個 RPC,以便在按下E鍵時在玩家腳下生成爆炸效果。
- 如果尚未匯入
StarterContent(入門內容)套件,請將其添加到專案中。這將提供可用的爆炸效果。- 在內容面板中:添加 -> 添加功能或內容套件 -> 內容 -> 入門內容
- 打開
BP_ThirdPersonCharacter。 - Create a new 建立一個名為
SpawnExplosionRPC的新「Custom Event(自訂事件)」,並添加一個用於位置的 Vector 輸入參數。添加下圖中的邏輯。 - 右擊事件圖,建立一個「
Custom Fusion RPC(自訂 Fusion RPC)」。 - 在「
Custom Fusion RPC(自訂 Fusion RPC)」的詳細信息面板中,從Reference Event Name(參考事件名稱)下拉清單中選擇SpawnExplosionRPC事件。 - 將「
Custom Fusion RPC(自訂 Fusion RPC)」節點掛接到E鍵盤事件。
遊玩遊戲時,每當按下E鍵,您都應該會看到爆炸效果出現。