如何使用 Edgegap 的分支版本向 Unity NGO Boss Room 示例添加专用服务器

本教程将介绍如何使用 Edgegap 的派生版本 (fork) 将专用服务器添加到 Unity 的 NGO Boss Room 示例中,以便你可以在全球范围内,根据需求在靠近玩家的地区启动服务器。原版 Unity 示例仅通过大厅进行点对点运行;而此派生版已准备好作为专用服务器运行,并已集成了 Edgegap 的 Unity 插件。

我们还建议你参考我们的文档

第 1 部分 - 设置与安装

在 Unity 中打开任何内容之前,我们需要克隆项目。这需要 GitGit LFS。Git LFS 用于拉取示例的大型美术资源,如果没有它进行克隆,您将得到一个空项目。在 macOS 上,我们通过 Homebrew 安装这两者。

安装适用于您操作系统的先决条件:

macOS

brew install git-lfs
git lfs install
brew install git-lfs
git lfs install
brew install git-lfs
git lfs install

Linux (基于 Debian/Ubuntu)

sudo apt update
sudo apt install git git-lfs -y
git lfs install
sudo apt update
sudo apt install git git-lfs -y
git lfs install
sudo apt update
sudo apt install git git-lfs -y
git lfs install

Windows (PowerShell)

winget install --id Git.Git -e
winget install --id GitHub.GitLFS -e
git lfs install
winget install --id Git.Git -e
winget install --id GitHub.GitLFS -e
git lfs install
winget install --id Git.Git -e
winget install --id GitHub.GitLFS -e
git lfs install

确认已安装这些工具:

git --version
git lfs version
git --version
git lfs version
git --version
git lfs version

现在克隆项目。我们将其保存在一个简短、整洁的文件夹中。git clone 命令在每个操作系统上都相同;只有文件夹语法不同。Git 会根据存储库命名克隆的文件夹,因此我们随后将其重命名为 bossroom

macOS / Linux

mkdir -p ~/unity-ngo
cd ~/unity-ngo
git clone https://github.com/edgegap/netcode-sample-unity-ngo-bossroom.git
mv netcode-sample-unity-ngo-bossroom bossroom
mkdir -p ~/unity-ngo
cd ~/unity-ngo
git clone https://github.com/edgegap/netcode-sample-unity-ngo-bossroom.git
mv netcode-sample-unity-ngo-bossroom bossroom
mkdir -p ~/unity-ngo
cd ~/unity-ngo
git clone https://github.com/edgegap/netcode-sample-unity-ngo-bossroom.git
mv netcode-sample-unity-ngo-bossroom bossroom

Windows (PowerShell)

mkdir unity-ngo
cd unity-ngo
git clone https://github.com/edgegap/netcode-sample-unity-ngo-bossroom.git
Rename-Item netcode-sample-unity-ngo-bossroom bossroom
mkdir unity-ngo
cd unity-ngo
git clone https://github.com/edgegap/netcode-sample-unity-ngo-bossroom.git
Rename-Item netcode-sample-unity-ngo-bossroom bossroom
mkdir unity-ngo
cd unity-ngo
git clone https://github.com/edgegap/netcode-sample-unity-ngo-bossroom.git
Rename-Item netcode-sample-unity-ngo-bossroom bossroom

要确认资源是否正确拉取,请检查 Assets 文件夹的大小。它应该显示为几百兆字节。如果显示为零,说明 Git LFS 未拉取真实文件,因此在继续之前请重新查看上述安装步骤。

克隆项目后,使用构建该分支时所用的确切编辑器版本在 Unity 中打开它:

  1. 打开 Unity Hub,选择“Add”(添加),然后选择“Add project from disk”(从磁盘添加项目)。

  2. 找到并选择您刚刚克隆的“bossroom”文件夹。

Unity Hub 会提示该项目需要特定的编辑器版本。在撰写本文时,此分支固定为 Unity 6000.0.54f1。请安装该确切版本,而不是最新的 LTS 版本,因为较新的版本可能会破坏示例的部分内容。安装编辑器时,请包含 Linux 服务器依赖项:“Linux Build Support”(包括 Mono 和 IL2CPP)和“Linux Dedicated Server Build Support”。

打开项目。首次打开时,Unity 可能会进入安全模式(Safe Mode)。这是正常现象,不需要修复:全新的克隆缺少示例的匹配客户端所依赖的 Unity Gaming Services 包,我们现在就将其添加进去。

  1. 从顶部导航栏中选择“Window”(窗口),然后选择“Package Manager”(包管理器)。

  2. 将包源设置为“Unity Registry”(Unity 注册表)。

  3. 搜索“Multiplayer Services”并选择“Install”(安装)。

