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

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

Amazon GameLift FlexMatch 的工作原理

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

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

有关为游戏设置 FlexMatch 的详细指南,请参阅开始使用 FlexMatch

对战组件

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

Amazon GameLift 组件

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

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

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

  • Amazon GameLift 游戏会话队列(仅适用于使用 Amazon GameLift 托管托管的 FlexMatch)– 游戏会话队列查找可用的托管资源并为对战启动新的游戏会话。队列的配置决定了 Amazon GameLift 在哪里寻找可用托管资源以及如何为匹配选择最佳可用主机。

自定义组件

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

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

    注意

    作为最佳实操,与 FlexMatch 服务的通信应由后端服务完成,而不是通过游戏客户端进行。

  • 客户对战服务 – 该服务从玩家界面发送玩家加入请求,生成对战请求,然后将其发送到 FlexMatch 服务。对于正在处理的请求,它会监控对战事件,跟踪对战状态,并根据需要采取行动。根据您在游戏中管理游戏会话托管的方式,此服务可能会将游戏会话连接信息返回给玩家。此组件使用带有 Amazon GameLift API 的 Amazon 软件开发工具包与 FlexMatch 服务进行通信。

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

FlexMatch 对战流程

本主题描述了基本的对战场景以及您的各种游戏组件与 FlexMatch 服务之间的交互。

请求玩家对战

使用您的游戏客户端的玩家点击“加入游戏”按钮。此操作会使您的客户对战服务向 FlexMatch 发送对战请求。该请求标识了在满足请求时要使用的 FlexMatch 对战构建器。该请求还包括您的自定义对战构建器所需的玩家信息,例如技能等级、游戏偏好或地理延迟数据。您可以为一个玩家或多个玩家提出对战请求。

将请求添加到对战池

当 FlexMatch 收到对战请求时,它会生成一张对战票证并将其添加到对战构建器的票证池中。票证会留在池中,直到达到对战构建器的时间限制。您的客户对战服务会定期收到有关对战活动的通知,包括票证状态的变化。

构建对战

您的 FlexMatch 对战构建器会持续对其池中的所有票证运行以下流程:

  1. 对战构建器按票证时长对票证池进行排序,然后从最旧的票证开始建立潜在的匹配项。

  2. 对战构建器为潜在匹配项添加第二张票证,并根据您的自定义对战规则评估结果。如果潜在的对战通过评估,则票证的玩家将被分配到一支队伍中。

  3. 对战构建器按顺序添加下一张票证并重复评估过程。当所有玩家位置都填满后,对战就准备好了。

大型对战(41 至 200 名玩家)使用上述流程的修改版本,因此它可以在合理的时间范围内进行对战。对战构建器不是单独评估每张票证,而是将预先排序的票证池划分为潜在的对战,然后根据您指定的玩家特征来平衡每场对战。例如,对战构建器可能会根据相似的低延迟位置对票证进行预先排序,然后使用赛后平衡来确保各支队伍在玩家技能方面均匀匹配。

报告对战结果

找到可接受的匹配项后,将更新所有匹配的票证,并为每张匹配的票证生成成功的对战事件。

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

  • 使用 Amazon GameLift 托管解决方案进行灵活匹配:匹配结果会自动传递到 Amazon GameLift 队列以进行游戏会话放置。对战构建器决定使用哪个队列置放游戏会话。

开始对战的游戏会话

成功组建提议的对战后,将开始新的游戏会话。在为对战设置游戏会话时,您的游戏服务器必须能够使用对战结果数据,包括玩家 ID 和队伍分配。

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

  • 使用 Amazon GameLift 托管解决方案进行 FlexMatch:游戏会话队列为对战找到可用的最佳游戏服务器。根据队列的配置方式,它会尝试将游戏会话置于成本最低的资源以及玩家将体验低延迟的地方(如果提供了玩家延迟数据)。成功放置游戏会话后,Amazon GameLift 服务会提示游戏服务器开始新的游戏会话,传递对战结果和其他可选的游戏数据。

将玩家与对战联系起来

游戏会话开始后,玩家连接到会话,领取队伍任务,然后开始玩游戏。

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

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