了解Edgegap的工作原理

了解Edgegap的工作原理

如何在虚幻引擎多人游戏中添加匹配机制

已发布

已发布

已发布

如何在多人Unreal游戏中添加匹配功能

关键洞察

关键洞察

关键洞察

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

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

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

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

如何将對局配對整合到您的 Unreal Engine 多人游戏中

-> 本文基于 對局配對文档。如果您遇到问题或不一致,请务必参考原始指南,因为它们的更新频率更高。

以下示例将帮助您测试 Unreal Engine 多人游戏的核心對局配對 玩家流程,即:

将我们的配对器应用到您的游戏需要五个步骤:

  1. 第一步是创建一个账户并使用我们的简单游戏示例。瞧,您(在技术上)已经完成了一半!您只需要在您的游戏中整合配对器(见第 5 步)。

  2. 现在,您绝对不应该盲目遵循在互联网上找到的 JSON 示例,因此强烈建议根据您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“如何阅读”,其中深入介绍了每个對局配對规则功能的作用(“探索配置”)。

  3. 步骤 3(“查看实例详细信息”)涵盖了您个人专属的特定配对器,以确保其已部署并与您的游戏设计协同工作。

  4. 步骤 4,顾名思义(“4. 测试凭证 API”),完全是关于测试您的配对器是否收到了来自玩家的對局配對请求,这些请求被称为凭证。

  5. 步骤 5(“在您的游戏中整合對局配對”)重点介绍了如何在您的引擎项目中整合配对器。

如果您遇到故障排除方面的挑战,我们深入的 Learning Center 提供了额外的故障排除提示。

Unreal 教程 - 添加 Edgegap 的對局配對

如果这看起来令人畏惧,别担心 - 观看逐步整合视频:

1. 设置免费层级

注册您的免费 Edgegap 账户,并导航至 Matchmaker 仪表板页面。

在这一步,首先点击 Create Matchmaker,然后输入:

  • 您的配对器的名称 – 纯粹用于您自己的参考,例如 quickstart-dev,

  • 然后,上传以下简单的 JSON 配置示例,用于您的 Unreal Engine 游戏:

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "simple-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": 2
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 50,
              "max_latency": 200
            }
          }
        },
        "expansions": {}
      }
    }
  }
}

(友情提示,请务必修改应用 name 和 version,以匹配您的 Application and Versions!)

如果没有出现验证错误,点击 Create and Start 并等待该过程完成。这将启动一个新的免费集群,运行您的简单示例配对器。

您现在可以继续下一步。

2. 探索配置​

语义化版本控制

当我们发布 Matchmaker 的更新时,每个新版本都使用 Semantic Versioning 来通过解释格式 major.minor.patch 清楚地传达变更的影响:

  • major (主)版本包含破坏性变更,需要进行整合审查,

  • minor (次)版本包含实质性的向后兼容改进,

  • patch (补丁)版本包含错误修复和微小改进。

某些 deployments may result in Errors。我们尝试通过自动重试部署最多 max_deployment_retry_count 次(无需客户端确认)来解决此问题。

为了确保意外的客户端崩溃或遗弃的凭证不会持续存在并占用您的配对器资源,凭证将在 ticket_expiration_period 后被取消,导致其状态更改为 CANCELLED,然后在 ticket_removal_period 后被永久删除。

我们的對局配對逻辑的核心在 Matchmaking Profiles 中配置。每个配置文件都是一个完全隔离的對局配對队列,指向具有预定义 CPU 和内存(RAM)资源需求量的 App Versions。

初始规则集中的 Matchmaking Rules 必须得到满足才能将玩家分组,每个规则由三个属性定义:

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

  • 规则类型,也称为操作符,例如 -  player_count,

  • 最后是操作符属性,例如 team_count 或 team_size。

玩家数量规则

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

  • team_count 指队伍数量,合作或混战模式下可使用 1 支队伍,

  • team_size 指 每支队伍的玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供尽可能低的 Ping 值。一旦客户端测量并提交了他们针对所有可用信标的往返时间(Ping 值),Gen2 将仅考虑针对 Ping Beacons 测量在特定 difference Ping 值范围内的对局。这提供了一个拆分玩家群的“软”解决方案,使能够与相邻区域进行配对,尤其提高了人口较少区域的配对速度。使用 max_latency 来防止与相距很远的玩家进行配对。

您现在可以继续下一步。

我们上述的示例 beacons 规则,初始使用 "difference": 50, "max_latency": 200:

  • Alice 和 Bob 将会匹配,因为北京被丢弃(>200),其余部分在 | A-B | < 50 范围内:

    • Alice {Montreal: 12.3, Newark: 45.6, Dallas: 59.9, Beijing: 264.4};以及

    • Bob {Montreal: 27.3, Newark: 32.4, Dallas: 23.1, Beijing: 252.2}。

  • Charlie 和 Dave 将不会匹配,因为对于 Dallas 信标而言,| C-D | > 50:

    • Alice {Montreal: 5.7 Newark: 44.2, Dallas: 59.5, Beijing: 263.2};以及

    • Bob {Montreal: 57.8, Newark: 32.0, Dallas: 24.2, Beijing: 272.3}。

