在 PlayFab 上设置 Linux 专用服务器
本指南旨在描述构建和验证 Linux 专用服务器所需的所有步骤。以下步骤专门针对 Unreal Engine 5(包括抢先体验版和正式版)。相同的步骤已经过测试,也适用于 UE 4.26 和 UE 4.27,只是在 Unreal Engine UI 上打包选项的位置有些细微差别,UE 4.27 和 UE5 抢先体验版中的位置不同。 有关更多 Linux 部署信息,请参见此处要求
说明
- 从 Unreal Linux 先决条件中,下载与您已安装的 Unreal Engine 对应的工具链,并运行可执行文件。请注意,与本指南中的许多部分一样,这些步骤仅在您的 Unreal Engine 是从源代码构建时才有效。
- 安装完成后,检查您的 Windows 环境变量,并确认存在以下系统变量:LINUX_MULTIARCH_ROOT。
- 在您的 Unreal Engine 源代码目录中:
- 重新运行:
Setup.bat - 重新运行:
GenerateProjectFiles.bat
- 重新运行:
- 返回到您自己的项目:
- 右键单击您的
{ProjectName}.uproject文件,选择 Generate Visual Studio project files - 在 Visual Studio 中打开 {ProjectName}.sln 文件
- 将配置设置为 Development Editor
- 构建并运行 Unreal Editor
- 右键单击您的
- 此时,您应该能够将您的项目打包为 Linux 服务器到您选择的目录中。
- 对于 Unreal Engine 5,在编辑器中,选择屏幕右上角的打包选项,现在应该可以选择 Linux 选项。对于 UE 4.26 和 UE 4.27,打包选项在 file 标签下。
- 确认您的 Server & Shipping 配置,选择 Linux 进行构建,然后选择输出目录。
创建 Linux 服务器的 Docker 镜像
在本节中,我们将设置一个包含您的 Linux 服务器的 Docker 镜像- 现在您已经创建了 Linux 服务器,请导航到该目录(Windows 资源管理器或您选择的终端)
- 创建一个名为:
Dockerfile的新文件 - 使用您选择的编辑器编辑该文件(notepad、vim、emacs 等)
- 复制并粘贴下方显示的内容。请务必将 [YourProjectNameServer].sh 替换为您自己的 linux 服务器可执行文件的名称(位于同一目录中)
- 使用您选择的终端,导航到 Linux 服务器目录
- Windows 用户通常使用 cmd 或 powershell,不过也可以通过第三方工具或 WSL 使用 bash
- Mac 和 Linux 用户通常使用 bash
- 运行:
docker build -t "[imageName]:[tag]" .,其中 imageName 和 tag 是您选择的选项。- 记住这些名称,您稍后将再次使用它们
- 例如:分别为 YourProjectNameServer 和 01
- tag 元素通常用于对服务器实例进行版本控制
- 这些标签将在稍后的步骤中使用
- 如果您忘记了,可以在终端上输入 docker images 来检索 imageName 和 tag
- 在终端上输入 docker images 来检查 docker 镜像是否成功创建。
- 保持此终端窗口打开并放在一旁,因为我们稍后还会有更多命令
- (在后续步骤中标记为 [Docker terminal])
将容器镜像上传到 PlayFab Azure 注册表
此时,您已准备好将 docker 镜像推送到 PlayFab Azure Container Registry,以便可以将其用于在 PlayFab 上启动您的构建。- 导航到 PlayFab 开发者门户
- 选择您的标题
- 选择左侧的 Multiplayer 选项卡
- 选择屏幕右侧的 New Build。
- 选择一个名称
- 选择 VM 类型,对于 ThirdPersonMP 项目,Dasv4 (2 cores) 就足够了
- 在 Server Details 下,将 Server Type 设置为 Container,将 Operating System 设置为 Linux。
- 选择 Upload to container registry。
- 在弹出的窗口中:
- 记住此窗口中的 [AzureUsername],后续步骤中将多次使用
- 选择 Copy Docker Login Command
- 返回到 {Docker terminal} 窗口
- 将 Docker Login 命令粘贴到 [Docker terminal] 中。此命令将您登录到 PlayFab 使用的 Azure 注册表。
- 输入:
docker tag [imageName]:[tag] [AzureUsername].azurecr.io/[imageName]:[tag] - 输入:
docker push [AzureUsername].azurecr.io/[imageName]:[tag] - 请记住,AzureUsername 显示在 PlayFab 开发者门户上,而 imageName 和 tag 是您之前选择的。
- 返回到 PlayFab 网站,在 New Build 页面的 Server Details 下,选择 Container image 旁边的 Refresh。
- 单击箭头按钮,您应该能够看到并选择您上传的 docker 镜像以及相应的标签。
- 在 Regions 区块中,选择靠近您的区域,并将 Standby 和 Max 都设置为 1(仅用于测试)
- 在 Network 区块中,将 Port Name 字段设置为
gameport- 必须定义将用于连接到游戏服务器的端口
- Unreal GSDK 包含自动读取此端口的代码,并根据此值在内部覆盖 Unreal 服务器主机端口
- 此端口的名称必须是
gameport
- 选择 Add Build,然后等待您的构建状态变为 Deployed
