如何为派对多人游戏添加匹配功能

如何向COOP多人游戏添加 matchmaking
如何向COOP多人游戏添加 matchmaking
如何向COOP多人游戏添加 matchmaking

关键洞察

关键洞察

关键洞察

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": {
    "cooperative-example": {
      "application": {
        "name": "my-game-server=>CHANG-THIS-HERE",
        "version": "2024.01.30-16.23.00-UTC=>CHANG-THIS-HERE"
      },
      "rules": {
        "initial": {
          "match_size": {
            "type": "player_count",
            "attributes": {
              "team_count": 1,
              "team_size": 4
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 60,
              "max_latency": 60
            }
          },
          "selected_map": {
            "type": "intersection",
            "attributes": {
              "overlap": 1
            }
          },
          "selected_difficulty": {
            "type": "string_equality"
          },
          "player_level": {
            "type": "number_difference",
            "attributes": {
              "max_difference": 10
            }
          }
        },
        "expansions": {
          "5": {
            "beacons": {
              "difference": 80,
              "max_latency": 80
            }
          },
          "10": {
            "player_level": {
              "max_difference": 20
            }
          },
          "20": {
            "match_size": {
              "team_count": 1,
              "team_size": 3
            },
            "beacons": {
              "difference": 100,
              "max_latency": 100
            }
          },
          "30": {
            "match_size": {
              "team_count": 1,
              "team_size": 2
            },
            "beacons": {
              "max_latency": 200
            }
          },
          "60": {
            "match_size": {
              "team_count": 1,
              "team_size": 1
            }
          }
        }
      }
    }
  }
}

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

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

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

2. 探索配置

独特的多人派对游戏规则

专为派对游戏,您可以定义多个 對局配對档案 ,用于特定游戏模式的规则和设置:

  • 让玩家提供他们的地图偏好并选择适合所有人的地图,

  • 让玩家选择特定的游戏难度以适应每个人的技能水平,

  • 限制玩家级别的差异,以将玩家与相似游戏进度的玩家匹配,

  • 以队伍加入 为预组的大厅或填满团队而不超出团队规模,

  • 允许更高的延迟,更快匹配,但偏向于更优细的玩家偏好,

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

从理想条件开始, 扩展限制 以确保快速匹配:

  • 随时间推移放宽延迟限制以找到更多玩家,

  • 慢慢减少团队规模以减少玩家需求,从而更快开始游戏,

    • 可选地,您可以让服务器用AI队友填补空缺位置,

  • 慢慢增加允许的玩家级别差异以寻找更多玩家,

  • 如果找不到队友,单独启动游戏并使用 后备 在以后添加玩家。

语义化版本控制

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

  • 主版本 包括重大改变并需进行集成审查,

  • 次版本 包括相当大的向后兼容改进,

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

有些 部署可能会导致错误。我们会尝试通过在没有客户确认的情况下最多重新尝试部署max_deployment_retry_count次自动解决此问题。

为了确保意外客户端崩溃或遗弃的票不会拖延并占用您的配对资源,票将在 票过期期间被取消,导致其状态更改为 已取消,然后在 票删除期间后永久删除。

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

對局配對规则 在初始规则集中定义,如果玩家要被组成一组,则必须满足这些规则,每个规则由三个属性定义:

  • 选的名字,例如 - 匹配大小

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

  • 最后是操作员属性,例如 团队数量 或 团队规模

玩家数量规则

这是一个特别的规则,用于定义需要匹配多少玩家来启动分配:

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

  • 团队规模 指 每个团队的玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供可能最低的延迟。一旦客户端测量并提交他们的对每个可用信标的往返时间(ping),Gen2将仅考虑在特定范围的 差异 ping值中的匹配,以便于 Ping信标。这提供了一个将您的玩家分裂成不同地区的“软”解决方案,尤其是对于人口较少的地区,提高了匹配速度。使用 最大延迟来防止与距离很远的玩家匹配。

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

我们的示例 信标 规则在 "差异": 50, "最大延迟": 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不会匹配,因为 Dallas 信标的 | 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 以在swagger GUI中查看您的openAPI架构

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

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

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

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

  • 保持 Postman 集合 选中,

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

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

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

  • 授权类型 - API 密钥

  • 密钥 - “授权

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

  • 添加到 - 标头

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

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

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

注意 player_ip 设置为 null - 这将导致自动添加到请求中的IP地址(请参见 服务器到服务器集成以了解替代方案),

  • profile 指的是您的 对局配对档案

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

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

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

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

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

  • profile 确认对局配对档案的选择,

  • group_id 是分配给每张票的唯一组ID,单个玩家表示为一个1人组,

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

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

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

  • created_at 提供有关何时为游戏UI创建的玩家票的信息,

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

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

在您的对局配对集合中选择 {ticketId} 和 阅读对局配对票

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

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

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

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

  • 状态更改为 已分配主机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