如何在虚幻引擎多人游戏中添加匹配机制

如何在多人Unreal游戏中添加匹配功能
如何在多人Unreal游戏中添加匹配功能
如何在多人Unreal游戏中添加匹配功能

关键洞察

关键洞察

关键洞察

Edgegap 的 匹配系统 是一个完全托管、无限自定义的匹配系统,能够优化全球玩家的分组——在开发你的休闲多人游戏期间使用是免费的。

这也是我们所知道的 唯一 拥有 基于延迟的匹配规则 的匹配系统,能够为你的游戏提供理想的在线多人体验,无论使用何种引擎(Unity、Unreal 等)或游戏服务(EOS、UGS、PlayFab、Heroic Labs Nakama、Braincloud 等)。

由于我们的匹配系统基于参数,因此无需编写代码。集成非常简单,如果需要,我们的 入门指南 将在每一步中指导你。

当你的游戏上线时,由于我们的匹配系统是完全托管的,你无需处理基础设施、错误、停机、可扩展性或数据库管理。我们会为你处理所有的事情。将你的 DevOps 工作负载减少到几乎为零。

如何将对局配对集成到您的Unreal Engine多人游戏中

-> 这篇文章基于對局配對文档。如果您遇到问题或不一致之处,请务必参考原始指南,因为它们更新得更频繁。

以下示例将帮助您测试Unreal Engine多人游戏的核心对局配对玩家流程,具体为:

  • 在共享托管集群上创建对局配对实例,

  • 在您的对局配对配置中定义规则和设置,

  • 最后,通过我们的玩家票证API测试玩家流程和管理。

要将我们的对局配对器实现到您的游戏中,有五个步骤

  1. 第一步是创建账户并使用我们的简单游戏示例。Voilà,您(技术上)完成了一半!您只需将对局配对器集成到您的游戏中(请参见步骤5)。

  2. 现在,您不应盲目地遵循网上找到的JSON示例,因此强烈建议将上述规则适应您的回合制游戏。步骤2(“探索配置”)是我们的“如何阅读”,讲述每个对局配对规则功能的作用(“探索配置”)。

  3. 步骤3(“检查实例详细信息”)涵盖您的个人特定对局配对器,以确保其已部署并与您游戏的设计配合。

  4. 步骤4,如其名称所示(“4. 测试票证API”),完全是关于测试您的对局配对请求是否从玩家那里接收到,由于票证的原因而称呼。

  5. 步骤5(“在您的游戏中集成对局配对”)突出显示了如何在您的引擎项目中集成对局配对器。

如果您遇到疑难问题,我们深入的学习中心还有更多疑难解决提示。

Unreal教程 - 添加Edgegap的对局配对

如果觉得困难,别担心 - 观看逐步集成视频:

1. 设置免费层

注册您的免费Edgegap账户,然后导航到 对局配对仪表板页面

从那里,首先点击 创建对局配对 然后输入:

  • 对局配对名称 – 仅供您参考,例如 quickstart-dev,

  • 然后,上传以下简单示例作为Unreal Engine游戏的JSON配置:

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "simple-example": {
      "application": {
        "name": "my-game-server",
        "version": "2024.01.30-16.23.00-UTC"
      },
      "rules": {
        "initial": {
          "match_size": {
            "type": "player_count",
            "attributes": {
              "team_count": 1,
              "team_size": 2
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 50,
              "max_latency": 200
            }
          }
        },
        "expansions": {}
      }
    }
  }
}

(友好提醒,请确保更改应用程序 名称 和 版本 以匹配您的 应用程序和版本!)

如果没有出现验证错误,点击 创建并启动 并等待进程完成。这将导致启动一个新的免费集群,其中包含您的简单示例对局配对。

您现在可以继续下一步。

2. 探索配置

语义版本控制

当我们发布对局配对的更新时,每个新版本都会使用 语义版本控制 通过解释格式 major.minor.patch来清楚地传达更改的影响:

  • major 版本包含重大更改,需要进行集成审查,

  • minor 版本包含大量向后兼容的改进,

  • patch 版本包括错误修复和较小的改进。

