FlexMatch添加到亚马逊托GameLift管的游戏服务器 - 亚马逊 GameLift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

FlexMatch添加到亚马逊托GameLift管的游戏服务器

本主题介绍如何向使用亚马逊托GameLift管主机的自定义游戏服务器添加FlexMatch配对支持。要了解有关如何向游戏添加 FlexMatch 的更多信息,请参阅以下主题:

本主题中的信息假设您已成功将 Amazon S GameLift erver SDK 集成到您的游戏服务器项目中,如将亚马逊GameLift添加到游戏服务器中所述。完成此工作后,您便有了所需的大部分机制。本主题中的各个部分介绍了处理使用 FlexMatch 设置的游戏需要执行的其他工作。

设置游戏服务器进行配对

要设置您的游戏服务器来处理已对战的游戏,请完成以下任务。

  1. 启动使用对战创建的游戏会话。要请求新的游戏会话,亚马逊会向您的游戏服务器GameLift发送带有游戏会话对象的onStartGameSession()请求(参见 GameSession)。您的游戏服务器使用游戏会话信息 (包括自定义的游戏数据) 以启动请求的游戏会话。有关更多详细信息,请参阅启动游戏会话

    对于已匹配的游戏,游戏会话对象还包含一组对战构建器数据。对战构建器数据包含您的游戏服务器启动新的对战游戏会话所需的信息。这包括对战的团队结构、团队分配以及可能与您的游戏相关的某些玩家属性。例如,您的游戏可以根据平均玩家技能级别解锁某些功能,或根据玩家的首选项选择地图。在 处理媒人数据 中了解更多信息。

  2. 处理玩家连接。连接到匹配的游戏时,游戏客户端会引用玩家 ID 和玩家会话 ID(参见验证新玩家)。您的游戏服务器使用玩家 ID 将传入玩家与对战构建器数据中的玩家信息进行关联。对战构建器数据将标识玩家的团队分配,并且可能提供在游戏中正确地代表玩家的其他信息。

  3. 在玩家离开游戏时进行报告。确保您的游戏服务器正在调用服务器 API RemovePlayerSession() 来报告掉线的玩家(请参阅报告玩家会话结束)。如果您使用 FlexMatch 回填填充现有游戏中的空位置,此步骤非常重要。如果您的游戏通过客户端游戏服务发起回填请求,此步骤非常重要。在 用回填现有游戏 FlexMatch 中了解有关实施 FlexMatch 回填的更多信息。

  4. 为现有的已对战游戏会话请求新玩家(可选)。确定您想要如何回填现有的匹配游戏。如果您的对战构建器将回填模式设置为“手动”,您可能需要为您的游戏添加回填支持。如果回填模式设置为“自动”,您可能需要一种为单个游戏会话关闭此模式的方法。例如,您可能想要在到达游戏中的某个点后停止回填游戏会话。在 用回填现有游戏 FlexMatch 中了解有关管理对战回填的更多信息。

处理媒人数据

您的游戏服务器必须能够识别和使用GameSession对象中的游戏信息。每当游戏会话启动或更新时,亚马逊GameLift服务都会将这些对象传递给您的游戏服务器。核心游戏会话信息包括游戏会话 ID 和名称、最大玩家数量、连接信息和自定义游戏数据 (如果提供)。

对于使用 FlexMatch 创建的游戏会话,GameSession 对象还包含一组对战构建器数据。除了唯一的对战 ID,它将标识创建对战的对战构建器并描述团队、团队分配和玩家。它包括原始对战请求中的玩家属性 (请参阅 Player 对象)。它不包括玩家延迟;如果您需要当前玩家的延迟数据 (如对战回填),建议您获取最新数据。

注意

Matchmaker 数据指定了完整的配对配置 ARN,用于标识配置名称、Amazon账户和区域。在从游戏客户端或服务请求对战回填时,仅需要配置名称。您可以通过解析出“:matchmakingconfiguration/”后面的字符串来提取配置名称。在所示的示例中,配对配置名称为 “MyMatchmakerConfig”。

以下 JSON 显示一组典型的对战构建器数据。此示例描述了一个两人游戏,该游戏根据技能评级和获得的最高级别匹配玩家。对战构建器还根据角色进行对战,并且确保对战的玩家至少具有一个共同的地图首选项。在这种情况下,游戏服务器应该能够确定哪个地图最受偏爱,并在游戏会话中使用它。

{ "matchId":"1111aaaa-22bb-33cc-44dd-5555eeee66ff", "matchmakingConfigurationArn":"arn:aws:gamelift:us-west-2:111122223333:matchmakingconfiguration/MyMatchmakerConfig", "teams":[ {"name":"attacker", "players":[ {"playerId":"4444dddd-55ee-66ff-77aa-8888bbbb99cc", "attributes":{ "skills":{ "attributeType":"STRING_DOUBLE_MAP", "valueAttribute":{"Body":10.0,"Mind":12.0,"Heart":15.0,"Soul":33.0}} } }] },{ "name":"defender", "players":[{ "playerId":"3333cccc-44dd-55ee-66ff-7777aaaa88bb", "attributes":{ "skills":{ "attributeType":"STRING_DOUBLE_MAP", "valueAttribute":{"Body":11.0,"Mind":12.0,"Heart":11.0,"Soul":40.0}} } }] }] }