请注意,“延迟规则”在您的初始配置规则中只能定义一次。

3. 查看实例详细信息​

初始化完成后,在我们的仪表板中查看新配对器的详细信息:

Status 指示服务健康状况,可能是 ONLINE、OFFLINE 或 ERROR。

  • Identifier 在您需要故障排除帮助时,帮助 Edgegap 工作人员快速找到您的配对器。

  • Started at 对于追踪最新的更新时间很有用。

  • Size 对应于我们的一个 Pricing Tiers。

  • API URL 将被游戏客户端和游戏服务器用来与 Gen2 进行通信。

  • Swagger URL 是我们提供的一个方便的 openAPI 规范 GUI,用于探索 API 架构。

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

要使用 API 测试您的新配对器,您将需要 Swagger URL、API URL 和 Auth Token。

您现在可以继续下一步。

4. 测试凭证 API

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

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

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

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

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

  • 保持 Postman Collection 处于选中状态,

  • 选择 View Import Settings 并将设置 Parameter generation 更改为 Example。

确认导入,这将在左侧的“Collections”列表中出现一个名为 Matchmaker 的新集合。

查看更多操作,打开标签页 Authorization 并选择:

  • Auth Type - API Key,

  • Key - “Authorization”

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

  • Add to - Header.

按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。您的 Postman 标签页中的橙色圆点应该会消失。

在您的 Matchmaker 集合中,选择 tickets 并 Create a matchmaking ticket,打开一个新标签页。

选择标签页 Body 以预览您的 player ticket request:

注意 player_ip 被设置为 null - 这将导致使用自动添加到您请求中的 IP 地址(其他选择见 Server to Server Integration),

  • profile 指您的 Matchmaking Profiles,

  • attributes 包含您的配对器规则的值,在此例中用于 latencies 规则,

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

注意:请务必参考示例的 Swagger’s import configuration。 

点击 Send 并查看对您的玩家凭证请求的响应:

  • id 是您唯一的對局配對凭证 ID,请妥善保存以便稍后检查您的凭证,

  • profile 确认 Matchmaking Profiles 的选择,

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

    • 与您的朋友或大厅进行對局配對请参见 Join as Group,

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

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

  • created_at 提供关于玩家凭证创建时间的信息,用于游戏 UI,

  • status 指示凭证的当前状态,所有凭证最初都处于 SEARCHING 状态(详情见 Matchmaking Process)。

再次点击 Send 创建第二个凭证,这样我们的两名玩家就会匹配,并且服务器会启动。

在您的 Matchmaker 集合中,选择 {ticketId} 并 Read a matchmaking ticket。

输入上一步响应中的凭证 ID,然后点击 Send。

查看您的玩家凭证的更新分配情况:

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

再次点击 Send 以检查您的凭证,并查看玩家凭证更新后的分配情况:

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

 Inspect your new deployment in our dashboard:

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

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

一旦您验证您能够毫无问题地连接到您的部署并完成测试,停止您的部署,以释放您账户中用于下一次构建的容量。

您现在可以继续下一步。

5. 在您的游戏中整合配对器​

Edgegap 的對局配對整合:

  • 与 Game Client 整合,以管理 Player Tickets,

  • 与 Game Server 整合,以:

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

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

对于游戏客户端,我们建议在整个 Matchmaking Process 中向使用游戏内 UI 的玩家提供凭证状态更新,以获得最佳的玩家体验。参见:

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

  • HTTP 404 Not Found - 凭证已被删除,

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

在游戏服务器中,处理玩家偏好和初始服务器上下文。不需要 API 整合:

  1. 读取 Injected Environment Variables (Gen2) 以检索初始玩家的對局配對数据。

  2. 读取 Injected Environment Variables (App Versions) 以获取特定于版本的参数、设置(玩家容量)和机密。

  3. 读取 Injected Environment Variables (Deployment) 以获取部署信息,例如 IP 地址、位置等。

一旦玩家连接,游戏服务器和游戏客户端将启动一个加载场景来执行同步步骤(例如,选择并加载地图/场景/关卡)。我们推荐使用一个完整的 3D 场景、类似大厅的社交 UI,或带有进度条的加载屏幕,以指示初始化正在进行。

一旦游戏客户端完全加载,玩家就会加载/过渡到主游戏场景。

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

如果出现以下情况,请确保使用 Injected DELETE_URL 妥善 deployment will be stopped:

  • 没有玩家加入对局,

  • 所有玩家都已离开对局,

  • 对局正确结束。

恭喜,您已完成 Edgegap Matchmaker 整合!如果您想了解更多信息,请在我们的 Learning Center 中阅读所有相关内容。

