如何在生存多人游戏中添加匹配机制

如何在生存多人游戏中添加匹配机制
如何在生存多人游戏中添加匹配机制
如何在生存多人游戏中添加匹配机制

关键洞察

关键洞察

关键洞察

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

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

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

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

如何将对局配对整合到您的生存多人游戏中

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

以下示例将帮助您测试核心对局配对玩家流程,即:

  • 在共享的主机群集上创建对局配对实例,

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

  • 最后,使用我们的玩家票和我们的API测试玩家流程和管理。

将我们的对局配对器应用到您的游戏中有五个步骤

  1. 第一步是创建一个账户并使用我们的生存游戏示例。好吧,您(技术上)已经完成了一半!您只需要将对局配对器整合到您的游戏中(见第5步)。

  2. 现在,您不应该盲目跟随互联网上找到的 JSON 示例,因此强烈建议根据以上规则调整到您的回合制游戏。步骤 2(“探索配置”)是我们的“如何阅读”,深入每个 对局配对规则功能的作用(“探索配置”)。

  3. 第 3 步(“检查实例详细信息”)涵盖了您的个人、特定对局配对器,以确保它已部署并适用于您的游戏设计。

  4. 如名称所示,第4步(“4. 测试票据API”)是关于测试您的对局配对请求是否从玩家那里收到,由所谓的票据组成。

  5. 第 5 步(“在您的游戏中集成对局配对”)强调了如何在您的引擎项目中整合生存。

如果您遇到故障排除方面的挑战,我们的深入学习中心有其他故障排除提示。

1. 设置免费套餐

注册免费的 Edgegap 帐户,并导航到 对局配对仪表板页面

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

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

  • 然后上传以下简单示例作为您生存游戏的 JSON 配置:

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "custom-lobby-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": 4
            }
          },
          "lobby_id": {
            "type": "string_equality"
          }
        },
        "expansions": {}
      }
    }
  }
}

(温馨提示,请确保将应用程序 名称 和 版本 更改为匹配您的 应用程序和版本!)

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

您现在可以进入下一步。

2. 探索配置

独特的多人生存游戏规则

定制大堂(私人大堂、沙盒级别)是沙发多人游戏的非常流行的选项,但在竞争或合作游戏中,在它们进入主要游戏模式之前也会测试新功能。这些游戏通常要求限制最少,但旨在确保玩家可以作为组加入

回填票可能使用自定义大堂配置文件以可靠地支持邀请朋友,只要回填票有效。

  • 提示:将custom-lobby-example配置文件添加到您的配置中以及您的其他配置文件中以支持自定义大堂。

语义版本控制

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

  • major 版本包含重大更改,需要重新进行集成评估,

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

  • patch 版本包括bug修复和小改进。

一些 部署可能导致错误。我们尝试通过不需要客户确认的情况下,自动重试部署 max_deployment_retry_count 次来解决此问题。

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

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

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

  • 您选择的名称,例如 - match size

  • 规则类型,也称为运算符,例如 - player_count

  • 最后是运算符属性,例如 team_count 或 team_size

玩家数量规则

这是一个特殊规则,定义了需要多少玩家才能启动分配:

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

  • team_size 指每个队伍的玩家数量

我们的简单示例演示了一场包含 2 名玩家的合作游戏。

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

延迟规则

使用此规则为所有玩家提供最低可能的延迟。一旦客户端测量并提交所有可用信标的往返时间(ping),Gen2将只考虑在特定 差异 内的ping值进行匹配,并根据Ping Beacons进行测量。这提供了一种“软”解决方案来拆分您的玩家群体,特别是为较少人口的地区改善匹配速度。使用 max_latency来防止与距离较远的玩家匹配。

您现在可以进入下一步。

我们的示例 beacons 规则上有 "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 是我们提供的探索 API 架构的便捷 openAPI 规范 GUI。

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

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

您现在可以进入下一步。

4. 测试票据API

首先,打开您的 Swagger URL 以检查您的 openAPI 架构的 swagger GUI

点击“对局配对器”标题下的 /...swagger.json URL 以打开原始 JSON 架构:

将此页面保存为硬盘上的文件(CTRL/CMD+S)。

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

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

  • 保持 Postman 收集 选中,

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

确认导入,这将在左侧的集合列表中显示一个新的集合,标题为对局配对器。

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

  • 认证类型 - API 密钥,

  • 键 - “授权

  • 值 - 在此插入您的 身份验证令牌 值,

  • 添加到 - 头部

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

在您的对局配对器集合中,选择 票据 和 创建对局配对票据,打开一个新的标签。

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

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

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

  • 属性 包括您对局配对器规则的值,在此情况下为 latencies 规则,

    • 规则 player_count 是唯一一个在玩家票据中不需要任何属性的规则。

注意:请确保参考样本的Swagger 的导入配置

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

  • id 是您唯一的对局配对票据 ID,保留以便稍后检查您的票据,

  • profile 确认选择的 对局配对配置文件

  • group_id 是为每个票据发布的唯一组 ID,单个玩家表示为一个玩家组,

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

  • assignment 设置为 null 以指示票据尚未匹配或分配到服务器,

  • created_at 提供有关何时创建玩家票据的信息以供游戏界面使用,

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

通过再次点击 发送 创建第二个票据,这样我们的两个玩家就匹配了,一个服务器启动了。

在您的对局配对器集中,选择 {ticketId} 和 读取对局配对票据

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

查看您的玩家票据的更新后的分配:

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

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

  • 状态更改为 主机已分配 ,“分配”中包含已分配服务器的详细信息。

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

  • 请注意每个部署都标记有所有票据 ID 和配置文件以增加可追溯性。

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

一旦您确认能够连接到您的部署而没有问题并完成测试,停止您的部署以释放账户中的容量,为下一版本做好准备。

您现在可以进入下一步。

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

Edgegap 的对局配对器集成:

  • 与 游戏客户端一起,管理 玩家票

  • 与 游戏服务器一起:

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

    • 可选地支持 回填 以在启动后添加或替换玩家。

对于游戏客户端,我们建议在玩家 UI 中使用游戏内用户界面提供对局配对过程的票据状态更新,以获得最佳的玩家体验。参见:

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

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

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

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

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

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

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

一旦玩家连接,游戏服务器和游戏客户端 开始加载场景以执行同步步骤(例如选择和加载地图/场景/级别)。我们建议一个功能齐全的3D场景、大堂式社交 UI 或带进度条的加载屏幕,以指示初始化正在进行中。

一旦 游戏客户端 完全加载,玩家即加载/传输到主游戏场景。

可选的,游戏服务器 可能会创建和管理 回填 和玩家容量(添加或替换离开的玩家)。

确保您的 部署将被正确停止 使用 已注入的 DELETE_URL,如果:

  • 没有玩家加入比赛,

  • 所有玩家都已离开比赛,

  • 比赛正确结束。

恭喜,您已经完成了 Edgegap 对局配对器集成!如果您想了解更多,请在我们的 学习中心中阅读全文。

书写者

Edgegap团队

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes