更多构建方法

这些方法通常较慢,并且需要对 Unreal Engine 有更深入的了解。

探索适用于更高级 Unreal Engine 和 Edgegap 用户的替代构建方法:

  1. 更多构建方法 是一种快速且自动化的方法,适用于持续集成。

  2. ⚡ 使用插件构建 是一种需要从源码构建 Unreal Engine 的传统构建方法。

⚡ 使用脚本构建

使用脚本构建是一种快速、完全自动化且简单的方法,适合用于持续集成。

准备工作

在开始之前,请确保 创建一个 Edgegap 免费帐户 (无需信用卡)。

在你的开发机器上配置一些必需项:

安装 Docker Desktop(或 Docker CLI)
在 GitHub 上获取对 Unreal Engine 资源的访问权限
生成 GitHub 个人访问令牌(经典)
  • 仅启用权限 [读取:软件包] ,

  • 生成令牌 - 请安全保存此值,您将无法再次看到它.

1. 配置项目

无论您使用的是 Windows、Mac 还是 Linux 机器,您都将 需要为 Linux 运行时构建您的服务器,因为如今大多数云提供商(包括 Edgegap)都运行在 Linux 上。别担心,不需要 Linux 知识。

☑️ 禁用 Unreal Engine 版本兼容性检查 用于专用服务器和 设置 IpNetDriver 作为默认驱动或回退驱动 用于复制网络:

☑️ 重启 Unreal Engine 以重新加载最新更改。

☑️ 创建一个专用服务器目标脚本 通过复制你的 <PROJECT>Editor.Target.cs 文件到项目根文件夹并将副本重命名为 <PROJECT>Server.Target.cs.

☑️ 在你的服务器目标脚本中替换所有对 单词 Editor 使用 服务器 的引用。

☑️ 启用标准输出服务器日志 通过在你的服务器目标脚本中添加覆盖:

✅ 现在您可以继续下一步。

可选:Steam 集成

集成 Steam,使用 IpNetDriver 作为您的默认网络驱动并确认 适用于 Linux 的 64 位 steamclient.so 已复制到镜像中的路径 /home/ubuntu/.steam/sdk64/ .

下载 steamclient.so

Dockerfile
...
RUN mkdir -p /home/ubuntu/.steam/sdk64
COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so
RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so
...

请确保 禁用 Steam 网络功能,该功能会通过 Steam 中继发送数据包,可能导致连接问题或延迟骤增。这并不妨碍您使用其他 Steamworks 功能或在 Steam 商店发布游戏。

Config/DefaultEngine.ini
[OnlineSubsystemSteam]
bUseSteamNetworking=false

2. 构建并发布

在一支开发团队中工作意味着共享代码。当事情出错时,你最不想听到的是“在我机器上可以运行”。游戏服务器必须能够在任何机器上可靠运行,因为成功的游戏服务器将运行在全球成千上万台服务器上。

为帮助使你的服务器可靠,我们使用 Docker——虚拟化软件,用于确保从操作系统级别到所有服务器代码依赖项在任何情况下、任何位置启动服务器时都完全一致。

我们建议观看 “永远不要本地安装”(视频). 使用 Docker 时你不需要使用 Dockerhub。Docker ≠ Dockerhub。把 Docker 想象成一个编程引擎,而 Dockerhub 则像它的应用商店。

☑️ 确认已安装并正在运行 Docker。

☑️ 下载我们的 Edgegap Build Utils 压缩包,包括:

  • 特定平台的构建脚本:

    • BuildAndUpload.ps1 用于 Windows,

    • BuildAndUpload.sh 用于 macOS 和 Linux,

  • Dockerfile - 用于构建你的 Docker 镜像的配方,

  • dockerignore - 用于移除非关键文件以加快构建的列表,

  • StartServer.sh - 在运行时管理你的 Unreal Engine 生命周期的实用脚本。

☑️ edgegap-unreal-buildutils 文件夹移动到你的项目根目录。

☑️ 编辑 你的平台的 BuildAndUpload 脚本 以配置:

  • 用于拉取预构建 Linux 服务器 Unreal Engine 镜像的 github 凭据,

  • 项目详情 - 引擎版本、服务器配置、.uproject 文件名,

  • Edgegap 注册表 用于上传已完成构建的凭据。

☑️ 执行已编辑的脚本 以开始构建和上传过程。完成此步骤将在你的 Edgegap 容器注册表仪表板页面的 仓库中添加一个新的.