某些 部署可能导致错误。我们尝试通过重新尝试部署至 max_deployment_retry_count 次自动解决此问题(不需要客户端确认)。

为了确保意外的客户端崩溃或被遗弃的票证不会滞留并占用您的对局配对资源,票证将在 ticket_expiration_period 后被取消,其状态更改为 取消 并在 ticket_removal_period 后被永久删除。

我们的对局配对核心逻辑在 对局配对配置文件中配置。每个配置文件都是一个完全隔离的对局配对队列,指向 应用程序版本 与预定义的所需CPU和内存(RAM)资源。

对局配对规则中,初始规则集必须满足才能将玩家分组在一起,每个规则由三个属性定义:

  • 一个您选择的名称,例如 - 比赛规模,

  • 规则类型,也称为操作符,例如 - player_count,

  • 最后是操作符属性,例如 team_count 或 team_size

玩家数量规则

这是一个特殊规则,定义发起分配需要匹配多少玩家:

  • team_count 指的是队伍数量,1队可用于合作或自由模式,

  • team_size 指每队的 玩家数量

我们的简单示例展示了一个由2名玩家组成的合作游戏。

请注意,“玩家数量”规则在初始配置规则中是必需的,并且只能定义一次

延迟规则

使用此规则为所有玩家提供尽可能低的延迟。一旦客户对所有可用信标测量并提交其往返时间(ping),Gen2将仅考虑在特定 区别 的ping值内进行匹配,测量与 Ping信标。这为划分您的玩家基础提供了“软”解决方案,支持与邻近区域匹配,特别是改善人口较少地区的匹配速度。使用 max_latency可防止与远处玩家匹配。

您现在可以继续下一步。

我们的示例 信标 规则以上,使用 "difference": 50, "max_latency": 200 初始值:

  • Alice和Bob将匹配,因为北京被排除在外(>200)且其余在|A-B|<50内:

    • Alice {蒙特利尔: 12.3, 纽瓦克: 45.6, 达拉斯: 59.9, 北京: 264.4}; 和

    • Bob {蒙特利尔: 27.3, 纽瓦克: 32.4, 达拉斯: 23.1, 北京: 252.2}。

  • Charlie和Dave将不匹配,因为|C-D|>50对于达拉斯信标:

    • Alice {蒙特利尔: 5.7 纽瓦克: 44.2, 达拉斯: 59.5, 北京: 263.2}; 和

    • Bob {蒙特利尔: 57.8, 纽瓦克: 32.0, 达拉斯: 24.2, 北京: 272.3}。

请注意,“延迟规则”在初始配置规则中只能定义一次

3. 检查实例详细信息

在我们的仪表板中查看初始化后新对局配对器的详细信息:

状态 指示服务健康状态,可能为在线、离线或出错。

  • 标识符 帮助Edgegap工作人员快速找到您的对局配对器,如果您需要帮助解决问题。

  • 开始于 可用于追踪最近的更新时间。

  • 大小 对应于我们的一个 定价层

  • API URL 将供游戏客户端和游戏服务器与Gen2通信。

  • Swagger URL 是一个方便的openAPI规范GUI,用于浏览API模式。

  • 认证令牌 是游戏客户端和游戏服务器用于身份验证的唯一机密令牌。

要使用API测试您的新对局配对器,您将需要Swagger URL、API URL和认证令牌

您现在可以继续下一步。

4. 测试票证API

首先,打开您的Swagger URL 以在swagger GUI中检查您的openAPI模式

单击“对局配对”标题下的/...swagger.json URL以打开原始JSON模式:

将此页面另存为文件到您的驱动器(CTRL/CMD+S)。

打开您的 Postman应用程序 并登录您的免费账户。

从上一步导入您的 swagger.json 文件:

  • 保持 Postman Collection 选中,

  • 选择 查看导入设置 并将设置 参数生成 更改为 示例

确认导入,这将在左侧的集合列表中出现一个新集合,名为对局配对。

查看更多操作,打开选项卡 授权 并选择:

  • 认证类型 - API密钥,

  • 密钥 - “授权

  • 值 - 在此处插入您的 AuthToken 值,

  • 添加至 - 标头

按下(CTRL/CMD+S)或保存图标 保存更改。您的Postman选项卡中的橙点应消失。

