> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# GSDK 项目云部署

> 在切换到 Linux 用于生产之前,将 Unreal Engine GSDK Windows 服务器构建部署到 PlayFab Multiplayer Servers (MPS) 云以进行迭代测试。

# 在云中部署和运行 Windows 服务器

本指南说明如何将您的 Windows 服务器构建部署到 PlayFab Multiplayer Server (MPS) 云。这非常适合在开发期间测试和快速迭代您的游戏服务器。许多用户在使用 Windows 测试后,将使用 [Linux 服务器](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/setting-up-a-linux-dedicated-server-on-playfab)进行生产发布。

## 目标

* 将项目部署到云中。
* 从本地游戏客户端连接到它

## 要求

* 下载 Visual Studio。[社区版](https://visualstudio.microsoft.com/vs/community/)是免费的。
  * 所需的工作负载:.NET 桌面开发和使用 C++ 的桌面开发
* 下载 Unreal Engine 源代码。有关说明,请参见[下载 Unreal Engine 源代码(外部)](https://docs.unrealengine.com/ProgrammingAndScripting/ProgrammingWithCPP/DownloadingSourceCode/)。
* 已安装并配置了 [PlayFab Unreal GSDK](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-gsdk-project-setup) 的[已完成的 Unreal 项目](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-setup)
* 从 Visual Studio 或 Development Editor 构建的项目[发布服务器](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/building-the-third-person-mp-example-project)配置
* 从 Visual Studio 或 Development Editor 构建的项目[客户端](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/building-the-third-person-mp-example-project)配置
* MPS [已为您的标题启用](/services/playfab/multiplayer/servers/enable-playfab-multiplayer-servers),并已设置计费
* \[可选] 安装 [Docker for Windows](https://docs.docker.com/desktop/windows/install/)

## 说明

### 打包游戏服务器

* \[可选] 此部分可用于刷新 Unreal 构建到您项目中的文件。如果您最近创建或删除了文件,这很有用。
  * 如果您最近尚未在 "development editor" 配置中构建您的项目,请立即进行构建
  * 关闭 Visual Studio
  * 导航到您的项目的 `{ProjectName}.uproject` 文件
  * 在文件编辑器中右键单击 `{ProjectName}.uproject` 文件,然后选择 "Generate Visual Studio Project Files"
  * 在 Visual Studio 中重新打开 \{ProjectName}.sln 文件
* 选择 **Development Editor** 配置
* 运行您的项目
* 观察 Unreal Editor,它应该已加载您的项目
* 在 Unreal 编辑器菜单的左上角,选择 **File** -> **Package** -> **Build Target** -> **\{ProjectName}Server**
* 选择 **File** -> **Package** -> **Build Configuration** -> **Shipping**
* 选择 **File** -> **Package** -> **Windowsx64**
* 选择并记住输出位置 \{ShippingServerFolder}
* 现在您可以使用此打包版本的游戏服务器[使用 LocalMultiplayerAgent 进行测试](/services/playfab/multiplayer/servers/locally-debugging-game-servers-and-integration-with-playfab)
* 使用 LocalMultiplayerAgent 验证后,请参见[创建构建指南](/services/playfab/multiplayer/servers/deploying-playfab-multiplayer-server-builds)
  * 此时在 MPS 上进行测试需要一个中间工具 [PlayFab MpsAllocatorSample](https://github.com/PlayFab/MpsSamples/tree/main/MpsAllocatorSample)
  * 此工具暂时绕过了一些客户端工作,并允许我们在没有游戏客户端直接请求的情况下分配服务器
  * 在客户端上执行此操作的正确方法是[分配指南](/services/playfab/multiplayer/servers/allocating-game-servers-and-configuring-vs-debugging-tools)中涵盖的单独主题。
* 从上面的 \{ShippingServerFolder} 压缩您的 Shipping Server 构建
  * 您的压缩包应包含 \{ShippingServerFolder} 中的所有内容,可选地位于压缩包文件的根目录
  * \[可选] 也就是说,您的压缩包的根目录应包含 \{ProjectName}Server.exe(建议 exe 不应位于诸如 "WindowsServer" 之类的子文件夹中。如果需要,请重建您的压缩包)
* 熟悉[构建创建过程指南](/services/playfab/multiplayer/servers/deploying-playfab-multiplayer-server-builds)
* 特定配置的具体细节详述如下:

### 在 PlayFab 上设置 Windows 专用服务器

本节将介绍在 PlayFab MPS 中创建构建、上传游戏服务器以及首次连接到它。您还可以按照核心 MPS [服务器创建指南](/services/playfab/multiplayer/servers/create-your-first-server)获取较少 Unreal 特定的说明。

* 导航到 Game Manager -> Multiplayer
* 选择 **New Build**
* 为构建命名
* 选择虚拟机(对于本指南中描述的示例,推荐的核心数最少的选项就足够了)
* 每台机器的服务器数量可以约为 1\~10
  * 提高/增加此数字取决于您的游戏服务器的性能
  * 您可以使用 [VM 指标](/services/playfab/multiplayer/servers/vm-metrics)来衡量您的游戏服务器的性能,并进行优化以提高此数字
* 暂时跳过 **Server details** (将在下一步中介绍)
* 在 Assets 区块中,将上一节中的压缩包文件拖到上传框中
  * 如果您正在重新启动,可以选择 **Use existing assets**
* 等待上传完成
* 暂时跳过 **Start Command** (将在下一步中介绍)
* 在 Network 区块中,将 Port Name 字段设置为 `gameport`
  * 必须定义将用于连接到您的游戏服务器的端口
  * Unreal GSDK 包含自动读取此端口的代码,并根据此值在内部覆盖 Unreal 服务器主机端口
  * 此端口的名称必须是 `gameport`
* 继续执行与您想要配置的 "Server Details" 匹配的下一步

#### 选项 1:Windows 进程模式

此选项将您的游戏服务器作为进程直接在 VM 上运行。您的进程将共享对整台机器的访问权限,包括端口、驱动器等。此选项解压缩您的资产上传,并从解压缩文件的位置作为工作目录执行 "Start Command"。

* 在 **Server Details** 中,选择 **Process** 和 **Windows**
* 在 **Assets** 中,将启动命令设置为:
  * `{ProjectName}Server.exe` 或者如果您想要生成日志文件,则为 `{ProjectName}Server.exe -log`
  * 启动命令是从命令行执行的,使用您解压缩的资产文件作为工作目录
  * 如果您选择使用子文件夹打包您的压缩包文件,则可以指定相对路径,例如:`WindowsServer/{ProjectName}Server.exe` 以使用相对子路径访问您的项目
* 选择 **Add Build**
* 跳到下面的 **Configure Regions** 部分

#### 选项 2:Windows 容器模式

此选项在 docker 容器中运行您的游戏服务器,将它们彼此隔离。每个服务器进程将拥有单独的虚拟驱动器、虚拟网络端口等。此选项将您的资产解压缩到您将定义的 Mount Path,并期望您的启动命令是基于 Mount Path 的完整路径。

先决条件要求:配置 Docker 以运行 Windows 容器

* 在 **Server Details** 中,选择 **Process** 和 **Windows**
* 在 **Assets** 中
  * 将 gameServer 压缩包文件的 **Mount Path** 设置为 `C:\assets`(或类似的内容,标记为 \{MountPath})
  * 将启动命令设置为:`{MountPath}\{ProjectName}Server.exe` 或者如果您想要生成日志文件,则为 `{MountPath}\{ProjectName}Server.exe -log`
  * 启动命令应表示容器中到您的 -Server.exe 文件的完整路径
  * 如果您选择使用子文件夹打包您的压缩包文件,则可以指定绝对路径,例如:`{MountPath}\WindowsServer\{ProjectName}Server.exe` 以使用绝对子路径访问您的项目
* 选择 **Add Build**
* 跳到下面的 **Configure Regions** 部分

## 后续步骤

许多用户可能希望通过[连接游戏客户端](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/connect-to-mps-hosted-build)来测试他们的服务器。

其他用户可以选择继续使用 [Linux 容器](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/setting-up-a-linux-dedicated-server-on-playfab)重建和重新部署他们的服务器。Linux 降低了大规模部署的服务器托管成本。

否则,您可以返回到主要的 [Unreal GSDK 插件](/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk)指南。


## Related topics

- [GSDK 项目测试和调试](/zh-CN/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-local-deployment-and-debugging.md)
- [构建您的 Unreal 示例项目](/zh-CN/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/building-the-third-person-mp-example-project.md)
- [GSDK 项目设置](/zh-CN/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-gsdk-project-setup.md)
- [将 Linux Unreal 服务器部署到 MPS 云](/zh-CN/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/setting-up-a-linux-dedicated-server-on-playfab.md)
- [GSDK 示例项目创建](/zh-CN/services/playfab/multiplayer/servers/server-sdks/unreal-gsdk/third-person-mp-example-project-setup.md)
