

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

# 什么是 Amazon GameLift ServersFlexMatch？
<a name="match-intro"></a>

Amazon GameLift Servers FlexMatch 是一项针对多人游戏的可自定义对战服务。借助 FlexMatch，您可以构建一组自定义规则，定义多人游戏对战的内容，并确定如何评估和选择每场对战的匹配玩家。您还可以根据自己的游戏需求微调对战算法的关键方面。

将 FlexMatch 作为独立的对战服务使用，或将其与 Amazon GameLift Servers 游戏托管解决方案集成使用。例如，您可以将具有 peer-to-peer架构的游戏或使用其他云计算解决方案的游戏FlexMatch作为独立功能来实现。或者，您可以将托管或托管容器Amazon GameLift Servers托管FlexMatch添加到托管 EC2 或托管容器中，或者使用 Amazon GameLift Servers Anywhere 进行本地托管。本指南详细介绍了如何针对特定场景构建 FlexMatch 对战系统。

借助 FlexMatch，您可以根据自己的游戏要求灵活地设置对战优先级。例如，您可以执行以下操作：
+ 在对战速度和质量之间找到平衡。设置对战规则以快速找到足够好的对战，或者让玩家等待更长的时间才能找到最佳的对战，以获得最佳的玩家体验。
+ 根据匹配良好的玩家或匹配良好的团队进行对战。创建所有玩家都具有相似特征（如技能或经验）的对战。或者，您也可以创建每个团队的综合特征符合共同标准的对战。
+ 优先考虑玩家延迟因素如何影响对战。您是想对所有玩家设置延迟硬性限制，还是只要对战中每个人的延迟都差不多，就可以接受更高的延迟？

**准备好开始使用 FlexMatch 了吗？**  
有关启动和运行游戏的 step-by-step指导FlexMatch，请参阅以下主题：  
[路线图：在 Amazon GameLift Servers 托管解决方案中添加对战](match-tasks.md)
[路线图：使用 FlexMatch 创建独立的对战解决方案](match-tasks-safm.md)

## 主要 FlexMatch 功能
<a name="match-intro-features"></a>

以下功能适用于所有 FlexMatch 场景，无论您是将 FlexMatch 用作独立服务还是使用 Amazon GameLift Servers 游戏托管。
+ 可自定义的玩家匹配。设计和建造对战构建器，以适应您为玩家提供的所有游戏模式。构建一组自定义规则以评估玩家属性 (如技能级别或角色) 并为游戏组建最可能的玩家对战。
+ 基于延迟的匹配。提供玩家延迟数据并创建匹配规则，要求对战中的玩家具有相似的响应时间。当您的玩家对战池跨越多个地理区域时，此功能非常有用。
+ **Support 支持最多 200 名玩家的对战规模。**使用为您的游戏定制的对战规则，创建最多 40 名玩家的对战。使用匹配流程创建多达 200 名玩家的对战，该流程使用简化的自定义匹配流程来控制玩家的等待时间。
+ 玩家接受 要求玩家在完成对战并开始游戏会话之前选择加入拟议的对战。使用此功能可以启动您的自定义接受工作流程，并在为对战设置新的游戏会话之前向 FlexMatch 报告玩家的回应。如果不是所有玩家都接受对战，则提议的对战将失败，接受对战的玩家将自动返回对战池。
+ 支持玩家组队。为要组队一起玩游戏的一组玩家生成对战游戏。使用 FlexMatch 查找更多玩家以根据需要填充对战。
+ **可扩展的匹配规则。**经过一定时间后仍未找到成功的匹配项，请逐渐放宽对战要求。规则扩展可以让您决定在何时何地放松最初的对战规则，这样玩家就可以更快地进入可玩的游戏。
+ **匹配回填。**在现有游戏会话中的可用玩家位置，填充现有游戏会话中的可用玩家位置。自定义何时以及如何请求新玩家，并使用相同的自定义匹配规则来寻找更多玩家。

## FlexMatch 与 Amazon GameLift Servers 托管
<a name="match-intro-hosting"></a>