如何将對局配對整合到您的 Unreal Engine 多人游戏中

-> 本文基于 對局配對文档。如果您遇到问题或不一致,请务必参考原始指南,因为它们的更新频率更高。

以下示例将帮助您测试 Unreal Engine 多人游戏的核心對局配對 玩家流程,即:

将我们的配对器应用到您的游戏需要五个步骤:

  1. 第一步是创建一个账户并使用我们的简单游戏示例。瞧,您(在技术上)已经完成了一半!您只需要在您的游戏中整合配对器(见第 5 步)。

  2. 现在,您绝对不应该盲目遵循在互联网上找到的 JSON 示例,因此强烈建议根据您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“如何阅读”,其中深入介绍了每个對局配對规则功能的作用(“探索配置”)。

  3. 步骤 3(“查看实例详细信息”)涵盖了您个人专属的特定配对器,以确保其已部署并与您的游戏设计协同工作。

  4. 步骤 4,顾名思义(“4. 测试凭证 API”),完全是关于测试您的配对器是否收到了来自玩家的對局配對请求,这些请求被称为凭证。

  5. 步骤 5(“在您的游戏中整合對局配對”)重点介绍了如何在您的引擎项目中整合配对器。

如果您遇到故障排除方面的挑战,我们深入的 Learning Center 提供了额外的故障排除提示。

Unreal 教程 - 添加 Edgegap 的對局配對

如果这看起来令人畏惧,别担心 - 观看逐步整合视频:

1. 设置免费层级

注册您的免费 Edgegap 账户,并导航至 Matchmaker 仪表板页面。

在这一步,首先点击 Create Matchmaker,然后输入:

  • 您的配对器的名称 – 纯粹用于您自己的参考,例如 quickstart-dev,

  • 然后,上传以下简单的 JSON 配置示例,用于您的 Unreal Engine 游戏:

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "simple-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": 2
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 50,
              "max_latency": 200
            }
          }
        },
        "expansions": {}
      }
    }
  }
}

(友情提示,请务必修改应用 name 和 version,以匹配您的 Application and Versions!)

如果没有出现验证错误,点击 Create and Start 并等待该过程完成。这将启动一个新的免费集群,运行您的简单示例配对器。

您现在可以继续下一步。

2. 探索配置​

语义化版本控制

当我们发布 Matchmaker 的更新时,每个新版本都使用 Semantic Versioning 来通过解释格式 major.minor.patch 清楚地传达变更的影响:

  • major (主)版本包含破坏性变更,需要进行整合审查,

  • minor (次)版本包含实质性的向后兼容改进,

  • patch (补丁)版本包含错误修复和微小改进。

某些 deployments may result in Errors。我们尝试通过自动重试部署最多 max_deployment_retry_count 次(无需客户端确认)来解决此问题。

为了确保意外的客户端崩溃或遗弃的凭证不会持续存在并占用您的配对器资源,凭证将在 ticket_expiration_period 后被取消,导致其状态更改为 CANCELLED,然后在 ticket_removal_period 后被永久删除。

我们的對局配對逻辑的核心在 Matchmaking Profiles 中配置。每个配置文件都是一个完全隔离的對局配對队列,指向具有预定义 CPU 和内存(RAM)资源需求量的 App Versions。

初始规则集中的 Matchmaking Rules 必须得到满足才能将玩家分组,每个规则由三个属性定义:

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

  • 规则类型,也称为操作符,例如 -  player_count,

  • 最后是操作符属性,例如 team_count 或 team_size。

玩家数量规则

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

  • team_count 指队伍数量,合作或混战模式下可使用 1 支队伍,

  • team_size 指 每支队伍的玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供尽可能低的 Ping 值。一旦客户端测量并提交了他们针对所有可用信标的往返时间(Ping 值),Gen2 将仅考虑针对 Ping Beacons 测量在特定 difference Ping 值范围内的对局。这提供了一个拆分玩家群的“软”解决方案,使能够与相邻区域进行配对,尤其提高了人口较少区域的配对速度。使用 max_latency 来防止与相距很远的玩家进行配对。

您现在可以继续下一步。

我们上述的示例 beacons 规则,初始使用 "difference": 50, "max_latency": 200:

  • Alice 和 Bob 将会匹配,因为北京被丢弃(>200),其余部分在 | A-B | < 50 范围内:

    • Alice {Montreal: 12.3, Newark: 45.6, Dallas: 59.9, Beijing: 264.4};以及

    • Bob {Montreal: 27.3, Newark: 32.4, Dallas: 23.1, Beijing: 252.2}。

  • Charlie 和 Dave 将不会匹配,因为对于 Dallas 信标而言,| C-D | > 50:

    • Alice {Montreal: 5.7 Newark: 44.2, Dallas: 59.5, Beijing: 263.2};以及

    • Bob {Montreal: 57.8, Newark: 32.0, Dallas: 24.2, Beijing: 272.3}。

