將 GSDK 新增至專案
本文說明如何升級現有專案,使其可以裝載在 PlayFab 多人遊戲伺服器 (MPS) 上。此程序涉及將 PlayFab GSDK 新增並設定至 Unreal 專案中。這裡的指示是使用 Unreal ThirdPersonMP 範本專案撰寫的。 請注意,您的 Unreal 專案必須具備下列功能:- 網路
- 多人遊戲
- 專用遊戲伺服器
目標
我們將在您的專案中新增並設定 PlayFab Unreal GSDK,並在本機進行測試,以確認它預期可以在 PlayFab 多人遊戲服務上運作。需求
- 下載 Visual Studio。Community 版本是免費的。
- 必要的工作負載:.NET 桌面開發和使用 C++ 的桌面開發
- 下載 Unreal Engine 原始程式碼。如需指示,請參閱下載 Unreal Engine 原始程式碼 (外部)。
- 已完成的 ThirdPersonMP 範例專案,或具有類似功能的專案
- PlayFab Unreal GSDK 外掛程式
- [選用] PlayFab Marketplace 外掛程式或 GitHub 上的原始程式碼版本。GSDK 不需要此外掛程式,但許多 PlayFab 服務 (包括登入) 都需要它。
C++ 實作
將外掛程式新增至專案
依照下列步驟將 Unreal GSDK 新增至您的專案:- 前往您的 Unreal 專案
- 開啟檔案總管,並在遊戲的根目錄中建立 Plugins 資料夾。在 Plugins 資料夾中,建立名為 PlayFabGSDK 的資料夾。
- 前往 {depot}\GSDK\gsdk\UnrealPlugin。將 UnrealPlugin 資料夾中的所有檔案拖曳至 Plugins/PlayFabGSDK 資料夾。
- 最後,在您選擇的文字編輯器中開啟
{ProjectName}.uproject檔案。在 plugins 陣列中,新增 “PlayFabGSDK” 外掛程式。
在模組中包含外掛程式
- 更新 {ProjectName}.Build.cs 檔案,將 “PlayFabGSDK” 新增至 PublicDependencyModuleNames.AddRange(); 清單中,如下所示:
- 以滑鼠右鍵按一下
{ProjectName}.uproject檔案,然後選取 Switch Unreal Engine version 選項,這可讓您快速檢查目前使用的 Unreal Engine 版本。應該會出現如下所示的快顯視窗。如果您已經看到 Unreal Engine 版本是原始程式碼組建,則不需要變更任何內容,請按一下 Cancel。如果 Unreal 版本目前不是原始程式碼組建,請從下拉式清單中選取它,然後按一下 OK。

-
再次以滑鼠右鍵按一下
{ProjectName}.uproject檔案,然後選取 “Generate Visual Studio Project Files”。 - 最後,在 Visual Studio 中建置專案,並選取 Development Editor 設定以啟動編輯器。

專案設定
專案啟用伺服器模式後,您會有一個 {ProjectName}Server.Target.cs 檔案。 結果應類似如下:建立/更新 GameInstance 類別
建立 GameInstance 類別
如果您正在從頭建立專案,且還沒有 GameInstance 類別,請先依照這些範例指示建立 GameInstance 類別。如果您使用的專案已經有 GameInstance 類別 (例如 Unreal 範例庫中的 ShooterGame),請繼續前往標題為 修改 GameInstance 類別 的一節。在 Unreal Editor 中:
- 選取 Files
- 選取 Create a new C++ class
- 選取 Show all classes
- 在搜尋欄位中輸入
GameInstance- 依照所述直接選取它,所有內容都應該會正確產生,然後您可以新增我們在下方詳述的函式
- 關閉 Unreal,並再次以原始程式碼組建模式 Generate project files
- 使用 Visual Studio 開啟這些新建立的檔案,並依照指示修改 GameInstance 類別。
修改 GameInstance 類別
根據專案的設定,您可以使用 C++ 或藍圖修改 GameInstance 類別。下方提供這兩種方式,您應該選取符合需求的方式。C++ 實作
找到您的 GameInstance 類別,它最可能的名稱類似 {ProjectName}GameInstance 或 MyGameInstance。從現在起,您的 GameInstance 類別將以 [YourGameInstanceClassName] 表示。修改 GameInstance 標頭檔
首先,檢查 include 陳述式,並確保 GameInstance 類別的標頭檔 ([YourGameInstanceClassName].h) 中包含下列內容:修改 GameInstance CPP 檔案
接著,找到 [YourGameInstanceClassName].cpp 檔案。 請確定包含下列內容:建立 Init() 函式
如果您已經有 Init() 函式,請檢查
[YourGameInstanceClassName].cpp 檔案,看看是否有指出執行個體是否用於專用伺服器的變數。如果您可以找到此變數,請將下列內容新增至 Init() 函式的結尾:
修改現有的 Init() 函式
最後,將這些方法實作新增至
[YourGameInstanceClassName].cpp 檔案的底部:
藍圖實作
只有當您決定使用藍圖實作而非純 C++ 實作時,才需要此部分。- 觀察 Unreal Editor 中的 Content Browser 視窗
- 選擇或建立一個資料夾來存放新的藍圖
- 按一下滑鼠右鍵並建立藍圖類別
- 在 All classes 下拉式功能表中,找到您的 GameInstance 類別
- 在此範例中,藍圖名為 “MyGameInstance”
- 按兩下藍圖
- 在左側,將滑鼠停留在函式欄位上,然後選取 Override 下拉式清單
- 選取 Init 函式
- 在圖表中按一下滑鼠右鍵,並新增所有 register GSDK 函式
- 對於 GSDK Shutdown 和 Maintenance Delegate,從紅色方塊拖曳出一條線,然後選取 “Add Custom Event”
- 對於 “Register GSDK Health Check Delegate”,在 “Event Dispatchers” 中選取 “Create Event”。
-

- 在新節點的下拉式清單中選取 “Create matching function”。這很重要,因為 GSDK Health Check Delegate 有傳回值。
-

- 在函式中,確定已勾選傳回的布林值。
-

- 別忘了將所有節點連接至 Event Init 節點。
- 最後新增 “ReadyforPlayers” 節點,以便能夠回應 PlayFab 的就緒信號。
- 此外,別忘了新增 “SetDefaultServerHostPort” 節點,以連線至 GSDK 預期的連接埠。
- 對於您想要在藍圖中新增的每個 GSDK 函式/節點,您可以在新節點中輸入函式名稱的前幾個字母,並查看預期的 GSDK 函式是否出現在建議中,以確認它存在。
- 最後,您的藍圖應該類似下圖所示。
-

設定 GameInstance 類別
建立與 gsdk 整合的自訂 GameInstance 類別後,您必須設定專案以實際使用這個新建立的 GameInstance 類別。有兩種方式可以執行此操作——透過 Unreal Engine 編輯器,或直接編輯 DefaultEngine.ini。在 Unreal Editor 中
在編輯器中,可以透過 UI 設定預設的 GameInstance。在編輯器中,前往 Edit -> Project Settings。在開啟的視窗中,瀏覽至左側的 Maps&Modes。捲動至底部,然後您可以直接將GameInstanceClass 選項設定為新的 GameInstance 類別 (避免拼寫錯誤,必須完全相符)。
