在云中部署和运行 Windows 服务器
本指南说明如何将您的 Windows 服务器构建部署到 PlayFab Multiplayer Server (MPS) 云。这非常适合在开发期间测试和快速迭代您的游戏服务器。许多用户在使用 Windows 测试后,将使用 Linux 服务器进行生产发布。目标
- 将项目部署到云中。
- 从本地游戏客户端连接到它
要求
- 下载 Visual Studio。社区版是免费的。
- 所需的工作负载:.NET 桌面开发和使用 C++ 的桌面开发
- 下载 Unreal Engine 源代码。有关说明,请参见下载 Unreal Engine 源代码(外部)。
- 已安装并配置了 PlayFab Unreal GSDK 的已完成的 Unreal 项目
- 从 Visual Studio 或 Development Editor 构建的项目发布服务器配置
- 从 Visual Studio 或 Development Editor 构建的项目客户端配置
- MPS 已为您的标题启用,并已设置计费
- [可选] 安装 Docker for Windows
说明
打包游戏服务器
- [可选] 此部分可用于刷新 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 进行测试
- 使用 LocalMultiplayerAgent 验证后,请参见创建构建指南
- 此时在 MPS 上进行测试需要一个中间工具 PlayFab MpsAllocatorSample
- 此工具暂时绕过了一些客户端工作,并允许我们在没有游戏客户端直接请求的情况下分配服务器
- 在客户端上执行此操作的正确方法是分配指南中涵盖的单独主题。
- 从上面的 {ShippingServerFolder} 压缩您的 Shipping Server 构建
- 您的压缩包应包含 {ShippingServerFolder} 中的所有内容,可选地位于压缩包文件的根目录
- [可选] 也就是说,您的压缩包的根目录应包含 {ProjectName}Server.exe(建议 exe 不应位于诸如 “WindowsServer” 之类的子文件夹中。如果需要,请重建您的压缩包)
- 熟悉构建创建过程指南
- 特定配置的具体细节详述如下:
在 PlayFab 上设置 Windows 专用服务器
本节将介绍在 PlayFab MPS 中创建构建、上传游戏服务器以及首次连接到它。您还可以按照核心 MPS 服务器创建指南获取较少 Unreal 特定的说明。- 导航到 Game Manager -> Multiplayer
- 选择 New Build
- 为构建命名
- 选择虚拟机(对于本指南中描述的示例,推荐的核心数最少的选项就足够了)
- 每台机器的服务器数量可以约为 1~10
- 提高/增加此数字取决于您的游戏服务器的性能
- 您可以使用 VM 指标来衡量您的游戏服务器的性能,并进行优化以提高此数字
- 暂时跳过 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以使用绝对子路径访问您的项目
- 将 gameServer 压缩包文件的 Mount Path 设置为
- 选择 Add Build
- 跳到下面的 Configure Regions 部分
