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

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

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

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

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

无服务器架构示例,可将玩家匹配到在 Amazon GameLift 实例集上运行的游戏。
  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 FlexMatch 对战请求匹配。

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

  7. Amazon GameLift 将会话放到其中一个实例集的位置后,Amazon GameLift 向 Amazon Simple Notification Service (Amazon SNS) 主题发送一个事件通知。

  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 发送到游戏服务器,然后游戏服务器使用 Amazon GameLift 服务器软件开发工具包验证该 ID。