请注意,“延迟规则”在您的初始配置规则中只能定义一次。

3. 查看实例详细信息​

初始化完成后,在我们的仪表板中查看新配对器的详细信息:

Status 指示服务健康状况,可能是 ONLINE、OFFLINE 或 ERROR。

  • Identifier 在您需要故障排除帮助时,帮助 Edgegap 工作人员快速找到您的配对器。

  • Started at 对于追踪最新的更新时间很有用。

  • Size 对应于我们的一个 Pricing Tiers。

  • API URL 将被游戏客户端和游戏服务器用来与 Gen2 进行通信。

  • Swagger URL 是我们提供的一个方便的 openAPI 规范 GUI,用于探索 API 架构。

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

要使用 API 测试您的新配对器,您将需要 Swagger URL、API URL 和 Auth Token。

您现在可以继续下一步。

4. 测试凭证 API

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

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

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

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

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

  • 保持 Postman Collection 处于选中状态,

  • 选择 View Import Settings 并将设置 Parameter generation 更改为 Example。

确认导入,这将在左侧的“Collections”列表中出现一个名为 Matchmaker 的新集合。

查看更多操作,打开标签页 Authorization 并选择:

  • Auth Type - API Key,

  • Key - “Authorization”

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

  • Add to - Header.

按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。您的 Postman 标签页中的橙色圆点应该会消失。

在您的 Matchmaker 集合中,选择 tickets 并 Create a matchmaking ticket,打开一个新标签页。

选择标签页 Body 以预览您的 player ticket request:

注意 player_ip 被设置为 null - 这将导致使用自动添加到您请求中的 IP 地址(其他选择见 Server to Server Integration),

  • profile 指您的 Matchmaking Profiles,

  • attributes 包含您的配对器规则的值,在此例中用于 latencies 规则,

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

注意:请务必参考示例的 Swagger’s import configuration。 

点击 Send 并查看对您的玩家凭证请求的响应:

  • id 是您唯一的對局配對凭证 ID,请妥善保存以便稍后检查您的凭证,

  • profile 确认 Matchmaking Profiles 的选择,

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

    • 与您的朋友或大厅进行對局配對请参见 Join as Group,

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

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

  • created_at 提供关于玩家凭证创建时间的信息,用于游戏 UI,

  • status 指示凭证的当前状态,所有凭证最初都处于 SEARCHING 状态(详情见 Matchmaking Process)。

再次点击 Send 创建第二个凭证,这样我们的两名玩家就会匹配,并且服务器会启动。

在您的 Matchmaker 集合中,选择 {ticketId} 并 Read a matchmaking ticket。

输入上一步响应中的凭证 ID,然后点击 Send。

查看您的玩家凭证的更新分配情况:

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

再次点击 Send 以检查您的凭证,并查看玩家凭证更新后的分配情况:

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

 Inspect your new deployment in our dashboard:

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

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

一旦您验证您能够毫无问题地连接到您的部署并完成测试,停止您的部署,以释放您账户中用于下一次构建的容量。

您现在可以继续下一步。

5. 在您的游戏中整合配对器​

Edgegap 的對局配對整合:

  • 与 Game Client 整合,以管理 Player Tickets,

  • 与 Game Server 整合,以:

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

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

对于游戏客户端,我们建议在整个 Matchmaking Process 中向使用游戏内 UI 的玩家提供凭证状态更新,以获得最佳的玩家体验。参见:

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

  • HTTP 404 Not Found - 凭证已被删除,

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

在游戏服务器中,处理玩家偏好和初始服务器上下文。不需要 API 整合:

  1. 读取 Injected Environment Variables (Gen2) 以检索初始玩家的對局配對数据。

  2. 读取 Injected Environment Variables (App Versions) 以获取特定于版本的参数、设置(玩家容量)和机密。

  3. 读取 Injected Environment Variables (Deployment) 以获取部署信息,例如 IP 地址、位置等。

一旦玩家连接,游戏服务器和游戏客户端将启动一个加载场景来执行同步步骤(例如,选择并加载地图/场景/关卡)。我们推荐使用一个完整的 3D 场景、类似大厅的社交 UI,或带有进度条的加载屏幕,以指示初始化正在进行。

一旦游戏客户端完全加载,玩家就会加载/过渡到主游戏场景。

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

如果出现以下情况,请确保使用 Injected DELETE_URL 妥善 deployment will be stopped:

  • 没有玩家加入对局,

  • 所有玩家都已离开对局,

  • 对局正确结束。

恭喜,您已完成 Edgegap Matchmaker 整合!如果您想了解更多信息,请在我们的 Learning Center 中阅读所有相关内容。

如何将對局配對整合到您的 Unreal Engine 多人游戏中

