如何向超休闲多人游戏添加匹配机制

关键洞察

关键洞察

关键洞察

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

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

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

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

如何将对局配对集成到您的超休闲多人游戏中

-> 这篇文章基于 對局配對文档。如果遇到问题或差异,请确保参考原始指南,因为它们更经常保持更新。

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

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

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

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

将我们的对局配对器实施到您的游戏有五个步骤

  1. 第一步是创建一个帐户并使用我们的超休闲游戏示例。Voilà,您已经(技术上)完成了一半!您只需要在游戏中集成对局配对器(参见步骤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": {
    "social-example": {
      "application": {
        "name": "my-game-server==>CHANGE-THIS",
        "version": "2024.01.30-16.23.00-UTC==>CHANGE-THIS"
      },
      "rules": {
        "initial": {
          "match_size": {
            "attributes": {
              "team_count": 1,
              "team_size": 30
            },
            "type": "player_count"
          },
          "beacons": {
            "attributes": {
              "difference": 80,
              "max_latency": 80
            },
            "type": "latencies"
          },
          "selected_region": {
            "type": "string_equality",
            "attributes": {
              "overlap": 1
            }
          },
          "selected_mode": {
            "type": "intersection",
            "attributes": {
              "overlap": 1
            }
          }
        },
        "expansions": {
          "10": {
            "beacons": {
              "difference": 100,
              "max_latency": 100
            },
            "match_size": {
              "team_count": 1,
              "team_size": 20
            }
          },
          "15": {
            "beacons": {
              "difference": 120,
              "max_latency": 120
            },
            "match_size": {
              "team_count": 1,
              "team_size": 10
            }
          },
          "25": {
            "match_size": {
              "team_count": 1,
              "team_size": 4
            }
          },
          "30": {
            "match_size": {
              "team_count": 1,
              "team_size": 1
            }
          }
        }
      }
    }
  }
}

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

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

您现在可以继续进入下一步骤。

2. 探索配置

独特的多人超休闲游戏规则

队伍数量为1,每队50人,要求每场游戏有50名玩家(所有玩家在同一队)。

专为社交游戏,您可以为游戏模式特定规则和设置定义對局配對档案

  • 允许玩家提供他们的游戏模式偏好并选择适合大家的模式,

  • 以组加入以便为预设的队伍大厅或不超过队伍大小填补队伍,

  • 添加🗺️ 地区选择界面以限制对手到指定地区,

  • 允许较高的延迟以优先快速配对更多玩家,

  • 在允许更多玩家的情况下使用不同的🏷️ 应用版本来分配更多的CPU或内存。

拓展限制以确保快速配对:

  • 快速放宽延迟限制以找到更多玩家,

  • 慢慢减少队伍大小以减少所需玩家并尽快开始游戏,

    • 可选地,您可以让服务器使用AI玩家填充空位,

  • 如果未找到队友,则单独启动游戏并使用后填充以稍后添加玩家,

    • 这将允许玩家加入现有比赛而非新的比赛以最大化社交互动。

语义版本控制

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

  • 主版本 包括重大更改并需要进行集成审核,

  • 次版本 包含向后兼容的重要改进,

  • 补丁版本 包含错误修复和小的改进。

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

为确保未预料的客户端崩溃或被遗弃的票据不会继续占用您的对局配对器资源,票据将在 ticket_expiration_period 后被取消,其状态将更改为 CANCELLED ,并将在 ticket_removal_period后永久删除。

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

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

  • 名称由您选择,例如:比赛大小

  • 规则类型,也称为操作员,例如:玩家数

  • 最后是操作员属性,例如队伍数 或 队伍大小

玩家数规则

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

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

  • 队伍大小 指的是每队玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供最低可能的延迟。当客户端测量并提交针对所有可用信标的往返时间(ping)时,Gen2 只会考虑一个特定 差异 范围内的匹配,使用 Ping 信标。这提供了一种“软性”解决方案,用于分割您的玩家基础,允许与邻近区域进行匹配,特别是改善较少人口密集地区的配对速度。使用 最大延迟 以防止与离得太远的玩家匹配。

您现在可以继续进入下一步骤。

我们的示例 信标 规则如下,初始设置为 "差异": 50, "最大延迟": 200

  • 爱丽丝和鲍勃将匹配,因为北京被排除(>200)且其他的都在| A-B | < 50以内:

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

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

  • 查利和戴夫将不匹配,因为对于达拉斯信标 | C-D | > 50:

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

    • 鲍勃 {蒙特利尔: 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以检查您的openAPI架构中的Swagger GUI

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

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

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

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

  • 保持 Postman 集合 选中,

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

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

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

  • 认证类型 - API 密钥,

  • 密钥 - “认证

  • 值 - 在此处插入您的 认证令牌 值,

  • 添加至 - 头部

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

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

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

注意 玩家ip 设置为空 null- 这将导致使用自动添加到您的请求的IP地址(请参阅服务器到服务器集成以了解替代方案),

  • 档案 指的是您的 對局配對档案,

  • 属性 包含对您对局配对器规则的值,在这种情况下是 延迟 规则,

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

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

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

  • id 是您的唯一对局配对票据ID,保存此以便后来查看您的票据,

  • 档案 确认选择的 對局配對档案,

  • 组_id 是每个票据发出的唯一组ID,将单个玩家表示为1人的组,

  • 玩家ip 是不论使用何种识别方法的玩家的解析公共IP地址,

  • 分配 设置为 null 表示票据尚未匹配或分配给服务器,

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

  • 状态 指示票据的当前状态,所有票据都以 搜索 开始(请参阅對局配對过程了解详细信息)。

通过再次点击 发送 来创建第二个票据,因此我们的两个玩家匹配并启动服务器。

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

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

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

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

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

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

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

  • 注意每个部署都标有所有票据ID和档案,以增加可追溯性。

尝试从游戏客户端连接到指定的服务器。

一旦您确认您能够无问题连接到您的部署并完成测试,停止您的部署以为下一次构建释放容量。

您现在可以继续进入下一步骤。

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

Edgegap的对局配对集成:

  • 与 游戏客户端,管理 玩家券,

  • 与 游戏服务器, 以:

    • 处理由其券传递的玩家偏好,

    • 可选地支持 后填充 以在开始后添加或更换玩家。

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

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

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

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

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

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

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

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

一旦玩家连接,游戏服务器和游戏客户端 开始加载场景以执行同步步骤(例如选择和加载地图/场景/关卡)。我们建议使用成熟的3D场景、类似大厅的社交界面或包含进度条的加载屏幕,以指示初始化正在进行。

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

可选地,游戏服务器 可以创建和管理 后填充 和玩家容量(增加或更换离开的玩家)。

确保您的 部署将被正确停止 使用 注入的 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