如何为社交多人游戏添加配对功能

关键洞察

关键洞察

关键洞察

Edgegap 的 匹配器 是一个完全托管、可无限定制的匹配系统,能够最优地将全球玩家分组——在您开发社交多人游戏期间使用是免费的。

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

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

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

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

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

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

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

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

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

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

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

  2. 现在,您永远不应该盲目遵循在互联网上找到的JSON示例,因此强烈建议您将上述规则适应您的回合制游戏。第2步(“探索配置”)是我们的“如何阅读”,介绍每个对局配对规则功能的作用(“探索配置”)。

  3. 第3步(“审查实例详细信息”)涵盖您的个人、具体对局配对,以确保它部署并与您的游戏设计兼容。

  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": {
    "social-example": {
      "application": {
        "name": "my-game-server==>CHANGE-THIS",
        "version": "2024.01.30-16.23.00-UTC==>CHANGE-THIS"
      },
      "rules": {
        "initial": {
          "match_size": {
            "attributes": {
              "team_count": 1,
              "team_size": 30
            },
            "type": "player_count"
          },
          "beacons": {
            "attributes": {
              "difference": 80,
              "max_latency": 80
            },
            "type": "latencies"
          },
          "selected_region": {
            "type": "string_equality",
            "attributes": {
              "overlap": 1
            }
          },
          "selected_mode": {
            "type": "intersection",
            "attributes": {
              "overlap": 1
            }
          }
        },
        "expansions": {
          "10": {
            "beacons": {
              "difference": 100,
              "max_latency": 100
            },
            "match_size": {
              "team_count": 1,
              "team_size": 20
            }
          },
          "15": {
            "beacons": {
              "difference": 120,
              "max_latency": 120
            },
            "match_size": {
              "team_count": 1,
              "team_size": 10
            }
          },
          "25": {
            "match_size": {
              "team_count": 1,
              "team_size": 4
            }
          },
          "30": {
            "match_size": {
              "team_count": 1,
              "team_size": 1
            }
          }
        }
      }
    }
  }
}

(请谨记确保更改应用程序名称版本以匹配您的应用程序和版本!)

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

您现在可以继续下一步。

2. 探索配置

独特的多人社交游戏规则

团队数量为1,团队规模为50,每场比赛需要50名玩家(所有玩家都在同一个团队)。

专门为社交游戏定义對局配對配置文件用于为游戏模式规定规则和设置:

  • 让玩家提供他们的游戏模式偏好并选择适合所有人的模式,

  • 组队加入用于预制大厅或补充团队而不超过团队规模,

  • 添加🗺️ 地区选择UI以限制对手到指定地区,

  • 允许较高的延迟以便更快匹配更多玩家,

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

扩展限制以确保快速匹配:

  • 快速放宽延迟限制以找到更多玩家,

  • 慢慢减少团队规模以需要更少的玩家并尽快开始游戏,

    • 可选地,您可以让服务器填补空位给AI玩家,

  • 如果没有找到队友,则单独启动游戏,并使用填充以稍后添加玩家,

    • 这将允许玩家加入现有比赛而不是新比赛以最大化社交互动。

语义版本控制

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

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

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

  • patch 版本包括bug修复和小改进。

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

确保意外的客户端崩溃或放弃票证不会长期存在并占用您的对局配对资源,票证将在ticket_expiration_period后取消,状态变为CANCELLED,然后在ticket_removal_period后永久删除。

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

對局配對规则 在初始规则集中必须满足以便将玩家分组在一起,每个由三个属性定义:

  • 您选择的名称,例如- 比赛规模

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

  • 最后是运算符属性,例如 团队计数 或 团队规模

玩家计数规则

这是一个特殊的规则定义需要多少玩家匹配以开始指派:

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

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

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

请注意,"玩家计数"规则不可或许在初始配置规则中定义一次

延迟规则

使用此规则为所有玩家提供尽可能最低的ping。客户端测量并提交他们的往返时间(ping)与所有可用信标后,Gen2仅考虑特定差异内的匹配,针对Ping信标。这提供了一个“软”解决方案来拆分您的玩家基础,启用与邻近地区的匹配,特别是提高人口稀少地区的匹配速度。使用max_latency防止与远离玩家匹配。

您现在可以继续下一步。

我们上面示例中的信标规则,初始设置"difference": 50, "max_latency": 200

  • 200),其余| A-B | >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}。

    200),其余| A-B | >


  • Charlie和Dave将不匹配,因为对于达拉斯信标| 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. 审查实例详情

在我们的仪表盘中审查您的新对局配对详情,一旦初始化:

状态表示服务健康,可以是ONLINE,OFFLINE或ERROR。

  • 标识符帮助Edgegap员工快速找到您的对局配对,如果您需要帮助进行故障排除。

  • 开始时间用于跟踪最新更新时间。

  • 大小对应我们的价格层之一。

  • API URL将由游戏客户端和游戏服务器用于与Gen2的通信。

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

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

要使用API测试您的新对局配对,您将需要Swagger URL,API URL和授权令牌

您现在可以继续下一步。

4. 测试票证API

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

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

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

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

导入您的swagger.json文件:

  • 保持Postman集合选中,

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

确认导入,结果将是一个新的集合出现在左侧的集合列表中,标题为对局配对。

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

  • 授权类型 API密钥

  • 键 “授权

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

  • 添加到 标头

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

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

选择选项卡主体以预览您的玩家票证请求

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

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

  • 属性包括适用于您的对局配对规则的值,此处为延迟规则,

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

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

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

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

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

  • 群组_id是发给每个票证的唯一组ID,单独玩家表示为1组,

    • 请参阅组队加入用于与您的朋友或大厅进行对局配对的时候,

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

  • 指派设置为null表示票证尚未匹配或指派给服务器,

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

  • 状态表示票证的当前状态,所有票证从搜索中开始(请参阅对局配对过程以了解详情)。

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

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

从前一步响应中输入票证ID并点击发送

查看您玩家票证的更新后的指派:

  • 状态变更为找到匹配,同时保留指派设置为null表示玩家已匹配并有服务器正在分配,

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

  • 状态变更为主机分配指派包含已分配服务器的详细信息。

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

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