此包解除了缺失的引用,并使项目退出了安全模式。在继续之前,请确保控制台(Console)显示零编译错误;干净的编译是后续一切步骤的门槛。

您的示例现已安装,并可在固定的 Unity 版本上打开。

第 2 部分 - Edgegap:游戏服务器托管与编排

要向您的项目添加专用游戏服务器,请打开 Edgegap 用于游戏服务器托管的 Unity 插件。此分支中已集成该插件。如果您的项目中没有,请使用我们文档中的链接,通过 Unity 的 Package Manager(包管理器)进行添加。

第一步是添加令牌:

  1. 选择 “Get Token(获取令牌)”。系统将打开一个浏览器窗口。

  2. 使用您首选的单点登录 (SSO) 方式登录该平台。您可能需要创建一个组织;完成后,您的令牌会自动显示。复制它。

  3. 返回插件,粘贴令牌并选择 “Validate Token(验证令牌)”。

现在插件的其余选项将打开。

首先,确认您已安装 Linux Server 依赖项,我们在第 1 部分中已将其与编辑器一起安装。

接下来,将 Linux 设置为您的内置目标:

  1. 选择 “Edit Settings(编辑设置)” 以打开 Unity 的 Build Settings(构建设置)。

  2. 将平台切换到 “Linux Server”。

  3. 确认您的游戏场景已包含在内且顺序正确。在此处,列表以 “Startup” 开始,接着是 “MainMenu” 场景,然后是游戏场景。

返回插件,使用 “Build Server(构建服务器)” 按钮构建您的服务器。几秒钟后,成功编译构建。

在 “Containerize your Server(将您的服务器容器化)” 下,通过选择 “Validate(验证)” 确保 Docker 正在运行。如果您没有安装 Docker,请先安装 Docker Desktop;它是将游戏服务器和其他应用程序容器化的标准工具。在本教程中,我们略过可选参数;关于其使用的详细信息请参见我们的文档。选择 “Containerize with Docker(通过 Docker 容器化)”。不久之后,容器化成功。

您现在可以在本地测试您的游戏服务器,但在此处我们直接进行在线测试。将容器化的服务器上传到 Edgegap平台:

  1. 确保选择正确的应用程序,然后选择 “Upload Image and Create App Version(上传镜像并创建应用版本)”。几秒钟后,浏览器会打开该平台。

  2. “Create Version(创建版本)” 页面已预先填好。您可以配置可选设置,包括 vCPU 资源使用情况、内存等,但我们使用默认设置创建一个新版本。向下滚动并选择 “Submit(提交)”。

  3. 将打开 “Create Port(创建端口)” 弹出窗口。确认您的 netcode 的默认端口和协议类型。请注意,在此示例中,该端口为 UDP 端口 7777。这可能与其他 netcode 不同。因此,请务必查看您的 netcode 文档,以获取适用于您具体用例的准确端口。选择 “Submit(提交)”。

最后,部署您刚刚容器化的服务器:

  1. 返回 Unity,从列表中选择正确的应用程序及其版本。

  2. 选择 “Deploy to Cloud(部署到云)”。这将自动把游戏服务器部署到 Edgegap 的平台。

加载几秒钟后,您的游戏服务器就准备就绪并上线了。

第 3 部分 - 测试

让我们来测试部署。首先选择该部署以打开其详情页面。此页面包含了关于您正在运行的服务器的一系列信息。

要进行连接,请向下滚动并复制 主机 IP (Host IP),并注意 外部端口 (external port),例如在我们这种情况下是 32699

然后,启动您的游戏场景并选择“通过 IP 加入 (Join with IP)”。粘贴您的 IP 地址并输入您的外部端口。忽略任何开发警告,选择您的角色,然后启动游戏。它会自动连接到托管在 Edgegap 网络上的游戏服务器。

恭喜您,您现在正在在线游玩由 Edgegap 修改以在专用服务器上运行的 Unity Boss Room 示例。

第 4 部分 - 后续步骤

至此,将专属服务器添加到 Unity 的 Boss Room 示例中就全部完成了。这为您提供了一个运行在 Edgegap 上、并可全球按需部署的、开箱即用的 Netcode for GameObjects 项目。

虽然单人游玩没问题,但您可能更想在网上与两名玩家一起游玩和测试。“通过 IP 加入”是一种有效的方法,但我们建议设置一个匹配系统。我们有一个关于使用同一个 Boss Room 示例从 Unity 的 UGS Matchmaker 部署专属服务器的教程,以及一个关于 Edgegap 自身免费、完全托管的匹配系统的教程。

如果您有任何问题,请加入我们的 Discord

轻松在线游戏,尽在数分钟内

立即开始集成!

轻松在线获取游戏
及分钟内完成