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

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

带有基于 WebSocket 的后端的独立游戏会话服务器

使用基于 Amazon API Gateway WebSocket 的架构,您可以使用 WebSocket 发出对战请求,并使用服务器启动的消息发送对战完成的推送通知。此架构通过在客户端和服务器之间进行双向通信来提高性能。

有关使用 API Gateway WebSock API 的更多信息,请参阅使用 WebSocket API

下图显示了基于 WebSocket 的后端架构,该架构使用 API Gateway 和其他 Amazon Web Services 将玩家匹配到在 Amazon GameLift 实例集上运行的游戏。下表提供了对每个带编号的注解的说明。

WebSocket 架构示例,它将玩家匹配到在 Amazon GameLift 实例集上运行的游戏。
  1. 游戏客户端从 Amazon Cognito 身份池中请求 Amazon Cognito 用户身份。

  2. 游戏客户端使用 Amazon Cognito 凭证签署与 API Gateway API 的 WebSocket 连接。

  3. API Gateway 在连接上调用 Amazon Lambda 函数。该函数将连接信息存储在 Amazon DynamoDB 表中。

  4. 游戏客户端通过 WebSocket 连接经 API Gateway API 向 Lambda 函数发送一条消息,请求会话。

  5. Lambda 函数通过 Amazon GameLift FlexMatch 对战接收消息并请求匹配。

  6. 在 FlexMatch 匹配一组玩家后,FlexMatch 通过 Amazon GameLift 队列请求游戏会话放置。

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

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

  9. 如果对战票证是 MatchmakingSucceeded 事件,那么 Lambda 函数会向 DynamoDB 请求正确的玩家连接。该函数随后通过 WebSocket 连接经 API Gateway API 向游戏客户端发送消息。在这种架构中,游戏客户端不会主动轮询对战状态。

  10. 游戏客户端通过 WebSocket 连接接收游戏服务器的端口和 IP 地址以及玩家会话 ID。

  11. 游戏客户端使用后端服务提供的端口和 IP 地址,使用 TCP 或 UDP 连接到游戏服务器。游戏客户端还将玩家会话 ID 发送到游戏服务器,然后游戏服务器使用 Amazon GameLift 服务器软件开发工具包验证该 ID。