将 GSDK 添加到项目
本文介绍如何升级现有项目,使其可以托管在 PlayFab Multiplayer Servers (MPS) 上。该过程包括将 PlayFab GSDK 添加并配置到 Unreal 项目中。此处的说明是使用 Unreal ThirdPersonMP 模板项目编写的。 请注意,您的 Unreal 项目必须具有以下功能:- 网络
- 多人游戏
- 专用游戏服务器
目标
我们将向您的项目添加并配置 PlayFab Unreal GSDK,并在本地测试以验证它有望在 PlayFab Multiplayer Services 上正常工作。要求
- 下载 Visual Studio。社区版是免费的。
- 所需的工作负载:.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”。 - 最后,通过选择 Development Editor 配置在 Visual Studio 中构建项目并启动编辑器。
项目设置
一旦您的项目启用了服务器模式,您将拥有一个 {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 并再次在源代码构建模式下 生成项目文件
- 使用 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 函数
- 在图表中右键单击并添加所有的注册 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 的 ready 信号做出反应。
- 此外,不要忘记添加 “SetDefaultServerHostPort” 节点以连接到 GSDK 期望的端口。
- 对于您想要在蓝图中添加的每个 GSDK 函数/节点,您可以通过在新节点中键入函数名称的前几个字母,并查看预期的 GSDK 函数出现在建议中来验证它是否存在。
- 最后,您的蓝图应该类似于下图所示。
设置 GameInstance 类
创建了与 gsdk 集成的自定义 GameInstance 类后,您必须配置项目以实际使用这个新创建的 GameInstance 类。有两种方法可以做到这一点 - 通过 Unreal Engine 编辑器或直接编辑 DefaultEngine.ini。在 Unreal Editor 中
在编辑器中,可以通过编辑器中的 UI 设置默认 GameInstance。在编辑器中,转到 Edit -> Project Settings。从打开的窗口中,导航到左侧的 Maps&Modes。滚动到底部,然后您可以直接将GameInstanceClass 选项设置为您新的 GameInstance 类(避免拼写错误,必须完全匹配)。
