快速入門:PlayFab Online Subsystem
本文可協助您為使用 Unreal Engine 4 或 Unreal Engine 5 建置的遊戲,設定及使用 Lobby、Matchmaking 和 Party 等 PlayFab Multiplayer 功能。如需 Unreal Engine 4 或 Unreal Engine 5 中支援之平台和版本的完整清單,請參閱支援的平台。 依照本頁針對目標平台概述的相關步驟操作後,您就可以開始使用 PlayFab Online Subsystem (PF OSS)。驗證、網路、VOIP、大廳分組和配對都會替您處理,不需要其他變更。下載並安裝 PlayFab Online Subsystem
前往 PlayFab Online Subsystem 下載或複製 PF OSS 原始碼。下載或複製的存放庫名稱為 PlayFabMultiplayerUnreal。必須將存放庫重新命名為 OnlineSubsystemPlayFab。您需要的項目
- PlayFab TitleID: 如果您沒有為 PlayFab Party 和 Multiplayer 軟體開發套件 (SDK) 設定的 TitleID,請參閱啟用 PlayFab Party.
Microsoft Game Development Kit (GDK)、PC、Switch、PlayStation®5 和 PlayStation®4
- 特定平台的 PlayFab Party 以及 Lobby 和 Matchmaking 程式庫: 請參閱取得 PlayFab Party 和 Multiplayer 程式庫.
初始設定
Unreal Engine 程式碼基底
- 將 OnlineSubsystemPlayFab 資料夾及其內容複製到 Unreal Engine 目錄下的 Engine\Plugins\Online。
- 執行
GenerateProjectFiles.bat以建立引擎的專案檔。 - 選取新的
UE5.sln檔案,將專案載入 Visual Studio。 - 將方案組態設為 Development Editor,並將方案平台設為 Win64。選取 Unreal Engine 5 目標,然後選取 Build。
遊戲程式碼基底
- 若要將 OnlineSubsystemPlayFab 新增至外掛程式清單,請對專案檔的 Plugins 區段套用下列變更。
- 移除您不會推出的任何平台
- 如果您使用 Unreal Engine 4,請使用 XboxOneGDK 而非 XB1。Unreal Engine 5 已淘汰 XboxOneGDK
- 選取
{ProjectName}.uproject檔案,然後選取 Switch Unreal Engine Version 並切換至 Unreal Engine 程式碼路徑,以產生遊戲方案檔。
遊戲設定
- 無論您的目標平台為何,遊戲都需要在預定平台目標的 INI 檔案 (位於 [yourGameDirectory]/Platforms/[yourPlatform]/Config) 中設定某些 PlayFab 專屬值。
- XBOX Series X GDK: XSXEngine.ini
- PC GDK: WinGDKEngine.ini
- XBOX One GDK: XB1Engine.ini (如果您使用 Unreal Engine 4,則為 XboxOneGDKEngine.ini)
- PC Steam: WindowsEngine.ini (或在 [yourGameDirectory]/Config/Windows 中尋找)
- Nintendo Switch SwitchEngine.ini
- PS4™ PS4Engine.ini
- PS5™ PS5Engine.ini
- 如果設定中已存在 INI 區段 (例如 Engine.GameEngine),請以下列各節中提供的區段取代。
- 請確定已將所有 <REPLACE ME> 欄位取代為您的資料:
- 在 UE 5.6 及更新版本上,
DriverClassName參數需要 “/Script/” 前置詞。例如,使用"/Script/OnlineSubsystemPlayFab.PlayFabNetDriver"而非"OnlineSubsystemPlayFab.PlayFabNetDriver"。
平台專屬考量
完成上述所有步驟後,就快大功告成了。只剩下幾個必須設定的重要平台專屬參數。GDK
使用 GDK 開發遊戲時,請設定平台服務。Steam
如果您要使用 Steam 開發 Win64 遊戲,請定義您的平台服務。Switch
如需 Switch 的詳細資訊,請參閱 Switch PlayFab OSS 隨附的 ReadMe.md 檔案。如果您沒有存取權,可以要求存取我們的私人存放庫。PS5™ 和 PS4™
如需 PS5™ 和 PS4™ 的詳細資訊,請參閱 PS5™ 和 PS4™ PlayFab OSS 隨附的 ReadMe.md 檔案。如果您沒有存取權,可以要求存取我們的私人存放庫。跨平台
如果您的遊戲使用 PlayFab 的跨平台網路支援,請定義您允許連線的平台。在遊戲程式碼中使用
PlayFab Online Subsystem 僅支援將遊戲工作階段命名為
NAME_GameSessionPublicDependencyModuleNames.AddRange(new string[] { "OnlineSubsystem", "OnlineSubsystemUtils" });,然後以與其他遊戲外掛程式相同的方式使用它。
GameSession.cpp 中的範例程式碼:
疑難排解
協助您針對問題進行疑難排解的方式。Unreal Engine 已安裝組建
使用者嘗試在 GDK 組建版本上使用 OnlineSubsystemPlayFab 建立 Unreal Engine 已安裝組建時,可能會遇到問題。在有更完整的解決方案之前,我們提供下列指引,協助您順利克服此問題。 如果您使用 Unreal Engine 5.4、5.5、5.6 或 5.7:- 您可能會遇到下列執行階段錯誤:
Runtime dependency Party.dll is configured to be staged from C:\Program Files (x86)\Microsoft GDK\<version>\Party.dll and Engine\Plugins\Online\OnlineSubsystemPlayFab\Platforms\GDK\Redist\Party.dll - 瀏覽至 Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\
- 開啟 OnlineSubsystemGDK.uplugin,並將
PlayFabParty設為停用:
- 瀏覽至 Engine\Platforms\GDK\Plugins\Online\OnlineSubsystemGDK\Source\
- 開啟 OnlineSubsystemGDK.Build.cs,並將包含
PlayFabParty的程式碼註解化:
- 找到電腦上安裝 Unreal Engine 的目錄。
- 瀏覽至 Engine\Platforms\GDK\Plugins\Online\PlayFabParty
- 開啟 PlayFabParty.uplugin,並使用 PlatformDenyList 更新 Modules 設定:
- 如果已安裝組建需要 XB1 (PlayFabParty_XB1.uplugin) 和 XSX (PlayFabParty_XSX.uplugin) 平台,請為這些平台重複此程序。如果已安裝組建也需要 Win64 平台,請在 PlatformDenyList 陣列中新增 Win64。
- 找到電腦上安裝 Unreal Engine 的目錄。
- 瀏覽至 Engine\Platforms\GDK\Plugins\Online\PlayFabParty
- 開啟 PlayFabParty.uplugin
- 將索引鍵 WhitelistPlatforms 取代為 BlacklistPlatforms
- 如果已安裝組建需要 XboxOneGDK (PlayFabParty_XboxOneGDK.uplugin) 和 XSX (PlayFabParty_XSX.uplugin) 平台,請為這些平台重複此程序。如果已安裝組建也需要 Win64 平台,請在 BlacklistPlatforms 陣列中新增 Win64。
Steam 上的交握失敗
如果您看到交握失敗 (例如LogHandshake: IncomingConnectionless: Error reading handshake packet),請參閱此 Unreal Engine 論壇文章檢查設定。
OnlineSubsystemPlayFab 的工作流程
平台專屬考量一節中概述的步驟要求您包含:FOnlineSubsystemPlayFab::Init() 中初始化,
並使用 PlayFab TitleID (此 titleID 定義於遊戲設定檔案中) 同時初始化 Party 和 Multiplayer SDK。在初始化期間,我們會 CreatePlayFabSocketSubsystem() 作為主要的線上子系統。
Multiplayer SDK 的工作流程:FOnlineSubsystemPlayFab::Init() 會為您的遊戲初始化 InitializeMultiplayer() 多人遊戲 SDK 單一執行個體。在 PlayFabLobby.cpp 中,FPlayFabLobby::DoWork() 會處理 Multiplayer API 觸發的狀態變更 (如需 API,請檢視 Platforms/GDK/Include/PFLobby.h)。
Party SDK 的工作流程:FOnlineSubsystemPlayFab::Init() 會為您的遊戲初始化 InitializeParty() 多人遊戲 SDK 單一執行個體。在 OnlineSubsystemPlayFab.cpp 中,FOnlineSubsystemPlayFab::DoWork() 會處理 Party API 觸發的狀態變更 (如需 API,請檢視 Platforms/GDK/Include/Party.h)。
「PlayStation」是 Sony Interactive Entertainment Inc. 的註冊商標或商標。
「PS4」是 Sony Interactive Entertainment Inc. 的註冊商標或商標。
「PS5」是 Sony Interactive Entertainment Inc. 的註冊商標或商標。