

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

# 玩家会话和对战自定义
<a name="customize-player-sessions-matchmaking"></a>

借助玩家会话和对战自定义设置，您可以开发复杂的玩家管理工作流，包括精细的对战系统，助力打造公平且引人入胜的多人游戏体验。

# 生成玩家 ID
<a name="player-sessions-player-identifiers"></a>

Amazon GameLift Servers 使用玩家会话来表示已连接到游戏会话的玩家。当玩家通过与 Amazon GameLift Servers 集成的游戏客户端连接到游戏会话时，Amazon GameLift Servers 会创建一个玩家会话。当玩家离开游戏时，玩家会话随之结束。Amazon GameLift Servers 不会重复使用玩家会话。

**重要**  
使用 FlexMatch 对战时，如果您创建的新对战请求包含已存在于现有有效对战请求中的玩家 ID，则现有请求将被自动取消。但是，系统不会为被取消的请求发送 `MatchmakingCancelled` 事件。要监控现有对战请求的状态，请使用 [DescribeMatchmaking](https://docs.aws.amazon.com/gamelift/latest/apireference/API_DescribeMatchmaking.html) 以不频繁的间隔（30-60 秒）轮询请求状态。被取消的请求将显示状态为 `CANCELLED`，原因标记为 `Cancelled due to duplicate player`。

以下示例代码会随机生成唯一的玩家 ID：

```
bool includeBrackets = false;
bool includeDashes = true;
string playerId = AZ::Uuid::CreateRandom().ToString<string>(includeBrackets, includeDashes);
```

有关玩家会话的更多信息，请参阅[Amazon GameLift Servers 控制台中的游戏和玩家会话](gamelift-console-game-player-sessions-metrics.md)。

# 为 Amazon GameLift Servers 添加 FlexMatch 对战
<a name="gamelift-match-intro"></a>

使用 Amazon GameLift Servers FlexMatch 为 Amazon GameLift Servers 托管的游戏添加玩家对战功能。您可以将 FlexMatch 与自定义游戏服务器或 Amazon GameLift Servers Realtime 搭配使用。

FlexMatch 可将对战服务与自定义规则引擎搭配使用。您可以根据玩家属性以及适合您游戏的模式来设计玩家匹配方式。FlexMatch 则管理实际的匹配流程，包括评估正在寻找游戏的玩家、组建单队或多队对战组合，以及启动游戏会话以托管这些对战。

要使用完整 FlexMatch 服务，您必须将托管资源设置为队列。Amazon GameLift Servers 使用队列来为跨多个地区和计算类型的游戏找到尽可能好的托管位置。特别是，Amazon GameLift Servers 队列可以使用游戏客户端提供的延迟数据来放置游戏会话，以便玩家在玩游戏时体验到尽可能低的延迟。

有关 FlexMatch 的更多信息，包括将对战集成到游戏中的详细帮助，请参阅以下 [Amazon GameLift Servers FlexMatch 开发人员指南](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/)主题：
+ [Amazon GameLift Servers FlexMatch 的工作原理](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-intro.html)
+ [FlexMatch 集成步骤](https://docs.aws.amazon.com/gamelift/latest/flexmatchguide/match-tasks.html)