在您的对局配对集合中,选择 票证 并 创建对局配对票证,打开一个新选项卡。

选择选项卡 正文 以预览您的 玩家票证请求

注意 player_ip 设置为 null- 这将自动使用添加到您请求的IP地址(请参见 服务器到服务器集成 了解其他选项),

  • 配置文件 指的是您的 对局配对配置文件,

  • 属性 包括对局配对规则的值,在此情况下为 延迟 规则,

    • 规则 player_count 是唯一一个无需在玩家票证中添加任何属性的规则。

注意:请务必参考示例的Swagger的导入配置。 

点击 发送 并查看您玩家票证请求的响应:

  • id 是您唯一的对局配对票证ID,请保存此信息以便稍后检查您的票证,

  • 配置文件 确认选择 对局配对配置文件,

  • group_id 是分配给每个票证的唯一组ID,代表一个组的独立玩家为1,

    • 请参见 作为组加入 以与您的朋友或大厅进行对局配对,

  • player_ip 是玩家的公共IP地址,无论使用何种识别方法,

  • assignment 设置为  表示该票证尚未匹配或分配到服务器,

  • created_at 提供有关玩家票证创建时间的信息,以供游戏UI使用,

  • status 表示票证的当前状态,所有票证开始于 搜索中 (有关详细信息,请参见 对局配对过程)。

再次点击 发送 以创建第二个票证,使我们的两名玩家匹配并启动服务器。

在您的对局配对收藏中,选择 {ticketId} 并 读取对局配对票证

输入上一步响应中的票证ID并点击 发送

查看玩家票证的更新分配:

  • 状态更改为 匹配找到 首先,同时保持 assignment 为 ,以表示玩家已匹配并正在分配服务器,

再次点击 发送 查看您的票证,并查看玩家票证的更新分配:

  • 状态更改为 主机分配 并且 assignment 包含分配的服务器的详细信息。

 在我们的仪表板中检查您的新部署

  • 请注意,出于跟踪性质的,所有票证ID和配置文件都标记在每个部署中。

尝试从您的游戏客户端连接到分配的服务器。

一旦您确认可以毫无问题地连接到您的部署并完成测试,请停止您的部署 以在您的帐户中为下一个构建释放容量。

您现在可以继续下一步。

5. 在您的游戏中集成对局配对

Edgegap 的对局配对可集成:

  • 通过游戏客户端,管理 玩家票证

  • 通过游戏服务器,以:

    • 处理通过其票证传递的玩家偏好,

    • 可选支持 补缺 以在开始后增加或替换玩家。

对于在游戏客户端中,我们建议在整个 对局配对过程中提供票证状态更新,以便玩家通过游戏内UI获得最佳玩家体验。请参见:

游戏客户端中,确保您正在处理不可重试的错误:

  • HTTP 404未找到 - 票证已被删除,

  • HTTP 500内部服务器错误 - 临时服务中断。

游戏服务器上,处理玩家偏好和初始服务器上下文。不需要API集成:

  1. 阅读 注入环境变量(Gen2) 以检索初始玩家的对局配对数据。

  2. 阅读 注入环境变量(应用程序版本) 以获取版本特定参数、设置(玩家容量)和机密。

  3. 阅读 注入环境变量(部署) 以获取部署信息,例如IP地址、位置或更多。

一旦玩家连接,游戏服务器和游戏客户端 开始一个加载场景以执行同步步骤(例如选择和加载地图/场景/级别)。我们推荐一个完善的3D场景、类似大厅的社交UI或带进度条的加载屏幕,以表示初始化正在进行中。

一旦游戏客户端 完全加载,玩家加载/前往主要游戏场景。

可选地,游戏服务器 可以创建和管理 补缺 和玩家容量(增加或替换退出的玩家)。

确保您的 部署将被正确停止 并使用 注入的删除_URL,如果:

  • 没有玩家加入比赛,

  • 所有玩家已离开比赛,

  • 比赛正确结束。

祝贺您,您已完成Edgegap对局配对集成!如果您想了解更多,请在我们的学习中心了解更多信息。

书写者

Edgegap团队

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes