

如何将专用服务器添加到虚幻多人游戏中
对于希望寻求专用(“权威”)服务器解决方案的开发者,EOS 推荐集成第三方服务,如 Edgegap。
-> 本文基于入门文档。如果您遇到问题或不一致,请务必参考原始指南,因为它们更频繁地保持更新。
0. 准备工作
在开始之前,请确保创建一个免费的 Edgegap 账户(无需信用卡)。
在您的开发机器上配置一些基本事项:
在 Edgegap 上部署您的第一个专用服务器
在本指南结束时,您将免费在 Edgegap 上部署一个专用服务器。
1. 配置您的项目
无论您是使用 Windows、Mac 还是 Linux 机器,您都需要为 Linux 运行时构建您的服务器,因为如今大多数云提供商(包括 Edgegap)都运行在 Linux 上。别担心,不需要 Linux 知识。
☑️ 首先验证您的 Unreal Engine 版本 - 预填项目文件中的值。
☑️ 输入 GitHub 用户名和 PAT 从✔️ 准备工作,以从 GitHub 下载依赖项。
☑️ 禁用 Unreal Engine 版本兼容性检查适用于专用服务器,并设置IpNetDriver作为默认驱动程序或回退驱动程序用于复制网络:
[ConsoleVariables]
net.IgnoreNetworkChecksumMismatch=1
net.CurrentHandshakeVersion=2
net.MinHandshakeVersion=2
net.VerifyNetSessionID=0
net.VerifyNetClientID=0
[/Script/Engine.GameEngine]
!NetDriverDefinitions=ClearArray
+NetDriverDefinitions=(DefName="GameNetDriver",DriverClassName="OnlineSubsystemUtils.IpNetDriver",DriverClassNameFallback="OnlineSubsystemUtils.IpNetDriver")
[/Script/OnlineSubsystemUtils.IpNetDriver]
MaxClientRate=1000000000
MaxInternetClientRate=1000000000
InitialConnectTimeout=120.0
MaxNetTickRate=60
NetServerMaxTickRate=60
[/Script/BuildSettings.BuildSettings]
DefaultServerTarget=LyraServer
☑️ 重启 Unreal Engine以重新加载最新更改。
☑️ 创建一个专用服务器目标脚本,通过复制您的<PROJECT>Editor.Target.cs文件到项目根目录,并将副本重命名为<PROJECT>Server.Target.cs。
☑️ 在服务器目标脚本中将所有引用单词Editor替换为Server。
☑️ 通过在服务器目标脚本中添加覆盖项,启用标准输出服务器日志:
bUseLoggingInShipping = true;
bOverrideBuildEnvironment = true;
✅ 现在您可以继续下一步。
构建游戏服务器
现在我们将构建和烹制您的项目,并将其打包为一个易于重用的 docker 镜像。
在开发团队中合作意味着共享您的代码。当事情出错时,您最不想听到的是“在我这机器上可以运行”。游戏服务器必须在任何机器上可靠运行,因为成功的游戏服务器将运行在全球数千台服务器机器上。
为了帮助使您的服务器可靠,我们使用 Docker - 虚拟化软件,确保所有的服务器代码依赖项直到操作系统级别都始终完全相同,无论服务器如何或何地启动。
☑️ 您可以配置以下选项(或保持默认值):
镜像名称是您选择的唯一标识符,在发货前标记您的服务器构建。
通常,这将包括您游戏的名称 - 例如“my-game-server”。
镜像标签是指向图像特定版本的标识符。
术语“构建工件”有时用于指代图像的特定版本。
时间戳是标记的一个很好的选项,例如2024.01.30-16.23.00-UTC(默认)。
☑️ 构建项目,当您满意配置时。完成此步骤后,将在本地 Docker 客户端中添加一个新的镜像,具有您的 Linux 游戏服务器可执行文件。
✅ 您现在可以进行下一步。
本地测试服务器
让我们尝试在本地(在您的机器上)部署并连接游戏客户端,以确保服务器镜像在上传和部署前正常运作(这可能需要一些时间)。
☑️ 选择您希望本地运行的镜像标签(远程镜像将被下载)。可以选择地提供更多docker run 参数来定制您的本地测试:
-p 7777:7777/udp- 这是您的本地容器端口映射,-e ARBITRIUM_PORT_GAMEPORT_INTERNAL=7777是模拟真实的 Edgegap 部署的环境变量,告诉您的游戏服务器要监听的内部端口以进行玩家连接。
☑️ 一旦您对配置满意,请点击启动本地服务器。完成此步骤将会在您的开发机器上启动一个新的容器。
☑️ 现在是时候将您的 Unreal Engine 编辑器(PIE)游戏客户端连接到本地服务器容器上了。打开 Unreal PIE 控制台,使用~(tilde)并连接open <ip>:<port>:
ip=localhost或127.0.0.1(大多数情况下相等),port= Docker GUI 中容器的随机外部端口值。

☑️ 一旦您确认可以连接到本地服务器容器并无任何问题地进行游戏,您可以删除容器 🗑️ 以便为其他程序释放机器资源。
✅ 您现在可以进行下一步。
4. 发布到 Edgegap
是时候将您的服务器上线了!现在您的镜像可以成功承载玩家,我们可以将其上传至 Edgegap,并在全球范围内启动运行。在本指南中,我们将使用Edgegap 的容器注册表(用于存储图像)。
☑️ 选择一个应用程序名称来标记并将类似的图像分组在 Edgegap 上。
☑️ 选择您希望发布的镜像标签并上传图像。完成此步骤将会将您的服务器图像上传到 Edgegap 注册表,并在您的网页浏览器中创建一个新的应用程序版本。确保创建您的端口映射时使用默认值。
✅ 您现在可以进行下一步。
5. 部署到云端
这是本指南中的最后一步,完成后,您将在 Edgegap 云端拥有一个已部署的服务器,来自世界各地的玩家都可以连接。
☑️ 选择前一步中的一个应用程序和版本进行部署。
☑️ 当您准备好时,点击部署到云端,等待达到3. 部署就绪。完成此步骤将会在您的 Edgegap 账户上启动一个新的部署。
☑️ 验证您的控制台输出中没有新错误。还要确保您的容器日志没有显示任何错误,您的容器指标也没有指示100%的资源利用率(vCPU 或内存),否则新的玩家连接可能会被拒绝,或者您的服务器陷入重启循环。请参阅下面的故障排除步骤以解决任何问题。
☑️ 现在我们将进行最终测试,将您的 Unreal Engine 编辑器连接到您的云部署。获取您的部署的主机以替换服务器 IP 和部署的外部端口,在游戏客户端中打开 Unreal 控制台(tilde ~)并输入open {host}:{port}。

☑️ 一旦您确认能无障碍地连接到您的部署并完成测试,请<强>停止您的部署<☑️ 一旦您确认能无障碍地连接到您的部署并完成测试,请>以便为下一个构建释放账户中的容量。如果您遇到问题,请检查部署的控制台日志。如果您无法找出问题,我们在 社区 Discord 上,随时乐于助人。
🙌 恭喜您在 Edgegap 的首次部署!如果您想了解更多,请继续阅读。确保检查我们的匹配系统来在部署游戏服务器前为玩家分组。
书写者
Edgegap团队
与来源和/或内容协作
史诗在线服务