-> 本文基于 對局配對文档。如果您遇到问题或不一致,请务必参考原始指南,因为它们的更新频率更高。

以下示例将帮助您测试 Unreal Engine 多人游戏的核心對局配對 玩家流程,即:

将我们的配对器应用到您的游戏需要五个步骤:

  1. 第一步是创建一个账户并使用我们的简单游戏示例。瞧,您(在技术上)已经完成了一半!您只需要在您的游戏中整合配对器(见第 5 步)。

  2. 现在,您绝对不应该盲目遵循在互联网上找到的 JSON 示例,因此强烈建议根据您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“如何阅读”,其中深入介绍了每个對局配對规则功能的作用(“探索配置”)。

  3. 步骤 3(“查看实例详细信息”)涵盖了您个人专属的特定配对器,以确保其已部署并与您的游戏设计协同工作。

  4. 步骤 4,顾名思义(“4. 测试凭证 API”),完全是关于测试您的配对器是否收到了来自玩家的對局配對请求,这些请求被称为凭证。

  5. 步骤 5(“在您的游戏中整合對局配對”)重点介绍了如何在您的引擎项目中整合配对器。

如果您遇到故障排除方面的挑战,我们深入的 Learning Center 提供了额外的故障排除提示。

Unreal 教程 - 添加 Edgegap 的對局配對

如果这看起来令人畏惧,别担心 - 观看逐步整合视频:

1. 设置免费层级

注册您的免费 Edgegap 账户,并导航至 Matchmaker 仪表板页面。

在这一步,首先点击 Create Matchmaker,然后输入:

  • 您的配对器的名称 – 纯粹用于您自己的参考,例如 quickstart-dev,

  • 然后,上传以下简单的 JSON 配置示例,用于您的 Unreal Engine 游戏:

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "simple-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": 2
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 50,
              "max_latency": 200
            }
          }
        },
        "expansions": {}
      }
    }
  }
}

(友情提示,请务必修改应用 name 和 version,以匹配您的 Application and Versions!)

如果没有出现验证错误,点击 Create and Start 并等待该过程完成。这将启动一个新的免费集群,运行您的简单示例配对器。

您现在可以继续下一步。

2. 探索配置​

语义化版本控制

当我们发布 Matchmaker 的更新时,每个新版本都使用 Semantic Versioning 来通过解释格式 major.minor.patch 清楚地传达变更的影响:

  • major (主)版本包含破坏性变更,需要进行整合审查,

  • minor (次)版本包含实质性的向后兼容改进,

  • patch (补丁)版本包含错误修复和微小改进。

某些 deployments may result in Errors。我们尝试通过自动重试部署最多 max_deployment_retry_count 次(无需客户端确认)来解决此问题。

为了确保意外的客户端崩溃或遗弃的凭证不会持续存在并占用您的配对器资源,凭证将在 ticket_expiration_period 后被取消,导致其状态更改为 CANCELLED,然后在 ticket_removal_period 后被永久删除。

我们的對局配對逻辑的核心在 Matchmaking Profiles 中配置。每个配置文件都是一个完全隔离的對局配對队列,指向具有预定义 CPU 和内存(RAM)资源需求量的 App Versions。

初始规则集中的 Matchmaking Rules 必须得到满足才能将玩家分组,每个规则由三个属性定义:

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

  • 规则类型,也称为操作符,例如 -  player_count,

  • 最后是操作符属性,例如 team_count 或 team_size。

玩家数量规则

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

  • team_count 指队伍数量,合作或混战模式下可使用 1 支队伍,

  • team_size 指 每支队伍的玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供尽可能低的 Ping 值。一旦客户端测量并提交了他们针对所有可用信标的往返时间(Ping 值),Gen2 将仅考虑针对 Ping Beacons 测量在特定 difference Ping 值范围内的对局。这提供了一个拆分玩家群的“软”解决方案,使能够与相邻区域进行配对,尤其提高了人口较少区域的配对速度。使用 max_latency 来防止与相距很远的玩家进行配对。

您现在可以继续下一步。

我们上述的示例 beacons 规则,初始使用 "difference": 50, "max_latency": 200:

  • Alice 和 Bob 将会匹配,因为北京被丢弃(>200),其余部分在 | A-B | < 50 范围内:

    • Alice {Montreal: 12.3, Newark: 45.6, Dallas: 59.9, Beijing: 264.4};以及

    • Bob {Montreal: 27.3, Newark: 32.4, Dallas: 23.1, Beijing: 252.2}。

  • Charlie 和 Dave 将不会匹配,因为对于 Dallas 信标而言,| C-D | > 50:

    • Alice {Montreal: 5.7 Newark: 44.2, Dallas: 59.5, Beijing: 263.2};以及

    • Bob {Montreal: 57.8, Newark: 32.0, Dallas: 24.2, Beijing: 272.3}。

请注意,“延迟规则”在您的初始配置规则中只能定义一次。

3. 查看实例详细信息​