☑️ 你将被自动重定向到 创建一个新的 应用与版本仪表板.

✅ 你现在可以继续下一步,或跳到 更多构建方法.

故障排除与常见问题

错误:运行 Build 函数失败:Dockerfile 不能为空

  • 某些插件源可能缺失 Dockerfile 和/或 StartServer.sh ,请从插件的 GitHub 源版本将这些文件的副本复制到本地插件中。


打开 //./pipe/dockerDesktopLinuxEngine:系统找不到指定的文件。

  • 请确认 Docker 在您的开发机器上正在运行。


无效的引用格式 EdgegapLog:警告:OnContainerizeCallback:无法生成容器,消息:失败

  • 请确认您的应用名称已设置并且不包含尾随空格。

  • 编辑完成后请按回车以确认输入值。


构建项目时未找到目标“ProjectName”的目标规则文件?

  • 在您的 XYZServerTarget.cs 文件中更改构建配置:

BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;

403 禁止,无法推送容器,消息:失败

  • 请验证您的 Docker 凭据是否正确设置。

  • 如果使用 Edgegap 容器注册表,请确保用户名中不包含 app-version-pull ,该配置仅允许拉取镜像。您的配置应更像是您的账户邮箱。

  • 请确认您的账户的 容器镜像仓库中有足够的可用空间。我们建议尝试 更多构建方法,并使用 我们的 API 删除较旧的镜像。镜像在删除之前会存储在您的本地机器上以备份。

⚡ 使用插件构建

我们的传统插件包含高级实用工具,并且需要从源码构建 Unreal Engine。

准备工作

在开始之前,请确保 创建一个 Edgegap 免费帐户 (无需信用卡)。

在你的开发机器上配置一些必需项:

安装 Docker Desktop(或 Docker CLI)
在 GitHub 上获取对 Unreal Engine 资源的访问权限
配置你的开发环境
安装官方 Edgegap Unreal Engine 插件

选择以下官方插件之一:

1. 配置项目

无论您使用的是 Windows、Mac 还是 Linux 机器,您都将 需要为 Linux 运行时构建您的服务器,因为如今大多数云提供商(包括 Edgegap)都运行在 Linux 上。别担心,不需要 Linux 知识。

☑️ 从源码构建你的 Unreal Engine 版本 在你的开发机器上,

  • 安装 特定的发布分支(例如 5.5) 以在稳定的基础上构建,

  • 使用固态硬盘 (SSD) 以加快构建速度(从大约 12+ 小时到大约 2+ 小时),

  • 这只在第一次以及每次升级 Unreal Engine 版本时需要。

☑️ 安装 Unreal 交叉编译工具链 以为 Linux 构建游戏服务器。

☑️ 重启你的开发机器,否则稍后你会遇到错误!

☑️ 禁用 Unreal Engine 版本兼容性检查 用于专用服务器和 设置 IpNetDriver 作为默认驱动或回退驱动 用于复制网络:

☑️ 重启 Unreal Engine 以重新加载最新更改。

☑️ 创建一个专用服务器目标脚本 通过复制你的 <PROJECT>Editor.Target.cs 文件到项目根文件夹并将副本重命名为 <PROJECT>Server.Target.cs.

☑️ 在你的服务器目标脚本中替换所有对 单词 Editor 使用 服务器 的引用。

☑️ 启用标准输出服务器日志 通过在你的服务器目标脚本中添加覆盖:

✅ 现在您可以继续下一步。

可选:Steam 集成

集成 Steam,使用 IpNetDriver 作为您的默认网络驱动并确认 适用于 Linux 的 64 位 steamclient.so 已复制到镜像中的路径 /home/ubuntu/.steam/sdk64/ .

下载 steamclient.so

Dockerfile
...
RUN mkdir -p /home/ubuntu/.steam/sdk64
COPY ./steamclient.so /home/ubuntu/.steam/sdk64/steamclient.so
RUN chmod 755 /home/ubuntu/.steam/sdk64/steamclient.so
...

请确保 禁用 Steam 网络功能,该功能会通过 Steam 中继发送数据包,可能导致连接问题或延迟骤增。这并不妨碍您使用其他 Steamworks 功能或在 Steam 商店发布游戏。

Config/DefaultEngine.ini
[OnlineSubsystemSteam]
bUseSteamNetworking=false

2. 构建并发布