FlexMatch 提供以下附加功能，供您用于要使用 Amazon GameLift Servers 进行托管的游戏。这包括使用自定义游戏服务器或 Amazon GameLift Servers Realtime 的游戏。
+ **游戏会话放置。**成功进行对战后，FlexMatch 会自动向 Amazon GameLift Servers 请求新的游戏会话放置。配对期间生成的数据，包括玩家 IDs 和队伍的分配，将提供给游戏服务器，以便它可以使用这些信息开始比赛的游戏会话。 FlexMatch然后传回游戏会话连接信息，以便游戏客户端可以加入游戏。为了最大限度地减少玩家在对战中遇到的延迟，Amazon GameLift Servers 的游戏会话放置也可以使用区域玩家延迟数据（如果已提供）。
+ **自动匹配回填。**启用此功能后，当新的游戏会话开始且存在玩家空位时，FlexMatch 会自动发送匹配回填请求。您的对战系统以最少数量的玩家开始游戏会话放置过程，然后快速填补剩余的空位。您不能使用自动回填来替换退出匹配游戏会话的玩家。

如果您Amazon GameLift ServersFleetIQ使用亚马逊弹性计算云 (Amazon EC2) 资源托管的游戏，请FlexMatch将其作为独立服务来实现。

## Amazon GameLift Servers FlexMatch 的定价
<a name="match-intro-pricing"></a>