初始化完成后,在我们的仪表板中查看新配对器的详细信息:

Status 指示服务健康状况,可能是 ONLINE、OFFLINE 或 ERROR。

  • Identifier 在您需要故障排除帮助时,帮助 Edgegap 工作人员快速找到您的配对器。

  • Started at 对于追踪最新的更新时间很有用。

  • Size 对应于我们的一个 Pricing Tiers。

  • API URL 将被游戏客户端和游戏服务器用来与 Gen2 进行通信。

  • Swagger URL 是我们提供的一个方便的 openAPI 规范 GUI,用于探索 API 架构。

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

要使用 API 测试您的新配对器,您将需要 Swagger URL、API URL 和 Auth Token。

您现在可以继续下一步。

4. 测试凭证 API

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

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

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

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

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

  • 保持 Postman Collection 处于选中状态,

  • 选择 View Import Settings 并将设置 Parameter generation 更改为 Example。

确认导入,这将在左侧的“Collections”列表中出现一个名为 Matchmaker 的新集合。

查看更多操作,打开标签页 Authorization 并选择:

  • Auth Type - API Key,

  • Key - “Authorization”

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

  • Add to - Header.

按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。您的 Postman 标签页中的橙色圆点应该会消失。

在您的 Matchmaker 集合中,选择 tickets 并 Create a matchmaking ticket,打开一个新标签页。

选择标签页 Body 以预览您的 player ticket request:

注意 player_ip 被设置为 null - 这将导致使用自动添加到您请求中的 IP 地址(其他选择见 Server to Server Integration),

  • profile 指您的 Matchmaking Profiles,

  • attributes 包含您的配对器规则的值,在此例中用于 latencies 规则,

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

注意:请务必参考示例的 Swagger’s import configuration。 

点击 Send 并查看对您的玩家凭证请求的响应:

  • id 是您唯一的對局配對凭证 ID,请妥善保存以便稍后检查您的凭证,

  • profile 确认 Matchmaking Profiles 的选择,

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

    • 与您的朋友或大厅进行對局配對请参见 Join as Group,

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

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

  • created_at 提供关于玩家凭证创建时间的信息,用于游戏 UI,

  • status 指示凭证的当前状态,所有凭证最初都处于 SEARCHING 状态(详情见 Matchmaking Process)。

再次点击 Send 创建第二个凭证,这样我们的两名玩家就会匹配,并且服务器会启动。

在您的 Matchmaker 集合中,选择 {ticketId} 并 Read a matchmaking ticket。

输入上一步响应中的凭证 ID,然后点击 Send。

查看您的玩家凭证的更新分配情况:

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

再次点击 Send 以检查您的凭证,并查看玩家凭证更新后的分配情况:

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

 Inspect your new deployment in our dashboard:

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

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

一旦您验证您能够毫无问题地连接到您的部署并完成测试,停止您的部署,以释放您账户中用于下一次构建的容量。

您现在可以继续下一步。

5. 在您的游戏中整合配对器​

Edgegap 的對局配對整合:

  • 与 Game Client 整合,以管理 Player Tickets,

  • 与 Game Server 整合,以:

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

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

对于游戏客户端,我们建议在整个 Matchmaking Process 中向使用游戏内 UI 的玩家提供凭证状态更新,以获得最佳的玩家体验。参见:

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

  • HTTP 404 Not Found - 凭证已被删除,

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

在游戏服务器中,处理玩家偏好和初始服务器上下文。不需要 API 整合:

  1. 读取 Injected Environment Variables (Gen2) 以检索初始玩家的對局配對数据。

  2. 读取 Injected Environment Variables (App Versions) 以获取特定于版本的参数、设置(玩家容量)和机密。

  3. 读取 Injected Environment Variables (Deployment) 以获取部署信息,例如 IP 地址、位置等。

一旦玩家连接,游戏服务器和游戏客户端将启动一个加载场景来执行同步步骤(例如,选择并加载地图/场景/关卡)。我们推荐使用一个完整的 3D 场景、类似大厅的社交 UI,或带有进度条的加载屏幕,以指示初始化正在进行。

一旦游戏客户端完全加载,玩家就会加载/过渡到主游戏场景。

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

如果出现以下情况,请确保使用 Injected DELETE_URL 妥善 deployment will be stopped:

  • 没有玩家加入对局,

  • 所有玩家都已离开对局,

  • 对局正确结束。

恭喜,您已完成 Edgegap Matchmaker 整合!如果您想了解更多信息,请在我们的 Learning Center 中阅读所有相关内容。

如何将對局配對整合到您的 Unreal Engine 多人游戏中

-> 本文基于 對局配對文档。如果您遇到问题或不一致,请务必参考原始指南,因为它们的更新频率更高。

以下示例将帮助您测试 Unreal Engine 多人游戏的核心對局配對 玩家流程,即:

