如何在沙盒多人游戏中添加 matchmaking

如何在沙盒多人游戏中添加 matchmaking
如何在沙盒多人游戏中添加 matchmaking
如何在沙盒多人游戏中添加 matchmaking

关键洞察

关键洞察

关键洞察

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

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

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

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

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

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

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

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

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

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

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

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

  2. 现在,您绝不应该盲目遵循在互联网上找到的JSON示例,因此强烈建议您将上述规则适用于您的回合制游戏。步骤2(“探索配置”)是我们的“如何阅读”,深入了解每个对局配对规则函数(“探索配置”)。

  3. 步骤3(“审查实例详细信息”)涵盖了您的个人、具体对局配对以确保它已部署并可以与您的游戏设计配合使用。

  4. 步骤4,顾名思义(“4.测试票API”),全是关于测试您的玩家请求是否被对局配对接收,称为

  5. 步骤5(“将对局配对集成到您的游戏中”)重点介绍如何在您的引擎项目中集成对局配对。

如果您遇到故障排除问题,我们的深入学习中心提供了更多故障排除提示。

1. 设置免费层

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

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

  • 您的对局配对的名称——这纯粹是为了您的参考,例如 quickstart-dev

  • 然后,上传下列简单示例作为您的Sandbox游戏的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配置文件以支持自定义大厅。

语义版本控制

随着我们发布Matchmaker的更新,每个新版本使用 语义版本控制 通过解释格式 大.小.补丁明确传达更改的影响:

  • 主要版本包括重大变更并需要集成审查,

  • 次要版本包括实质性的向后兼容改进,

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

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

为确保意外客户端崩溃或被遗弃票不会滞留并占用您对局配对资源,票将在 票过期期后取消,使其状态变为 已取消,然后在 票删除期后永久删除。

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

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

  • 您选择的名称,例如-  匹配规模

  • 规则类型,也称为运算符,例如-  玩家数

  • 最后是运算符属性,例如 队伍数 或 团队大小

玩家数量规则

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

  • 团队数 指的是队伍的数量,一个团队可能用于合作模式或人人为己模式,

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

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

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

延迟规则

使用此规则为所有玩家提供尽可能低的ping。当客户端测量并提交他们对所有可用信标的往返时间(ping)时,Gen2只会考虑在特定的差异内的匹配,对 Ping信标进行衡量。这呈现了一种“软”解决方案来分裂您的玩家基础,使得与邻近地区的匹配变得可能,特别是提高了人口较少地区的匹配速度。使用最大延迟以防止与位置太远的玩家匹配。

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

我们的例子 信标 规则在上面,其中"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以检查您的openAPI架构在swagger GUI中

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

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

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

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

  • 保持Postman Collection选中,

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

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

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

  • 授权类型 - API键

  • 键 - “授权

  • 值 - 在此处插入您的授权令牌

  • 添加到 - 头部

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

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

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

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

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

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

    • 规则 玩家数量 是唯一不需要玩家票属性的规则。

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

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

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

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

  • 组_id 是提供给每张票的唯一组ID,单个玩家被表示为1个组,

    • 见 以组加入 用于与朋友或大厅的对局配对,

  • 玩家_ip 是玩家的已解析公共IP地址,无论使用何种标识方法,

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

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

  • 状态 指示票的当前状态,所有票开始于搜索中(见 对局配对过程 了解详细信息)。

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

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

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

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

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

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

  • 状态更改为 主持已分配 其中 分配 包含分配服务器的详细信息。

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

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

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

验证您能够连接到您的部署而没有问题并完成测试后,停止您的部署 以释放您帐户中的空间为下一个构建。

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

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

Edgegap的对局配对集成:

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

  • 与 游戏服务器,以:

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

    • 选择性支持 补位以在启动后添加或替换玩家。

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

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

  • HTTP 404 Not Found - 票已被删除,

  • HTTP 500 Internal Server Error - 临时服务中断。

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

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

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

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

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

一旦游戏客户端完全加载,玩家将加载/旅行到主要游戏场景。

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

请确保您部署会被适当地停止使用注入的DELETE_URL,如果:

  • 没有玩家加入比赛,

  • 所有玩家已离开比赛,

  • 比赛正确结束。

祝贺您,您已完成Edgegap Matchmaker集成!如果您想了解更多信息,请在我们的学习中心中阅读有关内容。

书写者

Edgegap团队

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes

Get your Game Online Easily & in Minutes