如何在休闲多人游戏中添加匹配机制

关键洞察

关键洞察

关键洞察

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
            }
          }
        }
      }
    }
  }
}

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

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

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

2. 探索配置

独特的多人休闲游戏规则

团队数量为1,团队规模为50,需要50名玩家(所有玩家在同一团队)。

专为社交游戏,您可以为特定游戏模式定义對局配對配置文件的具体规则和设置:

  • 让玩家提供他们的游戏模式偏好,并选择适合每个人的模式,

  • 加入组队用于预制大厅或填补团队但不超过团队规模,

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

  • 允许较高的延迟以偏好快速匹配,有更多玩家,

  • 使用不同的🏷️应用版本为更多玩家分配更多CPU或内存。

扩大限制以确保快速匹配:

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

  • 慢慢减少团队规模以需要更少的玩家并尽早开始游戏,

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

  • 如果没有找到队友,单独启动游戏并使用补缺稍后添加玩家。

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

语义化版本控制

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

  • major 版本包含破坏性更改,需要集成审查,

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

  • patch 版本包含错误修复和小改进。

一些 部署可能导致错误。我们尝试通过重试部署最多 max_deployment_retry_count 次自动解决此问题(无需客户端确认)。

为了确保未预期的客户端崩溃或长时间未使用的票证不会持续存在并占用您的对局配对资源,票证将在 ticket_expiration_period 后被取消,其状态更改为 CANCELLED 并在 ticket_removal_period 后永久删除。

我們對局配對邏輯的核心配置在 對局配對配置文件。每个配置文件是一个完全隔离的对局配对队列,指向具有预定义CPU和内存(RAM)资源量的 应用版本

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

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

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

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

玩家数量规则

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

  • team_count 指团队数量,1个团队可用于合作或自由模式,

  • team_size 指的是 每个团队的玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供尽可能低的ping。一旦客户端测量并提交针对所有可用信标的往返时间(ping),Gen2将仅考虑在特定 difference ping值范围内的匹配,并按 ping信标测量。 这是一种将玩家基础分割为“软”解决方案,允许与邻近区域匹配,尤其是为人口稀少区域提高匹配速度。请使用 max_latency防止与远离的玩家匹配。

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

我们的示例 信标 规则在仍然使用 "difference": 50, "max_latency": 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网址 将由游戏客户端和游戏服务器用于与Gen2通信。

  • Swagger网址 是我们提供的便捷openAPI规范GUI,用于探索API架构。

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

要使用API测试您的新对局配对,您将需要Swagger网址、API网址和授权令牌

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

4. 测试票证API

首先,打开您的Swagger网址 以检查您的openAPI架构在swagger GUI中

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

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

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

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

  • 保持 Postman集合 选中,

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

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

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

  • 授权类型 - API密钥

  • 键 - “授权

  • 值 - 输入您的 AuthToken 值,

  • 添加至 - 标头

按下(CTRL/CMD+S)或保存图标以保存更改。在您的Postman选项卡上的橙色提示消失。

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

选择标签 正文 以预览您的 玩家票证请求

注意 player_ip 设置为 null - 这将导致自动使用IP地址(见 服务器到服务器集成 的替代方案),

  • profile 指您的 對局配對配置文件

  • attributes 包括对您对局配对规则的值, 在这种情况下为 latencies规则,

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

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

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

  • id 是您的唯一對局配對票证ID,请保存以便稍后查看您的票证,

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

  • group_id 是每个票证发出的唯一组ID,单个玩家表示为1个组,

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

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

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

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

  • status 指票证的当前状态,所有票证以 SEARCHING 开始(见 對局配對过程 了解详细信息)。

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

在您的對局配對集合中,选择 {ticketId} 并 读取對局配對票证

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

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

  • 状态首先更改为 MATCH_FOUND ,同时保持 assignment 设置为 null,表示玩家已匹配,服务器正在分配。

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

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

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

  • 请注意每个部署都被标记了所有票证ID和配置文件以便于追溯。

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

一旦您验证您能够连接到您的部署没有问题并完成测试,停止您的部署以释放您帐户中的容量以供下一个版本使用。

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

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

Edgegap的对局配对集成:

  • 与 游戏客户端 结合使用,以管理 玩家票证

  • 与 游戏服务器 结合使用,以:

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

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

为在 游戏客户端 中,我们建议在 對局配對过程 中通过游戏内用户界面向玩家提供票证状态更新以获得最佳玩家体验。参见:

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

  • 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