Quick Start Guide

Preview

Fusion Unreal SDK 3.0.0 是以開發快照的形式提供, 適用於已上線或已發布的遊戲。在預覽階段可能存在阻礙性錯誤,且 API 可能會發生變更或中斷。

簡介

本文檔是使用 Fusion 與 Unreal 進行開發的快速參考。本指南將解釋如何為第三人稱遊戲添加網路化移動,並展示 Photon Fusion for Unreal 的一些核心功能。

本指南基於 Unreal 5.6 的模板構建。不過,所使用的方法和步驟適用於 Photon Fusion 支援的所有 Unreal 版本。

Characters in a networked version of the Third Person template

建立新專案

在 Unreal 5.6 中建立一個新的 Unreal 專案,並選擇 Third Person(第三人稱)模板作為基礎。

設定 Photon Fusion 外掛程式

要在新專案或現有專案中設定 Fusion Unreal,請執行以下步驟:

  1. 如果尚未存在,在您的 Unreal 專案資料夾中建立一個 Plugins(外掛程式)資料夾。
  2. 下載 Fusion Unreal 外掛程式。
  3. 解壓縮 Fusion Unreal 外掛程式,並將PhotonFusion資料夾複製到Plugins資料夾中。
  4. 打開專案,確保在「外掛程式」視窗中啟用了 Photon Fusion 外掛程式。
  5. 打開專案設定中的「Fusion Settings (Fusion 設定)」部分,並填寫您的 App ID。

連接到 Photon 並加入房間

遊戲首先需要做的是加入一個 Photon 房間。可以使用Fusion Online Subsystem(Fusion 線上子系統)連接到 Photon,然後建立或加入房間。進入房間後,用戶端之間的狀態可以進行複製。

建立一個名為BP_FusionSetup的新 Actor 藍圖,並在事件圖的BeginPlay中添加以下藍圖邏輯。

BP logic for connecting to Photon and joining a room

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.

測試

Important

請確保每個 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

BP logic for setting the PaintTint

RepNotifiy函數添加以下邏輯。Paint Tint變數用於設定材質中的相應參數。(為簡單起見,我們在這裡建立動態材質,但通常最佳做法是快取它)。

PaintTint On Rep BP logic

現在,每個玩家的顏色變更都應該會被複製。

這裡只複製了一種變數類型,但 Photon Fusion 支援所有變數類型,無論是否有 RepNotify。

嘗試在遊戲中按下P鍵,看看為您的角色隨機選擇的新顏色。顏色變更將被複製到其他用戶端。

添加物理物件

Photon Fusion 提供「Forecast(預測)」模式,用於在多個用戶端之間同步物理物件狀態。在將物件狀態與本地狀態和物理模擬組合之前,會使用外插法預測物件的遠端狀態。

任何以StaticMesh(靜態網格體)作為根場景物件且啟用Simulate Physics(模擬物理)的 Actor,預設都會使用預測模式。如有需要,可以在Fusion Actor Settings元件中禁用此功能,在這種情況下,如果啟用了標準插值,將使用標準插值。

  1. 建立一個名為BP_Ball的新 StaticMesh 藍圖 Actor。
  2. 通過勾選 Actor 上的Replicates來確保啟用複製。
  3. 將網格體設定為球體,並確保啟用Simuate Physics(模擬物理)選項。
  4. 添加Fusion Actor Settings元件。
  5. Fusion Actor Settings元件上將Auto Dynamic Ownership Range(自動動態所有權範圍)調整為 500。
  6. BP_Ball拖入地圖。

Auto Dynamic Ownership Range用於根據玩家距離自動調整 Actor 的所有權。這意味著在此範圍內的玩家將被分配BP_Ball的所有權,並成為其他用戶端進行外插的遠端狀態基礎。

可以通過將該值設定為 0 來禁用這種基於範圍的檢查,然後根據需要在FusionOnlineSubsystem上手動調用SetsWantsOwner()

Players interacting with the physics based object

RPCs

Photon Fusion 支援自訂 Fusion RPC。在以下步驟中,我們將建立一個 RPC,以便在按下E鍵時在玩家腳下生成爆炸效果。

  1. 如果尚未匯入StarterContent(入門內容)套件,請將其添加到專案中。這將提供可用的爆炸效果。
    • 在內容面板中:添加 -> 添加功能或內容套件 -> 內容 -> 入門內容
  2. 打開BP_ThirdPersonCharacter
  3. Create a new 建立一個名為SpawnExplosionRPC的新「Custom Event(自訂事件)」,並添加一個用於位置的 Vector 輸入參數。添加下圖中的邏輯。
  4. 右擊事件圖,建立一個「Custom Fusion RPC(自訂 Fusion RPC)」。
  5. 在「Custom Fusion RPC(自訂 Fusion RPC)」的詳細信息面板中,從 Reference Event Name(參考事件名稱)下拉清單中選擇SpawnExplosionRPC事件。
  6. 將「Custom Fusion RPC(自訂 Fusion RPC)」節點掛接到E鍵盤事件。
RPC BP logic

遊玩遊戲時,每當按下E鍵,您都應該會看到爆炸效果出現。

Players triggering the explosion RPC
Back to top