将我们的配对器应用到您的游戏需要五个步骤:

  1. 第一步是创建一个账户并使用我们的简单游戏示例。瞧,您(在技术上)已经完成了一半!您只需要在您的游戏中整合配对器(见第 5 步)。

  2. 现在,您绝对不应该盲目遵循在互联网上找到的 JSON 示例,因此强烈建议根据您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“如何阅读”,其中深入介绍了每个對局配對规则功能的作用(“探索配置”)。

  3. 步骤 3(“查看实例详细信息”)涵盖了您个人专属的特定配对器,以确保其已部署并与您的游戏设计协同工作。

  4. 步骤 4,顾名思义(“4. 测试凭证 API”),完全是关于测试您的配对器是否收到了来自玩家的對局配對请求,这些请求被称为凭证。

  5. 步骤 5(“在您的游戏中整合對局配對”)重点介绍了如何在您的引擎项目中整合配对器。

如果您遇到故障排除方面的挑战,我们深入的 Learning Center 提供了额外的故障排除提示。

Unreal 教程 - 添加 Edgegap 的對局配對

如果这看起来令人畏惧,别担心 - 观看逐步整合视频:

1. 设置免费层级

注册您的免费 Edgegap 账户,并导航至 Matchmaker 仪表板页面。

在这一步,首先点击 Create Matchmaker,然后输入:

  • 您的配对器的名称 – 纯粹用于您自己的参考,例如 quickstart-dev,

  • 然后,上传以下简单的 JSON 配置示例,用于您的 Unreal Engine 游戏:

{
  "version": "2.1.0",
  "inspect": true,
  "max_deployment_retry_count": 3,
  "ticket_expiration_period": "5m",
  "ticket_removal_period": "1m",
  "profiles": {
    "simple-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": 2
            }
          },
          "beacons": {
            "type": "latencies",
            "attributes": {
              "difference": 50,
              "max_latency": 200
            }
          }
        },
        "expansions": {}
      }
    }
  }
}

(友情提示,请务必修改应用 name 和 version,以匹配您的 Application and Versions!)

如果没有出现验证错误,点击 Create and Start 并等待该过程完成。这将启动一个新的免费集群,运行您的简单示例配对器。

您现在可以继续下一步。

2. 探索配置​

语义化版本控制

当我们发布 Matchmaker 的更新时,每个新版本都使用 Semantic Versioning 来通过解释格式 major.minor.patch 清楚地传达变更的影响:

  • major (主)版本包含破坏性变更,需要进行整合审查,

  • minor (次)版本包含实质性的向后兼容改进,

  • patch (补丁)版本包含错误修复和微小改进。

某些 deployments may result in Errors。我们尝试通过自动重试部署最多 max_deployment_retry_count 次(无需客户端确认)来解决此问题。

为了确保意外的客户端崩溃或遗弃的凭证不会持续存在并占用您的配对器资源,凭证将在 ticket_expiration_period 后被取消,导致其状态更改为 CANCELLED,然后在 ticket_removal_period 后被永久删除。

我们的對局配對逻辑的核心在 Matchmaking Profiles 中配置。每个配置文件都是一个完全隔离的對局配對队列,指向具有预定义 CPU 和内存(RAM)资源需求量的 App Versions。

初始规则集中的 Matchmaking Rules 必须得到满足才能将玩家分组,每个规则由三个属性定义:

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

  • 规则类型,也称为操作符,例如 -  player_count,

  • 最后是操作符属性,例如 team_count 或 team_size。

玩家数量规则

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

  • team_count 指队伍数量,合作或混战模式下可使用 1 支队伍,

  • team_size 指 每支队伍的玩家数量。

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

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

延迟规则

使用此规则为所有玩家提供尽可能低的 Ping 值。一旦客户端测量并提交了他们针对所有可用信标的往返时间(Ping 值),Gen2 将仅考虑针对 Ping Beacons 测量在特定 difference Ping 值范围内的对局。这提供了一个拆分玩家群的“软”解决方案,使能够与相邻区域进行配对,尤其提高了人口较少区域的配对速度。使用 max_latency 来防止与相距很远的玩家进行配对。

您现在可以继续下一步。

我们上述的示例 beacons 规则,初始使用 "difference": 50, "max_latency": 200:

  • Alice 和 Bob 将会匹配,因为北京被丢弃(>200),其余部分在 | A-B | < 50 范围内:

    • Alice {Montreal: 12.3, Newark: 45.6, Dallas: 59.9, Beijing: 264.4};以及

    • Bob {Montreal: 27.3, Newark: 32.4, Dallas: 23.1, Beijing: 252.2}。

  • Charlie 和 Dave 将不会匹配,因为对于 Dallas 信标而言,| C-D | > 50:

    • Alice {Montreal: 5.7 Newark: 44.2, Dallas: 59.5, Beijing: 263.2};以及

    • Bob {Montreal: 57.8, Newark: 32.0, Dallas: 24.2, Beijing: 272.3}。

