如何在MMO游戏中添加匹配系统

如何在MMO游戏中添加匹配系统
如何在MMO游戏中添加匹配系统
如何在MMO游戏中添加匹配系统

关键洞察

关键洞察

关键洞察

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

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

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

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

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

-> 本文基于對局配對文档。如果您遇到问题或不一致,请确保参阅原始指南,因为它们更新更频繁。

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

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

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

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

将我们的对局配对集成到您的游戏共有五个步骤

  1. 第一步是创建一个账户并使用我们的MMO游戏示例。好了,您(技术上)已完成一半!您只需在您的游戏中集成对局配对器(参见步骤5)。

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

  3. 步骤3(“查看实例详情”)涵盖您的个人、特定对局配对以确保其部署并符合您的游戏设计。

  4. 顾名思义,步骤4(“4. 测试票证API”)专注于测试来自玩家的对局配对请求是否被称为票证的对局配对器接收。

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

如果您遇到故障排除挑战,我们的深度学习中心有额外的故障排除提示。

1. 设置免费套餐

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

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

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

  • 然后,上传以下简单示例作为您的MMO游戏的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": {}
      }
    }
  }
}

(温馨提醒,请务必更改应用程序 name 和 version 以匹配您的应用和版本!)

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

您现在可以进入下一步。

2. 探索配置

独特的多人MMO游戏规则

自定义大厅(私人大厅、沙盒级别)是沙发多人游戏的热门选项,同时也可以在进入主要游戏模式之前测试竞争或合作游戏中的新功能。这些游戏通常需要最少的限制,但旨在确保玩家可以组队加入

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

  • 提示:将custom-lobby-example配置文件添加到您现有的配置文件中以支持自定义大厅

语义版本控制

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

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

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

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

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

为了确保意外的客户端崩溃或被遗弃的票证不会滞留并占用您的对局配对器资源,票证将在 票证到期时间 后被取消,状态将更改为 已取消 ,然后在 票证删除时间 后永久删除。

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

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

  • 您选择的名称,例如 - 匹配大小

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

  • 最后是操作符属性,例如 团队数量 或 团队大小

玩家数量规则

这是一个特殊的规则,用于定义需要匹配的玩家数量以启动分配:

  • 团队数量 指的是团队数量,1个团队可以用于合作或全员自由模式,

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

我们的简单示例演示了2位玩家的合作游戏。

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

延迟规则

使用此规则为所有玩家提供尽可能低的延迟时间。当客户端测量并提交它们的往返时间(延迟)对比所有可用信标的测量结果时,Gen2将仅考虑在特定 差异 范围内的匹配,这一测量是与延迟信标对比的结果。 这为划分您的玩家群体提供了一个“软”解决方案,可以与邻近地区进行匹配,特别是提高人口较少地区的匹配速度。使用 最大延迟以防止与远离的玩家匹配。

您现在可以进入下一步。

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

  • 爱丽丝和鲍勃将匹配,因为北京被排除在外(>200),其余的|A-B|<小于>50:

    <爱丽丝和鲍勃将匹配,因为北京被排除在外(>200),其余的|A-B|>

    • 爱丽丝 {蒙特利尔: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 以在swagger GUI中检查您的openAPI架构

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

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

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

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

  • 保持 Postman Collection 选中,

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

确认导入,此操作将在左侧的集合列表中出现一个名为Matchmaker的新集合。

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

  • 授权类型 - API密钥

  • 密钥 - “授权

  • 值 - 在此处插入您的 专用验证码

  • 添加到 - 标头

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

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

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

注意 player_ip 设置为 ——这将导致使用自动添加到您的请求中的IP地址(有关替代方案,请参见服务器到服务器集成),

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

  • attributes 包括您的对局配对规则的值,在此情况下为 latency 规则,

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

注意:请务必参考示例的Swagger的导入配置。 

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

  • id 是您独特的对局配对票证ID,请将其保存以便稍后查看您的票证,

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

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

    • 请参见组队加入 以便与您的朋友或大厅匹配,

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

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

  • created_at 提供玩家票证创建时间的信息供游戏UI使用,

  • status 表示票证的当前状态,所有票证从 搜索中 状态开始(有关详细信息,请参见对局配对过程)。

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

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

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

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

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

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

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

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

  • 注意每个部署都标记了所有票证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