
如何在PvE多人游戏中添加 matchmaking
已发布
已发布
已发布

关键洞察
关键洞察
关键洞察
Edgegap 的 匹配器 是一个全托管、无限可定制的匹配系统,能够最佳地将全球玩家分组——在开发您的 PvE 多人游戏期间使用是免费的。
它也是唯一一个(我们所知)具有 基于延迟的匹配规则 的匹配系统,提供理想的在线多人游戏体验,无论您的游戏引擎是什么(Unity、Unreal 等)或游戏服务(EOS、UGS、PlayFab、Heroic Labs Nakama、Braincloud 等)。
由于我们的匹配器基于参数,因此无需编写代码。因此,集成非常简单,如果需要,我们的 入门指南 会为您提供每一步的帮助。
当您的游戏上线时,由于我们的匹配系统是全面管理的,您无需处理基础设施、错误、停机、可扩展性或数据库管理。我们为您处理所有这些事情,使您的 DevOps 工作量几乎降为零。
如何将匹配集成到您的 PvE 多人游戏中
-> 本文基于匹配文档。如果您遇到问题或差异,请务必参考原始指南,因为其更新更为频繁。
以下示例将帮助您测试核心匹配玩家流程,即:
将我们的撮合器实施到您的游戏中需要五个步骤:
第一步是创建账户并使用我们的 PvE 游戏示例。瞧,您(在技术上)已经完成了一半!您只需要将撮合器集成到游戏中即可(参见步骤 5)。
现在,绝不应该盲目套用在网上找到的 JSON 示例,因此强烈建议针对您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“使用指南”,深入介绍了各项匹配规则的功能(“探索配置”)。
步骤 3(“查看实例详情”)涵盖了您个人特定的撮合器,以确保其已部署并与您的游戏设计协同工作。
步骤 4 正如其名称所示(“4. 测试票证 API”),主要用于测试撮合器是否收到了来自玩家的匹配请求(称为票证)。
步骤 5(“在游戏中集成匹配”)重点介绍了如何在您的引擎项目中集成撮合器。
如果您在排查故障时遇到难题,我们深入的学习中心提供了更多故障排除提示。
1. 设置免费套餐
注册您的免费 Edgegap 账户,并前往 撮合器控制面板页面。
在该页面中,先点击 Create Matchmaker,然后输入:
撮合器的名称——这纯粹供您自己参考,例如
quickstart-dev,然后,为您的 PvE 游戏上传以下简单示例作为 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 } } } } } } }
(温馨提示:请务必修改应用程序 name 和 version,使其与您的 应用程序和版本匹配!)
如果没有出现验证错误,请点击 Create and Start 并等待流程完成。这将启动一个新的免费集群,其中包含您的简单示例撮合器。
现在您可以继续执行下一步。
2. 探索配置
独特的多人 PvE 游戏规则
专门针对 PvE 游戏,您可以针对游戏模式特定规则和设置定义多个 匹配配置文件:
让玩家提供他们的地图偏好,并选择适合所有人的地图,
让玩家选择特定的游戏难度,以契合每个人的技能水平,
限制玩家等级差异,使游戏进度相近的玩家匹配在一起,
通过 组队加入 来预设大厅或填补队伍而不超出队伍规模上限,
允许更高的延迟,以便更快撮合对局并更好地兼顾细粒度的玩家偏好,
当允许更多玩家时,使用不同的 🏷️ 应用程序版本 分配更多 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 将仅考虑在针对 Ping 信标测得的特定 ping 值 difference 范围内的匹配。这为分割玩家群体提供了一个“软性”解决方案,使得能够与邻近区域进行匹配,尤其可以提高人口较少区域的匹配速度。使用 max_latency 可防止与距离较远的玩家进行匹配。
现在您可以继续执行下一步。
我们上面的示例 beacons 规则最初设置为 "difference": 50, "max_latency": 200:
Alice 和 Bob 将会匹配成功,因为 Beijing 被舍弃(>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 对应我们的某一 定价层级。
API URL 将由游戏客户端和游戏服务器用于与 Gen2 通信。
Swagger URL 是我们提供的用于探索 API 规范模式的便捷 openAPI 规范图形界面。
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 应用程序 并登录您的免费账户。
导入上一步中的 swagger.json 文件:
保持选中 Postman Collection,
选择 View Import Settings 并将设置 Parameter generation 更改为 Example。
确认导入,这将在左侧集合列表中显示一个名为 Matchmaker 的新集合。

View more actions,打开选项卡 Authorization 并选择:
Auth Type - API Key,
Key - “Authorization”
Value - 在此处插入您的 AuthToken 值,
Add to - Header。
按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。Postman 选项卡中的橙色圆点应该会消失。
在 Matchmaker 集合中,选择 tickets 和 Create a matchmaking ticket,这将打开一个新选项卡。
选择选项卡 Body 以预览您的玩家票证请求:
注意 player_ip 设置为 null——这将自动使用添加到您请求中的 IP 地址(有关替代方案,请参阅 服务器到服务器集成),
profile指的是您的 匹配配置文件,attributes包含您的撮合器规则的值,在此例中为latencies规则,规则
player_count是唯一不需要在玩家票证中包含任何属性的规则。
注意:请务必参考示例的 Swagger 导入配置。
点击 Send 并查看对您的玩家票证请求的响应:
id是您唯一的匹配票证 ID,请妥善保存以备日后检查票证状态,profile确认所选的 匹配配置文件,group_id是发放给每张票证的唯一组 ID,单人玩家表示为大小为 1 的组,有关与好友或大厅一起匹配的信息,请参阅 组队加入,
player_ip是解析出的玩家公共 IP 地址,无论使用何种识别方式,assignment设置为 null,表示票证尚未匹配或尚未分配给服务器,created_at提供有关玩家票证创建时间的信息,供游戏 UI 使用,status指示票证的当前状态,所有票证初始均为SEARCHING(详情请参阅 匹配流程)。
再次点击 Send 创建第二张票证,以便我们的两位玩家匹配成功并启动服务器。
在 Matchmaker 集合中,选择 {ticketId} 和 Read a matchmaking ticket。
输入上一步响应中的票证 ID,然后点击 Send。

查看玩家票证的更新分配情况:
状态首先变更为
MATCH_FOUND,同时保持assignment设置为null,以表明玩家已匹配成功且正在分配服务器,

再次点击 Send 以检查您的票证,并查看玩家票证的更新分配情况:
状态变更为
HOST_ASSIGNED,且assignment包含已分配服务器的详细信息。
注意每个部署都标有所有票证 ID 和配置文件,以便增强可追溯性。

尝试从您的游戏客户端连接到分配的服务器。
一旦您确认能够毫无问题地连接到部署并完成测试,请停止您的部署,以释放账户中用于下一次构建的容量。
现在您可以继续执行下一步。
5. 在游戏中集成撮合器
Edgegap 的匹配集成了:
对于在游戏客户端中,我们建议在整个匹配流程中通过游戏内 UI 向玩家提供票证状态更新,以获得最佳玩家体验。请参阅:
Edgegap - Unity Gen2 匹配 SDK,
导入简单示例 并根据您的需求进行自定义,
Betide Studio - Unreal Engine Edgegap 集成套件,
下载示例项目 并根据您的需求进行自定义。
在游戏客户端中,确保处理不可重试的错误:
HTTP 404 Not Found- 票证已被删除,HTTP 500 Internal Server Error- 服务暂时中断。
在游戏服务器中,处理玩家偏好和初始服务器上下文。无需 API 集成:
读取 注入的环境变量 (Gen2) 以检索初始玩家的匹配数据。
读取 注入的环境变量(应用程序版本) 以获取特定于版本的参数、设置(玩家容量)和机密信息。
读取 注入的环境变量(部署) 以获取部署信息,例如 IP 地址、位置等。
一旦玩家连接,游戏服务器和游戏客户端就会启动加载场景以执行同步步骤(例如选择并加载地图/场景/关卡)。我们建议使用完备的 3D 场景、类似大厅的社交 UI 或带有进度条的加载屏幕,以指示初始化正在进行中。
一旦游戏客户端完全加载,玩家就会加载/传送至主游戏场景。
可选地,游戏服务器可以创建并管理补位和玩家容量(添加或替换离开的玩家)。
在以下情况下,确保使用 注入的 DELETE_URL 正确停止您的部署:
没有玩家加入比赛,
所有玩家均已离开比赛,
比赛正常结束。
祝贺您,您已完成 Edgegap 撮合器集成!如果您想了解更多信息,请在我们的学习中心中阅读相关的所有内容。
如何将匹配集成到您的 PvE 多人游戏中
-> 本文基于匹配文档。如果您遇到问题或差异,请务必参考原始指南,因为其更新更为频繁。
以下示例将帮助您测试核心匹配玩家流程,即:
将我们的撮合器实施到您的游戏中需要五个步骤:
第一步是创建账户并使用我们的 PvE 游戏示例。瞧,您(在技术上)已经完成了一半!您只需要将撮合器集成到游戏中即可(参见步骤 5)。
现在,绝不应该盲目套用在网上找到的 JSON 示例,因此强烈建议针对您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“使用指南”,深入介绍了各项匹配规则的功能(“探索配置”)。
步骤 3(“查看实例详情”)涵盖了您个人特定的撮合器,以确保其已部署并与您的游戏设计协同工作。
步骤 4 正如其名称所示(“4. 测试票证 API”),主要用于测试撮合器是否收到了来自玩家的匹配请求(称为票证)。
步骤 5(“在游戏中集成匹配”)重点介绍了如何在您的引擎项目中集成撮合器。
如果您在排查故障时遇到难题,我们深入的学习中心提供了更多故障排除提示。
1. 设置免费套餐
注册您的免费 Edgegap 账户,并前往 撮合器控制面板页面。
在该页面中,先点击 Create Matchmaker,然后输入:
撮合器的名称——这纯粹供您自己参考,例如
quickstart-dev,然后,为您的 PvE 游戏上传以下简单示例作为 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 } } } } } } }
(温馨提示:请务必修改应用程序 name 和 version,使其与您的 应用程序和版本匹配!)
如果没有出现验证错误,请点击 Create and Start 并等待流程完成。这将启动一个新的免费集群,其中包含您的简单示例撮合器。
现在您可以继续执行下一步。
2. 探索配置
独特的多人 PvE 游戏规则
专门针对 PvE 游戏,您可以针对游戏模式特定规则和设置定义多个 匹配配置文件:
让玩家提供他们的地图偏好,并选择适合所有人的地图,
让玩家选择特定的游戏难度,以契合每个人的技能水平,
限制玩家等级差异,使游戏进度相近的玩家匹配在一起,
通过 组队加入 来预设大厅或填补队伍而不超出队伍规模上限,
允许更高的延迟,以便更快撮合对局并更好地兼顾细粒度的玩家偏好,
当允许更多玩家时,使用不同的 🏷️ 应用程序版本 分配更多 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 将仅考虑在针对 Ping 信标测得的特定 ping 值 difference 范围内的匹配。这为分割玩家群体提供了一个“软性”解决方案,使得能够与邻近区域进行匹配,尤其可以提高人口较少区域的匹配速度。使用 max_latency 可防止与距离较远的玩家进行匹配。
现在您可以继续执行下一步。
我们上面的示例 beacons 规则最初设置为 "difference": 50, "max_latency": 200:
Alice 和 Bob 将会匹配成功,因为 Beijing 被舍弃(>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 对应我们的某一 定价层级。
API URL 将由游戏客户端和游戏服务器用于与 Gen2 通信。
Swagger URL 是我们提供的用于探索 API 规范模式的便捷 openAPI 规范图形界面。
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 应用程序 并登录您的免费账户。
导入上一步中的 swagger.json 文件:
保持选中 Postman Collection,
选择 View Import Settings 并将设置 Parameter generation 更改为 Example。
确认导入,这将在左侧集合列表中显示一个名为 Matchmaker 的新集合。

View more actions,打开选项卡 Authorization 并选择:
Auth Type - API Key,
Key - “Authorization”
Value - 在此处插入您的 AuthToken 值,
Add to - Header。
按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。Postman 选项卡中的橙色圆点应该会消失。
在 Matchmaker 集合中,选择 tickets 和 Create a matchmaking ticket,这将打开一个新选项卡。
选择选项卡 Body 以预览您的玩家票证请求:
注意 player_ip 设置为 null——这将自动使用添加到您请求中的 IP 地址(有关替代方案,请参阅 服务器到服务器集成),
profile指的是您的 匹配配置文件,attributes包含您的撮合器规则的值,在此例中为latencies规则,规则
player_count是唯一不需要在玩家票证中包含任何属性的规则。
注意:请务必参考示例的 Swagger 导入配置。
点击 Send 并查看对您的玩家票证请求的响应:
id是您唯一的匹配票证 ID,请妥善保存以备日后检查票证状态,profile确认所选的 匹配配置文件,group_id是发放给每张票证的唯一组 ID,单人玩家表示为大小为 1 的组,有关与好友或大厅一起匹配的信息,请参阅 组队加入,
player_ip是解析出的玩家公共 IP 地址,无论使用何种识别方式,assignment设置为 null,表示票证尚未匹配或尚未分配给服务器,created_at提供有关玩家票证创建时间的信息,供游戏 UI 使用,status指示票证的当前状态,所有票证初始均为SEARCHING(详情请参阅 匹配流程)。
再次点击 Send 创建第二张票证,以便我们的两位玩家匹配成功并启动服务器。
在 Matchmaker 集合中,选择 {ticketId} 和 Read a matchmaking ticket。
输入上一步响应中的票证 ID,然后点击 Send。

查看玩家票证的更新分配情况:
状态首先变更为
MATCH_FOUND,同时保持assignment设置为null,以表明玩家已匹配成功且正在分配服务器,

再次点击 Send 以检查您的票证,并查看玩家票证的更新分配情况:
状态变更为
HOST_ASSIGNED,且assignment包含已分配服务器的详细信息。
注意每个部署都标有所有票证 ID 和配置文件,以便增强可追溯性。

尝试从您的游戏客户端连接到分配的服务器。
一旦您确认能够毫无问题地连接到部署并完成测试,请停止您的部署,以释放账户中用于下一次构建的容量。
现在您可以继续执行下一步。
5. 在游戏中集成撮合器
Edgegap 的匹配集成了:
对于在游戏客户端中,我们建议在整个匹配流程中通过游戏内 UI 向玩家提供票证状态更新,以获得最佳玩家体验。请参阅:
Edgegap - Unity Gen2 匹配 SDK,
导入简单示例 并根据您的需求进行自定义,
Betide Studio - Unreal Engine Edgegap 集成套件,
下载示例项目 并根据您的需求进行自定义。
在游戏客户端中,确保处理不可重试的错误:
HTTP 404 Not Found- 票证已被删除,HTTP 500 Internal Server Error- 服务暂时中断。
在游戏服务器中,处理玩家偏好和初始服务器上下文。无需 API 集成:
读取 注入的环境变量 (Gen2) 以检索初始玩家的匹配数据。
读取 注入的环境变量(应用程序版本) 以获取特定于版本的参数、设置(玩家容量)和机密信息。
读取 注入的环境变量(部署) 以获取部署信息,例如 IP 地址、位置等。
一旦玩家连接,游戏服务器和游戏客户端就会启动加载场景以执行同步步骤(例如选择并加载地图/场景/关卡)。我们建议使用完备的 3D 场景、类似大厅的社交 UI 或带有进度条的加载屏幕,以指示初始化正在进行中。
一旦游戏客户端完全加载,玩家就会加载/传送至主游戏场景。
可选地,游戏服务器可以创建并管理补位和玩家容量(添加或替换离开的玩家)。
在以下情况下,确保使用 注入的 DELETE_URL 正确停止您的部署:
没有玩家加入比赛,
所有玩家均已离开比赛,
比赛正常结束。
祝贺您,您已完成 Edgegap 撮合器集成!如果您想了解更多信息,请在我们的学习中心中阅读相关的所有内容。
如何将匹配集成到您的 PvE 多人游戏中
-> 本文基于匹配文档。如果您遇到问题或差异,请务必参考原始指南,因为其更新更为频繁。
以下示例将帮助您测试核心匹配玩家流程,即:
将我们的撮合器实施到您的游戏中需要五个步骤:
第一步是创建账户并使用我们的 PvE 游戏示例。瞧,您(在技术上)已经完成了一半!您只需要将撮合器集成到游戏中即可(参见步骤 5)。
现在,绝不应该盲目套用在网上找到的 JSON 示例,因此强烈建议针对您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“使用指南”,深入介绍了各项匹配规则的功能(“探索配置”)。
步骤 3(“查看实例详情”)涵盖了您个人特定的撮合器,以确保其已部署并与您的游戏设计协同工作。
步骤 4 正如其名称所示(“4. 测试票证 API”),主要用于测试撮合器是否收到了来自玩家的匹配请求(称为票证)。
步骤 5(“在游戏中集成匹配”)重点介绍了如何在您的引擎项目中集成撮合器。
如果您在排查故障时遇到难题,我们深入的学习中心提供了更多故障排除提示。
1. 设置免费套餐
注册您的免费 Edgegap 账户,并前往 撮合器控制面板页面。
在该页面中,先点击 Create Matchmaker,然后输入:
撮合器的名称——这纯粹供您自己参考,例如
quickstart-dev,然后,为您的 PvE 游戏上传以下简单示例作为 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 } } } } } } }
(温馨提示:请务必修改应用程序 name 和 version,使其与您的 应用程序和版本匹配!)
如果没有出现验证错误,请点击 Create and Start 并等待流程完成。这将启动一个新的免费集群,其中包含您的简单示例撮合器。
现在您可以继续执行下一步。
2. 探索配置
独特的多人 PvE 游戏规则
专门针对 PvE 游戏,您可以针对游戏模式特定规则和设置定义多个 匹配配置文件:
让玩家提供他们的地图偏好,并选择适合所有人的地图,
让玩家选择特定的游戏难度,以契合每个人的技能水平,
限制玩家等级差异,使游戏进度相近的玩家匹配在一起,
通过 组队加入 来预设大厅或填补队伍而不超出队伍规模上限,
允许更高的延迟,以便更快撮合对局并更好地兼顾细粒度的玩家偏好,
当允许更多玩家时,使用不同的 🏷️ 应用程序版本 分配更多 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 将仅考虑在针对 Ping 信标测得的特定 ping 值 difference 范围内的匹配。这为分割玩家群体提供了一个“软性”解决方案,使得能够与邻近区域进行匹配,尤其可以提高人口较少区域的匹配速度。使用 max_latency 可防止与距离较远的玩家进行匹配。
现在您可以继续执行下一步。
我们上面的示例 beacons 规则最初设置为 "difference": 50, "max_latency": 200:
Alice 和 Bob 将会匹配成功,因为 Beijing 被舍弃(>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 对应我们的某一 定价层级。
API URL 将由游戏客户端和游戏服务器用于与 Gen2 通信。
Swagger URL 是我们提供的用于探索 API 规范模式的便捷 openAPI 规范图形界面。
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 应用程序 并登录您的免费账户。
导入上一步中的 swagger.json 文件:
保持选中 Postman Collection,
选择 View Import Settings 并将设置 Parameter generation 更改为 Example。
确认导入,这将在左侧集合列表中显示一个名为 Matchmaker 的新集合。

View more actions,打开选项卡 Authorization 并选择:
Auth Type - API Key,
Key - “Authorization”
Value - 在此处插入您的 AuthToken 值,
Add to - Header。
按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。Postman 选项卡中的橙色圆点应该会消失。
在 Matchmaker 集合中,选择 tickets 和 Create a matchmaking ticket,这将打开一个新选项卡。
选择选项卡 Body 以预览您的玩家票证请求:
注意 player_ip 设置为 null——这将自动使用添加到您请求中的 IP 地址(有关替代方案,请参阅 服务器到服务器集成),
profile指的是您的 匹配配置文件,attributes包含您的撮合器规则的值,在此例中为latencies规则,规则
player_count是唯一不需要在玩家票证中包含任何属性的规则。
注意:请务必参考示例的 Swagger 导入配置。
点击 Send 并查看对您的玩家票证请求的响应:
id是您唯一的匹配票证 ID,请妥善保存以备日后检查票证状态,profile确认所选的 匹配配置文件,group_id是发放给每张票证的唯一组 ID,单人玩家表示为大小为 1 的组,有关与好友或大厅一起匹配的信息,请参阅 组队加入,
player_ip是解析出的玩家公共 IP 地址,无论使用何种识别方式,assignment设置为 null,表示票证尚未匹配或尚未分配给服务器,created_at提供有关玩家票证创建时间的信息,供游戏 UI 使用,status指示票证的当前状态,所有票证初始均为SEARCHING(详情请参阅 匹配流程)。
再次点击 Send 创建第二张票证,以便我们的两位玩家匹配成功并启动服务器。
在 Matchmaker 集合中,选择 {ticketId} 和 Read a matchmaking ticket。
输入上一步响应中的票证 ID,然后点击 Send。

查看玩家票证的更新分配情况:
状态首先变更为
MATCH_FOUND,同时保持assignment设置为null,以表明玩家已匹配成功且正在分配服务器,

再次点击 Send 以检查您的票证,并查看玩家票证的更新分配情况:
状态变更为
HOST_ASSIGNED,且assignment包含已分配服务器的详细信息。
注意每个部署都标有所有票证 ID 和配置文件,以便增强可追溯性。

尝试从您的游戏客户端连接到分配的服务器。
一旦您确认能够毫无问题地连接到部署并完成测试,请停止您的部署,以释放账户中用于下一次构建的容量。
现在您可以继续执行下一步。
5. 在游戏中集成撮合器
Edgegap 的匹配集成了:
对于在游戏客户端中,我们建议在整个匹配流程中通过游戏内 UI 向玩家提供票证状态更新,以获得最佳玩家体验。请参阅:
Edgegap - Unity Gen2 匹配 SDK,
导入简单示例 并根据您的需求进行自定义,
Betide Studio - Unreal Engine Edgegap 集成套件,
下载示例项目 并根据您的需求进行自定义。
在游戏客户端中,确保处理不可重试的错误:
HTTP 404 Not Found- 票证已被删除,HTTP 500 Internal Server Error- 服务暂时中断。
在游戏服务器中,处理玩家偏好和初始服务器上下文。无需 API 集成:
读取 注入的环境变量 (Gen2) 以检索初始玩家的匹配数据。
读取 注入的环境变量(应用程序版本) 以获取特定于版本的参数、设置(玩家容量)和机密信息。
读取 注入的环境变量(部署) 以获取部署信息,例如 IP 地址、位置等。
一旦玩家连接,游戏服务器和游戏客户端就会启动加载场景以执行同步步骤(例如选择并加载地图/场景/关卡)。我们建议使用完备的 3D 场景、类似大厅的社交 UI 或带有进度条的加载屏幕,以指示初始化正在进行中。
一旦游戏客户端完全加载,玩家就会加载/传送至主游戏场景。
可选地,游戏服务器可以创建并管理补位和玩家容量(添加或替换离开的玩家)。
在以下情况下,确保使用 注入的 DELETE_URL 正确停止您的部署:
没有玩家加入比赛,
所有玩家均已离开比赛,
比赛正常结束。
祝贺您,您已完成 Edgegap 撮合器集成!如果您想了解更多信息,请在我们的学习中心中阅读相关的所有内容。
如何将匹配集成到您的 PvE 多人游戏中
-> 本文基于匹配文档。如果您遇到问题或差异,请务必参考原始指南,因为其更新更为频繁。
以下示例将帮助您测试核心匹配玩家流程,即:
将我们的撮合器实施到您的游戏中需要五个步骤:
第一步是创建账户并使用我们的 PvE 游戏示例。瞧,您(在技术上)已经完成了一半!您只需要将撮合器集成到游戏中即可(参见步骤 5)。
现在,绝不应该盲目套用在网上找到的 JSON 示例,因此强烈建议针对您的回合制游戏调整上述规则。步骤 2(“探索配置”)是我们的“使用指南”,深入介绍了各项匹配规则的功能(“探索配置”)。
步骤 3(“查看实例详情”)涵盖了您个人特定的撮合器,以确保其已部署并与您的游戏设计协同工作。
步骤 4 正如其名称所示(“4. 测试票证 API”),主要用于测试撮合器是否收到了来自玩家的匹配请求(称为票证)。
步骤 5(“在游戏中集成匹配”)重点介绍了如何在您的引擎项目中集成撮合器。
如果您在排查故障时遇到难题,我们深入的学习中心提供了更多故障排除提示。
1. 设置免费套餐
注册您的免费 Edgegap 账户,并前往 撮合器控制面板页面。
在该页面中,先点击 Create Matchmaker,然后输入:
撮合器的名称——这纯粹供您自己参考,例如
quickstart-dev,然后,为您的 PvE 游戏上传以下简单示例作为 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 } } } } } } }
(温馨提示:请务必修改应用程序 name 和 version,使其与您的 应用程序和版本匹配!)
如果没有出现验证错误,请点击 Create and Start 并等待流程完成。这将启动一个新的免费集群,其中包含您的简单示例撮合器。
现在您可以继续执行下一步。
2. 探索配置
独特的多人 PvE 游戏规则
专门针对 PvE 游戏,您可以针对游戏模式特定规则和设置定义多个 匹配配置文件:
让玩家提供他们的地图偏好,并选择适合所有人的地图,
让玩家选择特定的游戏难度,以契合每个人的技能水平,
限制玩家等级差异,使游戏进度相近的玩家匹配在一起,
通过 组队加入 来预设大厅或填补队伍而不超出队伍规模上限,
允许更高的延迟,以便更快撮合对局并更好地兼顾细粒度的玩家偏好,
当允许更多玩家时,使用不同的 🏷️ 应用程序版本 分配更多 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 将仅考虑在针对 Ping 信标测得的特定 ping 值 difference 范围内的匹配。这为分割玩家群体提供了一个“软性”解决方案,使得能够与邻近区域进行匹配,尤其可以提高人口较少区域的匹配速度。使用 max_latency 可防止与距离较远的玩家进行匹配。
现在您可以继续执行下一步。
我们上面的示例 beacons 规则最初设置为 "difference": 50, "max_latency": 200:
Alice 和 Bob 将会匹配成功,因为 Beijing 被舍弃(>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 对应我们的某一 定价层级。
API URL 将由游戏客户端和游戏服务器用于与 Gen2 通信。
Swagger URL 是我们提供的用于探索 API 规范模式的便捷 openAPI 规范图形界面。
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 应用程序 并登录您的免费账户。
导入上一步中的 swagger.json 文件:
保持选中 Postman Collection,
选择 View Import Settings 并将设置 Parameter generation 更改为 Example。
确认导入,这将在左侧集合列表中显示一个名为 Matchmaker 的新集合。

View more actions,打开选项卡 Authorization 并选择:
Auth Type - API Key,
Key - “Authorization”
Value - 在此处插入您的 AuthToken 值,
Add to - Header。
按 (CTRL/CMD+S) 或点击“保存”图标以保存更改。Postman 选项卡中的橙色圆点应该会消失。
在 Matchmaker 集合中,选择 tickets 和 Create a matchmaking ticket,这将打开一个新选项卡。
选择选项卡 Body 以预览您的玩家票证请求:
注意 player_ip 设置为 null——这将自动使用添加到您请求中的 IP 地址(有关替代方案,请参阅 服务器到服务器集成),
profile指的是您的 匹配配置文件,attributes包含您的撮合器规则的值,在此例中为latencies规则,规则
player_count是唯一不需要在玩家票证中包含任何属性的规则。
注意:请务必参考示例的 Swagger 导入配置。
点击 Send 并查看对您的玩家票证请求的响应:
id是您唯一的匹配票证 ID,请妥善保存以备日后检查票证状态,profile确认所选的 匹配配置文件,group_id是发放给每张票证的唯一组 ID,单人玩家表示为大小为 1 的组,有关与好友或大厅一起匹配的信息,请参阅 组队加入,
player_ip是解析出的玩家公共 IP 地址,无论使用何种识别方式,assignment设置为 null,表示票证尚未匹配或尚未分配给服务器,created_at提供有关玩家票证创建时间的信息,供游戏 UI 使用,status指示票证的当前状态,所有票证初始均为SEARCHING(详情请参阅 匹配流程)。
再次点击 Send 创建第二张票证,以便我们的两位玩家匹配成功并启动服务器。
在 Matchmaker 集合中,选择 {ticketId} 和 Read a matchmaking ticket。
输入上一步响应中的票证 ID,然后点击 Send。

查看玩家票证的更新分配情况:
状态首先变更为
MATCH_FOUND,同时保持assignment设置为null,以表明玩家已匹配成功且正在分配服务器,

再次点击 Send 以检查您的票证,并查看玩家票证的更新分配情况:
状态变更为
HOST_ASSIGNED,且assignment包含已分配服务器的详细信息。
注意每个部署都标有所有票证 ID 和配置文件,以便增强可追溯性。

尝试从您的游戏客户端连接到分配的服务器。
一旦您确认能够毫无问题地连接到部署并完成测试,请停止您的部署,以释放账户中用于下一次构建的容量。
现在您可以继续执行下一步。
5. 在游戏中集成撮合器
Edgegap 的匹配集成了:
对于在游戏客户端中,我们建议在整个匹配流程中通过游戏内 UI 向玩家提供票证状态更新,以获得最佳玩家体验。请参阅:
Edgegap - Unity Gen2 匹配 SDK,
导入简单示例 并根据您的需求进行自定义,
Betide Studio - Unreal Engine Edgegap 集成套件,
下载示例项目 并根据您的需求进行自定义。
在游戏客户端中,确保处理不可重试的错误:
HTTP 404 Not Found- 票证已被删除,HTTP 500 Internal Server Error- 服务暂时中断。
在游戏服务器中,处理玩家偏好和初始服务器上下文。无需 API 集成:
读取 注入的环境变量 (Gen2) 以检索初始玩家的匹配数据。
读取 注入的环境变量(应用程序版本) 以获取特定于版本的参数、设置(玩家容量)和机密信息。
读取 注入的环境变量(部署) 以获取部署信息,例如 IP 地址、位置等。
一旦玩家连接,游戏服务器和游戏客户端就会启动加载场景以执行同步步骤(例如选择并加载地图/场景/关卡)。我们建议使用完备的 3D 场景、类似大厅的社交 UI 或带有进度条的加载屏幕,以指示初始化正在进行中。
一旦游戏客户端完全加载,玩家就会加载/传送至主游戏场景。
可选地,游戏服务器可以创建并管理补位和玩家容量(添加或替换离开的玩家)。
在以下情况下,确保使用 注入的 DELETE_URL 正确停止您的部署:
没有玩家加入比赛,
所有玩家均已离开比赛,
比赛正常结束。
祝贺您,您已完成 Edgegap 撮合器集成!如果您想了解更多信息,请在我们的学习中心中阅读相关的所有内容。
书写者
Edgegap团队