请注意,“延迟规则”在您的初始配置规则中只能定义一次。

3. 查看实例详细信息​

初始化完成后,在我们的仪表板中查看新配对器的详细信息:

Status 指示服务健康状况,可能是 ONLINE、OFFLINE 或 ERROR。

  • Identifier 在您需要故障排除帮助时,帮助 Edgegap 工作人员快速找到您的配对器。

  • Started at 对于追踪最新的更新时间很有用。

  • Size 对应于我们的一个 Pricing Tiers。

  • API URL 将被游戏客户端和游戏服务器用来与 Gen2 进行通信。

  • Swagger URL 是我们提供的一个方便的 openAPI 规范 GUI,用于探索 API 架构。

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

要使用 API 测试您的新配对器,您将需要 Swagger URL、API URL 和 Auth Token。

您现在可以继续下一步。

4. 测试凭证 API

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

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

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

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

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

  • 保持 Postman Collection 处于选中状态,

  • 选择 View Import Settings 并将设置 Parameter generation 更改为 Example。

确认导入,这将在左侧的“Collections”列表中出现一个名为 Matchmaker 的新集合。

查看更多操作,打开标签页 Authorization 并选择:

  • Auth Type - API Key,

  • Key - “Authorization”

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

  • Add to - Header.

按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。您的 Postman 标签页中的橙色圆点应该会消失。

在您的 Matchmaker 集合中,选择 tickets 并 Create a matchmaking ticket,打开一个新标签页。

选择标签页 Body 以预览您的 player ticket request:

注意 player_ip 被设置为 null - 这将导致使用自动添加到您请求中的 IP 地址(其他选择见 Server to Server Integration),

  • profile 指您的 Matchmaking Profiles,

  • attributes 包含您的配对器规则的值,在此例中用于 latencies 规则,

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

注意:请务必参考示例的 Swagger’s import configuration。 

点击 Send 并查看对您的玩家凭证请求的响应:

  • id 是您唯一的對局配對凭证 ID,请妥善保存以便稍后检查您的凭证,

  • profile 确认 Matchmaking Profiles 的选择,

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

    • 与您的朋友或大厅进行對局配對请参见 Join as Group,

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

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

  • created_at 提供关于玩家凭证创建时间的信息,用于游戏 UI,

  • status 指示凭证的当前状态,所有凭证最初都处于 SEARCHING 状态(详情见 Matchmaking Process)。

再次点击 Send 创建第二个凭证,这样我们的两名玩家就会匹配,并且服务器会启动。

在您的 Matchmaker 集合中,选择 {ticketId} 并 Read a matchmaking ticket。

输入上一步响应中的凭证 ID,然后点击 Send。

查看您的玩家凭证的更新分配情况:

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

再次点击 Send 以检查您的凭证,并查看玩家凭证更新后的分配情况:

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

 Inspect your new deployment in our dashboard:

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

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

一旦您验证您能够毫无问题地连接到您的部署并完成测试,停止您的部署,以释放您账户中用于下一次构建的容量。

您现在可以继续下一步。

5. 在您的游戏中整合配对器​

Edgegap 的對局配對整合:

  • 与 Game Client 整合,以管理 Player Tickets,

  • 与 Game Server 整合,以:

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

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

对于游戏客户端,我们建议在整个 Matchmaking Process 中向使用游戏内 UI 的玩家提供凭证状态更新,以获得最佳的玩家体验。参见:

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

  • HTTP 404 Not Found - 凭证已被删除,

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

在游戏服务器中,处理玩家偏好和初始服务器上下文。不需要 API 整合:

  1. 读取 Injected Environment Variables (Gen2) 以检索初始玩家的對局配對数据。

  2. 读取 Injected Environment Variables (App Versions) 以获取特定于版本的参数、设置(玩家容量)和机密。

  3. 读取 Injected Environment Variables (Deployment) 以获取部署信息,例如 IP 地址、位置等。

一旦玩家连接,游戏服务器和游戏客户端将启动一个加载场景来执行同步步骤(例如,选择并加载地图/场景/关卡)。我们推荐使用一个完整的 3D 场景、类似大厅的社交 UI,或带有进度条的加载屏幕,以指示初始化正在进行。

一旦游戏客户端完全加载,玩家就会加载/过渡到主游戏场景。

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

如果出现以下情况,请确保使用 Injected DELETE_URL 妥善 deployment will be stopped:

  • 没有玩家加入对局,

  • 所有玩家都已离开对局,

  • 对局正确结束。

恭喜,您已完成 Edgegap Matchmaker 整合!如果您想了解更多信息,请在我们的 Learning Center 中阅读所有相关内容。

书写者

Edgegap团队

Get your Game Online Easily & in Minutes

立即开始集成!

轻松在线游戏
且在几分钟内

Get your Game Online Easily & in Minutes