带有无服务器后端的独立游戏会话服务器 - Amazon GameLift Servers
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

带有无服务器后端的独立游戏会话服务器

使用无服务器客户端服务架构,后端可以从高度可扩展的数据库中查看配对票的状态,而不必直接访问 Amazon GameLift Servers API。

下图显示了构建的无服务器后端 Amazon Web Services 服务 ,该后端可以将玩家匹配到正在运行的游戏中 Amazon GameLift Servers 舰队。下表提供了对每个带编号的注解的说明。要尝试此示例,请参阅开启的基于多人会话的游戏托管。 Amazon GitHub

将玩家匹配到正在运行的游戏的无服务器架构示例 Amazon GameLift Servers 舰队。
  1. 游戏客户端从 Amazon Cognito 身份池中请求 Amazon Cognito 用户身份。

  2. 游戏客户端接收临时访问凭证,并通过 Amazon API Gateway API 请求游戏会话。

  3. API Gateway 调用一个函数。 Amazon Lambda

  4. Lambda 函数从 Amazon DynamoDB NoSQL 表中请求玩家数据。该函数在请求上下文数据中提供 Amazon Cognito 身份。

  5. Lambda 函数通过以下方式请求匹配项 Amazon GameLift Servers FlexMatch 牵线搭桥。

  6. FlexMatch 匹配一组具有适当延迟的玩家,然后通过请求游戏会话放置 Amazon GameLift Servers queue. 队列中有包含一个或多个 Amazon Web Services 区域 地点的舰队。

  7. 晚于 Amazon GameLift Servers 将会话放在舰队的其中一个地点,Amazon GameLift Servers 向亚马逊简单通知服务 (Amazon SNS) Simple Notification Service 主题发送事件通知。

  8. Lambda 函数接收并处理 Amazon SNS 事件。

  9. 如果对战票证是一个 MatchmakingSucceeded 事件,那么 Lambda 函数会将结果以及游戏服务器的端口和 IP 地址写入 DynamoDB 表。

  10. 游戏客户端向 API Gateway 发出签名请求,以查看特定时间间隔内的对战票证状态。

  11. API Gateway 使用 Lambda 函数来检查对战票证状态。

  12. Lambda 函数会检查 DynamoDB 表以查看票证是否成功。如果成功,该函数会将游戏服务器的端口和 IP 地址以及玩家会话 ID 发送回客户端。如果票证未成功,则该函数会发送响应,确认匹配尚未准备就绪。

  13. 游戏客户端使用后端服务提供的端口和 IP 地址,使用 TCP 或 UDP 连接到游戏服务器。然后,游戏客户端将玩家会话 ID 发送到游戏服务器,然后游戏服务器使用服务器 SDK 验证该 ID Amazon GameLift Servers.