Amazon GameLift Servers 按使用时长对实例收费，按传输的数据量收取带宽费用。如果您在 Amazon GameLift Servers 上托管游戏，则 FlexMatch 使用费将包含在 Amazon GameLift Servers 的费用中。如果您在其他服务器解决方案上托管游戏，FlexMatch 使用量将单独收费。有关 Amazon GameLift Servers 的费用和价格的完整列表，请参阅 [Amazon GameLift Servers 定价](https://aws.amazon.com/gamelift/servers/pricing)。

有关计算通过 Amazon GameLift Servers 托管游戏或进行对战的成本的信息，请参阅[生成 Amazon GameLift Servers 定价估算值](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/gamelift-calculator.html)，其中描述了如何使用 [AWS 定价计算器](https://calculator.aws/#/createCalculator/GameLift)。

# Amazon GameLift Servers FlexMatch 的工作原理
<a name="gamelift-match"></a>

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

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

有关为游戏设置 FlexMatch 的详细指南，请参阅[FlexMatch 入门](match-getting-started.md)。

## 对战组件
<a name="gamelift-match-components"></a>

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

**Amazon GameLift Servers 组件**

这些是 Amazon GameLift Servers 资源，用于控制 FlexMatch 服务如何为您的游戏进行对战。它们是使用Amazon GameLift Servers工具（包括控制台和 AWS CLI）创建和维护的，或者也可以使用的 AWS SDK 以编程方式创建和维护。Amazon GameLift Servers
+ **FlexMatch 对战配置（也称为对战构建器）**– 对战构建器是一组配置值，可为您的游戏自定义对战流程。一款游戏可以有多个对战构建器，根据需要为不同的游戏模式或体验进行配置。当您的游戏向 FlexMatch 发送对战请求时，它会指定要使用哪个对战构建器。
+ **FlexMatch 对战规则集** – 规则集包含评估玩家是否有潜在匹配以及批准或拒绝所需的所有信息。规则集定义了对战的团队结构，声明了用于评估的玩家属性，并提供了描述可接受对战标准的规则。规则可以适用于单个玩家、团队或整个对战。例如，规则可能要求对战中的每位玩家选择相同的游戏地图，或者可能要求所有团队的玩家平均技能相似。
+ **Amazon GameLift Servers 游戏会话队列（仅适用于使用 Amazon GameLift Servers 托管式托管的 FlexMatch）**– 游戏会话队列查找可用的托管资源，并为对战启动新的游戏会话。队列的配置决定了 Amazon GameLift Servers 在哪里寻找可用托管资源，以及如何为匹配选择最佳可用主机。

**自定义组件**

以下组件包含完整的 FlexMatch 系统所需的功能，您必须根据游戏架构实现这些功能。
+ **用于对战的玩家界面** – 此界面允许玩家加入对战。它至少会通过客户端对战服务组件发起对战请求，并根据对战过程的需要提供玩家特定的数据，例如技能等级和延迟数据。
**注意**  
作为最佳实操，与 FlexMatch 服务的通信应由后端服务完成，而不是通过游戏客户端进行。
+ **客户端对战服务** – 该服务从玩家界面发送玩家加入请求，生成对战请求，然后将其发送到 FlexMatch 服务。对于正在处理的请求，它会监控对战事件，跟踪对战状态，并根据需要采取行动。根据您在游戏中管理游戏会话托管的方式，此服务可能会将游戏会话连接信息返回给玩家。此组件使用带有 Amazon GameLift Servers API 的 AWS SDK 与FlexMatch服务进行通信。
+ **对战放置服务（仅适用于作为独立服务的 FlexMatch）**– 此组件可与您现有的游戏托管系统配合使用，以查找可用的托管资源并为对战启动新的游戏会话。该组件必须获取配对结果并提取开始新游戏会话所需的信息，包括玩家 IDs、属性和比赛中所有玩家的队伍分配。

# FlexMatch 对战过程
<a name="gamelift-match-howitworks"></a>

本主题描述了基本对战场景中的事件顺序，包括各种游戏组件与 FlexMatch 服务之间的交互。

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

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

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

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

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

1. 对战构建器按顺序添加下一张票证并重复评估过程。当所有玩家位置都填满后，对战就准备好了。
大型对战（41 至 200 名玩家）使用上述流程的修改版本，因此它可以在合理的时间范围内进行对战。对战构建器不是单独评估每张票证，而是将预先排序的票证池划分为潜在的对战，然后根据您指定的玩家特征来平衡每场对战。例如，对战构建器可能会根据相似的低延迟位置对票证进行预先排序，然后使用赛后平衡来确保各支队伍在玩家技能方面均匀匹配。

**步骤 4：报告对战结果**  
找到可接受的匹配项后，将更新所有匹配的票证，并为每张匹配的票证生成成功的对战事件。  
+ FlexMatch 作为一项独立服务：在成功的对战活动中，您的游戏会收到匹配结果。结果数据包括所有匹配的玩家及其队伍分配的列表。如果您的对战请求包含玩家延迟信息，则结果还会建议对战的最佳地理位置。
+ FlexMatch使用Amazon GameLift Servers托管解决方案：匹配结果会自动传递到Amazon GameLift Servers队列以进行游戏会话放置。对战构建器决定使用哪个队列置放游戏会话。

**步骤 5：开始对战的游戏会话**  
成功组建提议的对战后，将开始新的游戏会话。在为比赛设置游戏会话时，您的游戏服务器必须能够使用配对结果数据，包括球员 IDs 和队伍分配。  
+ FlexMatch 作为一项独立服务：您的自定义对战放置服务会从成功的对战活动中获取匹配结果数据，并连接到您现有的游戏会话放置系统，为对战找到可用的托管资源。找到托管资源后，匹配放置服务会与您现有的托管系统进行协调，以启动新的游戏会话并获取连接信息。
+ FlexMatch使用Amazon GameLift Servers托管解决方案：游戏会话队列会找到最适合比赛的游戏服务器。根据队列的配置方式，它会尝试将游戏会话置于成本最低的资源以及玩家将体验低延迟的地方（如果提供了玩家延迟数据）。成功放置游戏会话后，Amazon GameLift Servers 服务会提示游戏服务器开始新的游戏会话，传递对战结果和其他可选的游戏数据。

**步骤 6：将玩家与对战联系起来**  
游戏会话开始后，玩家连接到会话，领取队伍任务，然后开始玩游戏。  
+ FlexMatch 作为一项独立服务：您的游戏使用现有的游戏会话管理系统向玩家提供连接信息。
+ FlexMatch使用Amazon GameLift Servers托管解决方案：成功放置游戏会话后，使用游戏会话连接信息和玩家会话 ID FlexMatch 更新所有匹配的门票。

# FlexMatch 支持的 AWS 区域
<a name="match-regions"></a>

如果您将 FlexMatch 与 Amazon GameLift Servers 托管解决方案结合使用，则可以在托管游戏的任何位置托管匹配的游戏会话。请参阅 [Amazon GameLift Servers 托管支持的 AWS 区域及地点的完整列表](https://docs.aws.amazon.com/gameliftservers/latest/developerguide/gamelift-regions.html)。