Amazon GameLift FlexMatch 的工作原理 - Amazon GameLift
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon GameLift FlexMatch 的工作原理

本主题概述了 GameLift FlexMatch 服务,包括 FlexMatch 系统的核心组件以及它们的交互方式。

您可以将 FlexMatch 与使用 GameLift 托管托管托管托管托管托管的游戏或使用其他托管解决方案的游戏结合使用。在 GameLift 服务器(包括 实时服务器)上托管的游戏使用集成的 GameLift 服务自动找到可用的游戏服务器并为对战游戏启动游戏会话。将 FlexMatch 作为独立服务的游戏(包括 GameLift FleetIQ)必须与现有托管系统协调,才能分配托管资源并为对战游戏启动游戏会话。

有关为游戏设置 FlexMatch 的详细指导,请参阅

对战组件

对战系统包括以下部分或全部组件。FlexMatch

GameLift 组件

这些是控制 GameLift 服务如何为您的游戏执行对战的 FlexMatch 资源。它们是使用 GameLift 工具(包括控制台和 AWS CLI)创建和维护的,或者以编程方式使用适用于 GameLift 的 AWS 开发工具包创建和维护的。

  • FlexMatch 对战配置(也称为对战构建器) 对战构建器是为游戏自定义对战过程的一组配置值。–一个游戏可以有多个对战构建器,每个对战构建器针对所需的不同游戏模式或体验进行配置。当您的游戏向 FlexMatch 发送对战请求时,它会指定要使用的对战构建器。

  • FlexMatch 对战规则集 – 规则集包含为潜在对战游戏评估玩家并批准或拒绝所需的所有信息。规则集定义对战游戏的团队结构,声明用于评估的玩家属性,并提供描述可接受对战游戏标准的规则。规则可应用于单个玩家、团队或整个对战游戏。例如,规则可能要求对战游戏中的每个玩家选择相同的游戏地图,也可能要求所有团队具有相似的玩家技能平均值。

  • GameLift 游戏会话队列(对于仅具有 FlexMatch 托管托管托管的 GameLift) 游戏会话队列查找可用的托管资源并为对战游戏启动新的游戏会话。–队列的配置确定 GameLift 查找可用托管资源的位置以及如何为对战选择最佳可用主机。

自定义组件

以下组件包含完整 FlexMatch 系统所需的功能,您必须根据游戏架构实施该功能。

  • 用于对战的玩家界面 此界面使玩家能够加入对战游戏。–至少,它通过客户端对战服务组件发起对战请求,并根据对战过程提供特定于玩家的数据,例如技能级别和延迟数据。

    注意

    作为最佳实践,与 FlexMatch 服务的通信应由后端服务完成,而不是来自游戏客户端。

  • 客户端对战服务 此服务用于填写玩家从玩家界面加入请求,生成对战请求,并将其发送到 – 服务的字段。FlexMatch对于正在处理的请求,它监控对战事件,跟踪对战状态并根据需要执行操作。根据您在游戏中管理游戏会话托管的方式,此服务可能会将游戏会话连接信息返回给玩家。此组件结合使用 AWS 开发工具包和 GameLift API 与 FlexMatch 服务进行通信。

  • 对战放置服务(仅适用于作为独立服务的 FlexMatch) 此组件可与您的现有游戏托管系统配合使用,以查找可用的托管资源并为对战启动新的游戏会话。–该组件必须获取对战结果并提取启动新游戏会话所需的信息,包括玩家 IDs、属性和对战中所有玩家的团队分配。

FlexMatch 对战过程

本主题介绍了一个基本对战方案以及各种游戏组件与 FlexMatch 服务之间的交互。

为玩家请求对战

使用您的游戏客户端的玩家单击“加入游戏”按钮。此操作会导致您的客户端对战服务向 FlexMatch 发送对战请求。该请求标识在完成请求时使用的 FlexMatch 对战构建器。该请求还包括您的自定义对战构建器所需的玩家信息,如技能级别、游戏首选项或地理延迟数据。您可以为一个玩家或多个玩家发出对战请求。

将请求添加到对战池

当 FlexMatch 收到对战请求时,它会生成对战票证并将其添加到对战构建器的票证池中。票证将保留在池中,直到匹配或达到最大时间限制。您的客户端对战服务会定期收到有关对战事件的通知,包括票证状态更改。

构建对战游戏

您的 FlexMatch 对战构建器将在其池的所有票证上持续运行以下进程:

  1. 对战构建器按票证期限对池进行排序,然后开始从最旧的票证开始构建潜在对战游戏。

  2. 对战构建器将第二个票证添加到潜在对战,并根据自定义对战规则评估结果。如果潜在对战游戏通过评估,票证的玩家将分配到团队。

  3. 对战构建器按顺序添加下一个票证并重复评估过程。当填充所有玩家位置后,对战游戏已就绪。

大型对战游戏的对战游戏(41 对 200 位玩家)使用上述过程的修改版本,以便在合理的时间范围内构建对战游戏。对战构建器不会单独评估每个票证,而是将预排序票证池划分为潜在对战,然后根据您指定的玩家特征平衡每个对战游戏。例如,对战构建器可能会根据类似的低延迟位置对票证进行预排序,然后使用对战后平衡来确保团队按玩家技能平均匹配。

报告对战结果

找到可接受的对战游戏时,将更新所有匹配的票证,并为每个匹配的票证生成成功的对战事件。

  • FlexMatch 作为独立服务:您的游戏收到对战事件成功对战。结果数据包括所有匹配的玩家及其团队分配的列表。如果您的对战请求包含玩家延迟信息,则结果还会为对战提供最佳地理位置建议。

  • FlexMatch 与 GameLift 托管解决方案:匹配结果会自动传递到 GameLift 队列以进行游戏会话放置。对战构建器确定用于游戏会话放置的队列。

为对战游戏启动游戏会话

成功完成建议的对战游戏后,将启动新的游戏会话。在为对战设置游戏会话时,您的游戏服务器必须能够使用对战结果数据,包括玩家 IDs 和团队分配。

  • FlexMatch 作为独立服务:您的自定义对战放置服务从成功的对战事件中获取对战结果数据,并连接到您的现有游戏会话放置系统,以查找对战的可用托管资源。找到托管资源后,对战放置服务将与现有托管系统协作以启动新游戏会话并获取连接信息。

  • FlexMatch 与 GameLift 托管解决方案:游戏会话队列查找对战游戏的最佳可用游戏服务器。根据队列的配置方式,它将尝试使用成本最低的资源放置游戏会话,并且玩家将遇到低延迟(如果提供了玩家延迟数据)。成功放置游戏会话后,GameLift 服务将提示游戏服务器启动新游戏会话,并传递对战结果和其他可选的游戏数据。

将玩家连接到对战游戏

启动游戏会话后,玩家将连接到会话,声明其团队分配,然后开始游戏。

  • FlexMatch 作为独立服务:您的游戏使用现有游戏会话管理系统向玩家提供连接信息。

  • FlexMatch 与 GameLift 托管解决方案:在成功放置游戏会话后,FlexMatch 将使用游戏会话连接信息和玩家会话 ID 更新所有匹配的票证。