在一支开发团队中工作意味着共享代码。当事情出错时,你最不想听到的是“在我机器上可以运行”。游戏服务器必须能够在任何机器上可靠运行,因为成功的游戏服务器将运行在全球成千上万台服务器上。

为帮助使你的服务器可靠,我们使用 Docker——虚拟化软件,用于确保从操作系统级别到所有服务器代码依赖项在任何情况下、任何位置启动服务器时都完全一致。

我们建议观看 “永远不要本地安装”(视频). 使用 Docker 时你不需要使用 Dockerhub。Docker ≠ Dockerhub。把 Docker 想象成一个编程引擎,而 Dockerhub 则像它的应用商店。

☑️ 确认已安装并正在运行 Docker。

☑️ 重建我们的插件 以适配你从源码构建的自定义 Unreal Engine 版本。

☑️ 复制编译好的插件 到你的 Plugins 文件夹 在你的 Unreal 项目根目录中 (不是引擎目录)。

☑️ 从 Visual Studio 启动你的新 Unreal Engine打开工具栏项 编辑 / 插件.

☑️ 已安装 / 其他 部分启用我们的插件.

☑️ 配置我们的插件 通过打开工具栏项 编辑 / 项目设置 / Edgegap:

  • API 令牌 用于将你的服务器上传到 Edgegap,可通过点击 获取令牌 来获取。

  • 应用名称 在 Edgegap 上可以与项目名称相同或自定义,确保只使用小写字母、数字、连字符 - 和下划线 _.

  • 图像路径 可为你的 Edgegap 游戏服务器可选提供自定义图标,暂时可跳过。

  • 版本名称 对于跟踪客户端/服务器兼容性以及在出现问题时回滚非常有用。

    • 时间戳是应用版本名称的一个很好的选项,例如: 2024.01.30-16.50.20-UTC .

    • 多个应用版本可以指向相同的镜像标签,例如 v1.1.0dev .

    • 稍后了解更多关于 应用与版本 的信息。

☑️ 点击 创建应用。 完成此步骤将导致一个 新的应用出现在Edgegap 仪表板.

☑️ 目前跳过自定义容器注册表设置,你可以在以后使用第三方注册表(如果愿意)。

☑️ 一旦你对配置满意,点击 构建并推送,等待过程完成并确认你的 Unreal 控制台中没有新的错误。完成此步骤将导致一个 新的文件夹出现在你的项目根目录中 - Saved/LinuxServer。此外, 现在在你的 Edgegap 容器注册表仪表板页面的仓库下出现一个新的镜像, 应用与版本 并且在你的 仪表板应用下出现一个.

☑️ 在你新的应用版本中,设置环境变量 TARGET_FILE_NAME 以匹配你在步骤中来自 DefaultServerTarget 的值, 更多构建方法.

✅ 你现在可以继续下一步。

故障排除与常见问题

错误:运行 Build 函数失败:Dockerfile 不能为空

  • 某些插件源可能缺失 Dockerfile 和/或 StartServer.sh ,请从插件的 GitHub 源版本将这些文件的副本复制到本地插件中。


打开 //./pipe/dockerDesktopLinuxEngine:系统找不到指定的文件。

  • 请确认 Docker 在您的开发机器上正在运行。


无效的引用格式 EdgegapLog:警告:OnContainerizeCallback:无法生成容器,消息:失败

  • 请确认您的应用名称已设置并且不包含尾随空格。

  • 编辑完成后请按回车以确认输入值。


构建项目时未找到目标“ProjectName”的目标规则文件?

  • 在您的 XYZServerTarget.cs 文件中更改构建配置:

BuildConfig = EProjectPackagingBuildConfigurations::PPBC_Shipping;

403 禁止,无法推送容器,消息:失败

  • 请验证您的 Docker 凭据是否正确设置。

  • 如果使用 Edgegap 容器注册表,请确保用户名中不包含 app-version-pull ,该配置仅允许拉取镜像。您的配置应更像是您的账户邮箱。

  • 请确认您的账户的 容器镜像仓库中有足够的可用空间。我们建议尝试 更多构建方法,并使用 我们的 API 删除较旧的镜像。镜像在删除之前会存储在您的本地机器上以备份。

👉 后续步骤

继续到 虚幻引擎 使用我们的 仪表板部署 功能,了解更多关于停止部署、注入变量与参数化以及服务器可发现性的信息。

最后更新于

这有帮助吗?